• Jiri Olsa's avatar
    tools build: Add fixdep dependency helper · 9f7ef985
    Jiri Olsa authored
    For dependency tracking we currently use targets that fall out of the
    gcc -MD command. We store this info in the .cmd file and include as
    makefile during the build.
    
    This format put object as target and all the c and header files as
    dependencies, like:
    
      util/abspath.o: util/abspath.c /usr/include/stdc-predef.h util/cache.h \
       /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
       ...
    
    If any of those dependency header files (krava.h below) is removed the
    build fails on:
    
      make[1]: *** No rule to make target 'krava.h', needed by 'inc.o'.  Stop.
    
    This patch adds fixdep helper, that is used by kbuild to alter the shape
    of the object dependencies like:
    
      source_util/abspath.o := util/abspath.c
    
      deps_util/abspath.o := \
        /usr/include/stdc-predef.h \
        util/cache.h \
        ...
    
      util/abspath.o: $(deps_util/abspath.o)
    
      $(deps_util/abspath.o):
    
    With this format the header removal won't make the build fail, because
    it'll be picked up by the last empty target defined for each header.
    
    As previously mentioned the fixdep tool is taken from kbuild. It's not
    complete backport, only the part that alters the standard dependency
    info was taken, the part that adds the CONFIG_* dependency logic will be
    probably taken later on.
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Kai Germaschewski <kai.germaschewski@gmx.de>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1443004442-32660-4-git-send-email-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    9f7ef985
fixdep.c 3.63 KB