• M
    kbuild: fix and refactor single target build · cc306abd
    Masahiro Yamada 提交于
    The single target build has a subtle bug for the combination for
    an individual file and a subdirectory.
    
    [1] 'make kernel/fork.i' builds only kernel/fork.i
    
      $ make kernel/fork.i
        CALL    scripts/checksyscalls.sh
        DESCEND objtool
        CPP     kernel/fork.i
    
    [2] 'make kernel/' builds only under the kernel/ directory.
    
      $ make kernel/
        CALL    scripts/checksyscalls.sh
        DESCEND objtool
        CC      kernel/fork.o
        CC      kernel/exec_domain.o
           [snip]
        CC      kernel/rseq.o
        AR      kernel/built-in.a
    
    But, if you try to do [1] and [2] in a single command, you will get
    only [1] with a weird log:
    
      $ make kernel/fork.i kernel/
        CALL    scripts/checksyscalls.sh
        DESCEND objtool
        CPP     kernel/fork.i
      make[2]: Nothing to be done for 'kernel/'.
    
    With 'make kernel/fork.i kernel/', you should get both [1] and [2].
    
    Rewrite the single target build.
    Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
    cc306abd
Makefile.build 15.6 KB