tools build: Make the fixdep helper part of the build process

Making the fixdep helper to be invoked within dep-cmd.

Each user of the build framework needs to make sure fixdep exists before
executing the build itself.

If the build doesn't find fixdep, it falls back to the old style
dependency tracking.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1443004442-32660-6-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Jiri Olsa 2015-09-23 12:34:00 +02:00 committed by Arnaldo Carvalho de Melo
parent 275e2d9559
commit 9fb81323eb
2 changed files with 15 additions and 2 deletions

View File

@ -58,8 +58,14 @@ any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)
# Copy dependency data into .cmd file # Copy dependency data into .cmd file
# - gcc -M dependency info # - gcc -M dependency info
# - command line to create object 'cmd_object :=' # - command line to create object 'cmd_object :='
dep-cmd = cat $(depfile) > $(dot-target).cmd; \ dep-cmd = $(if $(wildcard $(fixdep)), \
printf '%s\n' 'cmd_$@ := $(make-cmd)' >> $(dot-target).cmd $(fixdep) $(depfile) $@ '$(make-cmd)' > $(dot-target).tmp; \
rm -f $(depfile); \
mv -f $(dot-target).tmp $(dot-target).cmd, \
printf '\# cannot find fixdep (%s)\n' $(fixdep) > $(dot-target).cmd; \
printf '\# using basic dep data\n\n' >> $(dot-target).cmd; \
cat $(depfile) >> $(dot-target).cmd; \
printf '%s\n' 'cmd_$@ := $(make-cmd)' >> $(dot-target).cmd)
### ###
# if_changed_dep - execute command if any prerequisite is newer than # if_changed_dep - execute command if any prerequisite is newer than

View File

@ -21,6 +21,13 @@ endif
build-dir := $(srctree)/tools/build build-dir := $(srctree)/tools/build
# Define $(fixdep) for dep-cmd function
ifeq ($(OUTPUT),)
fixdep := $(build-dir)/fixdep
else
fixdep := $(OUTPUT)/fixdep
endif
# Generic definitions # Generic definitions
include $(build-dir)/Build.include include $(build-dir)/Build.include