Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
1 result

smdev

  • Clone with SSH
  • Clone with HTTPS
  • Evan Gates's avatar
    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.
    02a255c1
    History
    Name Last commit Last update
    ..