In this section, apart from talking about common features available on any build tool, I think it makes sense to highlight all those things that differentiate pyke from the rest of build tools.
Pyke is multi-platform
You can run builds in linux, MS Windows, Mac OS X, Linux, Android,... on any architecture where python runs (which nowadays is almost any platform).
Pyke supports cross-builds
You can compile things like Android applications from Linux, MS Windows or Mac OS X.
Single master build file
Pyke can have full visibility of the entire project to parallelize things. From that master file you can include other files, but pyke will always look for the master as the entry point, even if you are building a subcomponent. This feature simplifies many things while it provides better parallelization and faster builds than other build tools. At the same time each subcomponent or subproject can be kept in a separate pyke file for better maintainability.
Multi-project
This one is related to the one above, it means you can have independent builds for different projects, while still having some master files that glue several projects together, while still maintaining full visibility and parallelization.
Convenient expressive language
Pyke uses python language underneath which is really convenient to define new rules without relying on external scripts or binary tools only available on some operating systems.
Straightforward syntax
Even if you don’t know python, it is really easy to get started since pyke comes with a set of predefined rules that you can just use or override with your own rules. It is easy to define new build rules for shared components and even platform-dependent components.
Easy to extend
To say it another way, you can create rules that run external tools, rules that run external scripts, or rules that run python functions.
Everything is explicit
This means that you can have total control on the build process.
Automatic folder creation
You don’t have to worry about creating folders before running some jobs.
Automatic clean
This is even better than automatic folder creation, it basically means that you don’t need to write extra rules to cleanup folders and files, pyke does this for you. Pyke automatically deletes all output files and folders created on the build when you run a pyke –clean (and still, you can add more things to be deleted if you want).
Please note that automatic folder creation and automatic clean are features that can be disabled or customized at will, again, everything should be explicit and as convenient as possible.
These are the build times using different tools to compile a big project with lots of files and lots of dependencies under several operating systems and different architectures.
[TODO: add some benchmarks for building C/C++ projects] To perform the tests with a cold disk cache in linux, we run the following command before each test:
sync; echo 3 >/proc/sys/vm/drop_caches