Commit Graph

2 Commits

Author SHA1 Message Date
Jiri Olsa 1cd6472e3f tools build: Make fixdep parsing wait for last target
The fixdep tool, among other things, replaces the target of the object
in the gcc generated dependency output file.

The parsing code assumes there's only single target in the rule but this
is not always the case as described in here:

  https://gcc.gnu.org/ml/gcc-help/2016-11/msg00099.html

Make the fixdep code smart enough to skip all the possible targets.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: Peter Foley <pefoley2@pefoley.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/20161201130025.GA16430@krava
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2016-12-05 15:51:42 -03:00
Jiri Olsa 9f7ef9854e tools build: Add fixdep dependency helper
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: Jiri 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.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-09-28 15:50:55 -03:00