diff --git a/README.md b/README.md new file mode 100644 index 0000000..90169f6 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +### nenolod's buildsys fork + +This is a custom version of [buildsys] (http://github.com/Midar/buildsys), designed for +massively parallel builds. The differences between official buildsys and this buildsys +are: + +* A large amount of shell has been replaced with gmake builtin rule generation features. + +* You can use V=1 to get CFLAGS and LDFLAGS passed to commands. + +* Multiple `SUBDIRS` may be compiled in parallel. This ensures that there are no stalls + in the build process on multi-core boxes. If there is anything to build, we will be + building it. + +* Dependency generation is on a per-sourceunit basis and done entirely in parallel, including + across multiple `SUBDIRS`. This speeds up builds by allowing dependency generation to + already be completed when you get deeper in the source tree. + +* The messages produced by the buildsystem have been changed so that V=1 output doesn't + look strange. + +Other than that, it is mostly compatible with official buildsys at an "API level." + +### Possible problems / FAQ + +#### I am getting notices about missing libraries that should be built already! + +The way we parallelize SUBDIRS is by converting each SUBDIR into a make task. If a specific +SUBDIR depends on another SUBDIR, you should denote it like so: + +```Make +SUBDIRS = subdir1 subdir2 subdir3 subdir4 + +# subdir2 depends on subdir1 +subdir2: subdir1 + +# subdir3 depends on both subdir1 and subdir4 +subdir3: subdir2 subdir4 +``` + +This results in subdir1 and subdir4 being built first, then subdir2 and subdir3 +respectively. + +#### It won't build my SUBDIRS. + +Put your SUBDIRS before your include lines. You really are supposed to do this in +buildsys *anyway*, but for some reason it sometimes lets you put it after the fact. + +My fork does not let you do that as SUBDIRS are turned into make tasks.