From: Junio C Hamano <hidden> Date: 2016-06-15 22:52:30
Jonathan Nieder [off-list ref] writes:
Duy noticed that now that the COMPUTE_HEADER_DEPENDENCIES feature is
turned on automatically for compilers that support it (see
v1.7.8-rc0~142^2~1, 2011-08-18), there is no easy way to force it off.
For example, setting COMPUTE_HEADER_DEPENDENCIES to the empty string
in config.mak just tells the makefile to treat it as undefined and
run a test command to see if the -MMD option is supported.
Introduce a new NO_COMPUTE_HEADER_DEPENDENCIES variable that forces
the feature off.
Eek. At least at the end user UI level, couldn't we do this as a tristate?
E.g. "YesPlease" (or anything that begins with Y if you are ambitious) to
explicitly enable, empty (or "auto") to autodetect, and anything else to
decline?
Even better, couldn't we either (1) rearrange .dep/ files somehow, so that
compiler difference does not matter, or (2) have dep_check to perform a
trial run to detect versions of compilers that produce the output that we
cannot use?
From: Jonathan Nieder <hidden> Date: 2016-06-15 22:52:30
Junio C Hamano wrote:
Eek. At least at the end user UI level, couldn't we do this as a tristate?
E.g. "YesPlease" (or anything that begins with Y if you are ambitious) to
explicitly enable, empty (or "auto") to autodetect, and anything else to
decline?
Ah, I didn't mind the UI so much. Handling
COMPUTE_HEADER_DEPENDENCIES_FORCE = (yes | no | auto)
should be doable. I'd suggest making any other value error out, so
typos don't result in mysterious behavior.
Even better, couldn't we either (1) rearrange .dep/ files somehow, so that
compiler difference does not matter
Yes, I'm working on an incantation all the compilers like (it
shouldn't be hard --- adding an -MQ option should be enough, but I
want to understand the bug first). But even with such a fix, I think
it will be important to have a way to turn the feature off. When
someone using a compiler without -MMD support reports a bug, wouldn't
it be nice to be able to reproduce it?
From: Jonathan Nieder <hidden> Date: 2016-06-15 22:52:30
Now that the COMPUTE_HEADER_DEPENDENCIES feature is turned on
automatically for compilers that support it (see v1.7.8-rc0~142^2~1,
2011-08-18), there is no easy way to force it off. For example,
setting COMPUTE_HEADER_DEPENDENCIES to the empty string in config.mak
just tells the makefile to treat it as undefined and run a test
command to see if the -MMD option is supported.
So allow setting COMPUTE_HEADER_DEPENDENCIES=no to explicitly force
the feature off. The new semantics:
- "yes" means to explicitly enable the feature
- "no" means to disable it
- "auto" means to autodetect
The default is still "auto". Any value other than these three will
cause the build to error out with a descriptive message so typos and
stale settings in config.mak don't result in mysterious behavior.
Makefile:1278: *** please set COMPUTE_HEADER_DEPENDENCIES to
yes, no, or auto (not "1"). Stop.
So now when someone using a compiler without -MMD support reports
trouble building git, you can reproduce it by running "make
COMPUTE_HEADER_DEPENDENCIES=no".
Suggested-by: Nguyễn Thái Ngọc Duy <redacted>
Improved-by: Junio C Hamano [off-list ref]
Signed-off-by: Jonathan Nieder <redacted>
---
Junio C Hamano wrote:
Eek. At least at the end user UI level, couldn't we do this as a tristate?
Nice idea. Here it is.
Makefile | 31 ++++++++++++++++++++++++-------
1 files changed, 24 insertions(+), 7 deletions(-)
@@ -250,6 +250,12 @@ all::# DEFAULT_EDITOR='$GIT_FALLBACK_EDITOR',# DEFAULT_EDITOR='"C:\Program Files\Vim\gvim.exe" --nofork'#+# Define COMPUTE_HEADER_DEPENDENCIES to "yes" if you want dependencies on+# header files to be automatically computed, to avoid rebuilding objects when+# an unrelated header file changes. Define it to "no" to use the hard-coded+# dependency rules. The default is "auto", which means to use computed header+# dependencies if your compiler is detected to support it.+## Define CHECK_HEADER_DEPENDENCIES to check for problems in the hard-coded# dependency rules.#
From: Jonathan Nieder <hidden> Date: 2016-06-15 22:52:30
When the streaming filter API was introduced in v1.7.7-rc0~60^2~7
(2011-05-20), we forgot to add its header to LIB_H. Most translation
units depend on streaming.h via cache.h.
v1.7.5-rc0~48 (Fix sparse warnings, 2011-03-22) introduced undeclared
dependencies by url.o on url.h and thread-utils.o on thread-utils.h.
Noticed by make CHECK_HEADER_DEPENDENCIES=1.
Signed-off-by: Jonathan Nieder <redacted>
---
Some makefile buglets found while testing.
Makefile | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
On Fri, Nov 18, 2011 at 4:58 PM, Jonathan Nieder [off-list ref] wrote:
Now that the COMPUTE_HEADER_DEPENDENCIES feature is turned on
automatically for compilers that support it (see v1.7.8-rc0~142^2~1,
2011-08-18), there is no easy way to force it off. For example,
setting COMPUTE_HEADER_DEPENDENCIES to the empty string in config.mak
just tells the makefile to treat it as undefined and run a test
command to see if the -MMD option is supported.
So allow setting COMPUTE_HEADER_DEPENDENCIES=no to explicitly force
the feature off. The new semantics:
- "yes" means to explicitly enable the feature
- "no" means to disable it
- "auto" means to autodetect
The default is still "auto". Any value other than these three will
cause the build to error out with a descriptive message so typos and
stale settings in config.mak don't result in mysterious behavior.
Makefile:1278: *** please set COMPUTE_HEADER_DEPENDENCIES to
yes, no, or auto (not "1"). Stop.
So now when someone using a compiler without -MMD support reports
trouble building git, you can reproduce it by running "make
COMPUTE_HEADER_DEPENDENCIES=no".
Suggested-by: Nguyễn Thái Ngọc Duy <redacted>
Improved-by: Junio C Hamano [off-list ref]
Signed-off-by: Jonathan Nieder <redacted>