• Dirk Gouders's avatar
    kbuild: if_changed: document single use per target limitation · bb81955f
    Dirk Gouders authored
    Users of if_changed could easily feel invited to use it to divide a
    recipe into parts like:
    
    a: prereq FORCE
    	$(call if_changed,do_a)
    	$(call if_changed,do_b)
    
    But this is problematic, because if_changed should not be used more
    than once per target: in the above example, if_changed stores the
    command-line of the given command in .a.cmd and when a is up-to-date
    with respect to prereq, the file .a.cmd contains the command-line for
    the last command executed, i.e. do_b.
    
    When the recipe is then executed again, without any change of
    prerequisites, the command-line check for do_a will fail, do_a will be
    executed and stored in .a.cmd.  The next check, however, will still see
    the old content (the file isn't re-read) and if_changed will skip
    do_b, because the command-line test will not recognize a change.  On
    the next execution of the recipe the roles will flip: do_a is OK but
    do_b not and it will be executed.  And so on...
    Signed-off-by: default avatarDirk Gouders <dirk@gouders.net>
    Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
    bb81955f
makefiles.txt 47 KB