Re: [PATCH resend] Makefile: Use computed header dependencies if the compiler supports it
From: Fredrik Kuivinen <hidden>
Date: 2016-06-15 22:51:50
Subsystem:
kernel build + files below scripts/ (unless maintained elsewhere), the rest · Maintainers:
Nathan Chancellor, Nicolas Schier, Linus Torvalds
On Sun, Aug 14, 2011 at 03:02:55PM -0500, Jonathan Nieder wrote:
Fredrik Kuivinen wrote:quoted
On Sun, Aug 14, 2011 at 21:00, Jonathan Nieder [off-list ref] wrote:quoted
quoted
I wonder if we can make do with a faster check, like $(CC) -c -MF /dev/null -MMD -MP git.c --help >/dev/null 2>&1 What do you think?[...]quoted
Without patch (with COMPUTE_HEADER_DEPENDENCIES=Yes):The case to compare against is when COMPUTE_HEADER_DEPENDENCIES is not set, I'd think, since that is the status quo. And I was talking about commands like "make clean" that do not care about that feature, not "make all".
There is no measurable difference between setting and unsetting COMPUTE_HEADER_DEPENDENCIES for me (not surprising as nothing is actually built). "make clean" (in a clean tree) takes more time than "make" (in a fully built tree), so the relative overhead in the make clean case is even smaller. The absolute overhead is, of course, the same.
[...]quoted
With patch, but changed to use git.c instead of ++empty.c:Did you try with "--help"?
Oh, I missed "--help". But for me gcc always exits with status code 0 when I give it "--help", regardless of what other flags I provide. Therefore, I don't see how "--help" can be used to test for support of -MMD. Here is an updated patch. It avoids the ++empty.c file by giving "-x c" to the compiler. It also avoids the auto-detection when COMPUTE_HEADER_DEPENDENCIES is set, so if you want to avoid the overhead you can set that in you config.mak. -- 8< -- Subject: [PATCH] Makefile: Use computed header dependencies if the compiler supports it Previously you had to manually define COMPUTE_HEADER_DEPENDENCIES to enable this feature. It seemed a bit sad that such a useful feature had to be enabled manually. To avoid the small overhead we don't do the auto-detection if COMPUTE_HEADER_DEPENDENCIES is already set. Signed-off-by: Fredrik Kuivinen <redacted> --- Makefile | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index 89cc624..c131439 100644
--- a/Makefile
+++ b/Makefile@@ -250,10 +250,6 @@ all:: # DEFAULT_EDITOR='$GIT_FALLBACK_EDITOR', # DEFAULT_EDITOR='"C:\Program Files\Vim\gvim.exe" --nofork' # -# Define COMPUTE_HEADER_DEPENDENCIES if your compiler supports the -MMD option -# and you want to avoid rebuilding objects when an unrelated header file -# changes. -# # Define CHECK_HEADER_DEPENDENCIES to check for problems in the hard-coded # dependency rules. #
@@ -1236,6 +1232,15 @@ endif ifdef CHECK_HEADER_DEPENDENCIES COMPUTE_HEADER_DEPENDENCIES = USE_COMPUTED_HEADER_DEPENDENCIES = +else +ifndef COMPUTE_HEADER_DEPENDENCIES +dep_check = $(shell sh -c \ + '$(CC) -c -MF /dev/null -MMD -MP -x c /dev/null -o /dev/null 2>&1; \ + echo $$?') +ifeq ($(dep_check),0) +COMPUTE_HEADER_DEPENDENCIES=YesPlease +endif +endif endif ifdef COMPUTE_HEADER_DEPENDENCIES
--
1.7.5.3.368.g8b1b7.dirty