On a Solaris 10 system with Solaris XPG4 make installed as /usr/xpg4/bin/make, GNU make installed as /usr/local/bin/make, and with /usr/local/bin appearing in $PATH *before* /usr/xpg4/bin, I was seeing errors like this upon invoking "make all": SUBDIR perl make: Warning: Ignoring DistributedMake -o option Usage : make [ -f makefile ][ -K statefile ]... make: Fatal error: Unknown option `-C' This happens because the Git's Makefiles, when running on Solaris, sanitize $PATH by prepending /usr/xpg6/bin and /usr/xpg4/bin to it, but in the setup described above such a behaviour has the unintended consequence of forcing the use of Solaris make in recursive make invocations, even if the $(MAKE) macro is being correctly used in them; this happens because, in that setup, the original GNU make process was invoked simply as "make". To avoid such an issue, we instruct our Makefile to redefine $(MAKE) to point to the absolute path of the originally-invoked make program. Helped-by: Thomas Rast <trast@xxxxxxxxxxxxxxx> Signed-off-by: Stefano Lattarini <stefano.lattarini@xxxxxxxxx> --- Makefile | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/Makefile b/Makefile index e4f8e0e..e71d688 100644 --- a/Makefile +++ b/Makefile @@ -303,6 +303,21 @@ ifdef MSVC uname_O := Windows endif +# This Makefile will possibly sanitize PATH by prepending system-specific +# directories to it (e.g., /usr/xpg4/bin on Solaris). This can become +# problematic for recursive make invocations, if one of those directories +# contains a "make" program and the user has called GNU make by simply +# invoking "make" (this can happen e.g. when GNU make has been installed +# as /usr/local/bin/make). To avoid such issues, we redefine $(MAKE) to +# point to the absolute path of the originally-invoked make program. +original_MAKE := $(MAKE) +MAKE := $(shell command -v $(firstword $(original_MAKE)) 2>/dev/null) +ifeq ($(MAKE),) + MAKE := $(original_MAKE) +else + MAKE += $(wordlist 2,$(words $(original_MAKE)),$(original_MAKE)) +endif + # CFLAGS and LDFLAGS are for the users to override from the command line. CFLAGS = -g -O2 -Wall -- 1.7.9 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html