Select Git revision
smdev
-
-
- Open in your IDE
- Download source code
- Download this directory
Evan Gates
authored
Specify dependencies correctly to allow parallel builds with -j. Previously the makefiles relied upon sequential execution in order to ensure prerequisites were built first. The new dependencies are done on a per package level and a per directory level. For example parts of the parted package depend on parts of the e2fsprogs package. Instead of listing the exact dependencies and recipes in the parted makefile, list e2fsprog as a prerequisite for parted in the bin/stali.mk. While this isn't as exact, and means that you can't build parted directly from its directory, it sucks much less to implement and puts dependencies in a more central location and makes them easier to read and add to. Using guard files to protect against redundant recipe execution. In some instances more than one target is built by a single execution of a recipe. For example, the awk package uses yacc to create both ytab.h and ytab.c from awkgram.y. However when doing a parallel build the recipe would be executed twice in parallel, once to create ytab.h and once to create ytab.c. In order to avoid this an intermediate rule is used. The rule could be PHONY, but then it would run every time instead of only when the grammar is updated. Instead the intermediate rule, called _ytab, touches a file called _ytab so we have a modification time to compare against. I used the convention of guard files begining with an underscore.
Name | Last commit | Last update |
---|---|---|
.. |