[PATCH 0/7] tools build: Fix header removal build issue

From: Jiri Olsa
Date: Wed Sep 23 2015 - 06:34:15 EST


hi,
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.


thanks,
jirka


Cc: Kai Germaschewski <kai.germaschewski@xxxxxx>
---
Jiri Olsa (7):
tools build: Add Makefile.include
tools build: Add test for missing include
tools build: Add fixdep dependency helper
tools build: Move dependency copy into function
tools build: Make fixdep helper part of the build process
perf tools: Rename single_dep target to prepare
tools build: Build fixdep helper from perf and basic libs

tools/build/Build | 1 +
tools/build/Build.include | 17 +++++++++---
tools/build/Documentation/Build.txt | 52 +++++++++++++++++++++++++++---------
tools/build/Makefile | 43 ++++++++++++++++++++++++++++++
tools/build/Makefile.build | 7 +++++
tools/build/Makefile.include | 6 +++++
tools/build/fixdep.c | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/build/tests/ex/Build | 1 +
tools/build/tests/ex/Makefile | 13 +++++----
tools/build/tests/ex/ex.c | 2 ++
tools/build/tests/ex/inc.c | 8 ++++++
tools/build/tests/run.sh | 27 +++++++++++++++++++
tools/lib/api/Makefile | 6 +++--
tools/lib/bpf/Makefile | 6 +++--
tools/lib/lockdep/Makefile | 6 +++--
tools/perf/Makefile.perf | 32 +++++++++++-----------
16 files changed, 352 insertions(+), 43 deletions(-)
create mode 100644 tools/build/Build
create mode 100644 tools/build/Makefile
create mode 100644 tools/build/Makefile.include
create mode 100644 tools/build/fixdep.c
create mode 100644 tools/build/tests/ex/inc.c
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/