• Brian Norris's avatar
    tools build: Avoid circular .fixdep-in.o.cmd issues · ea974028
    Brian Norris authored
    The 'fixdep' tool is used to post-process dependency files for various
    reasons, and it runs after every object file generation command. This
    even includes 'fixdep' itself.
    
    In Kbuild, this isn't actually a problem, because it uses a single
    command to generate fixdep (a compile-and-link command on fixdep.c), and
    afterward runs the fixdep command on the accompanying .fixdep.cmd file.
    
    In tools/ builds (which notably is maintained separately from Kbuild),
    fixdep is generated in several phases:
    
     1. fixdep.c -> fixdep-in.o
     2. fixdep-in.o -> fixdep
    
    Thus, fixdep is not available in the post-processing for step 1, and
    instead, we generate .cmd files that look like:
    
      ## from tools/objtool/libsubcmd/.fixdep.o.cmd
      # cannot find fixdep (/path/to/linux/tools/objtool/libsubcmd//fixdep)
      [...]
    
    These invalid .cmd files are benign in some respects, but cause problems
    in others (such as the linked reports).
    
    Because the tools/ build system is rather complicated in its own right
    (and pointedly different than Kbuild), I choose to simply open-code the
    rule for building fixdep, and avoid the recursive-make indirection that
    produces the problem in the first place.
    Signed-off-by: default avatarBrian Norris <briannorris@chromium.org>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Josh Poimboeuf <jpoimboe@kernel.org>
    Cc: Masahiro Yamada <masahiroy@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Link: https://lore.kernel.org/all/Zk-C5Eg84yt6_nml@google.com/
    Link: https://lore.kernel.org/r/20240715203325.3832977-3-briannorris@chromium.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ea974028
Makefile 1.18 KB