git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] Makefile: fix definition of $(TEST_PROGRAMS) on Windows

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Feb 28, 2010, 09:03 UTC
Message-ID
<20100228090311.GA30143@progeny.tock>
In-Reply-To
<63cde7731002271503oac53237ubed6d318b46042e9@mail.gmail.com>
From: Michael Lukashov <michael.lukashov@gmail.com>

Commit ea92519 (build dashless "bin-wrappers" directory similar to installed bindir, 2009-12-02) replaced the definition of TEST_PROGRAMS with a macro:

 TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))

and commit daa99a9 (Makefile: make sure test helpers are rebuilt when headers change, 2010-01-26) moved the (unchanged, non-macro) definition of TEST_PROGRAMS earlier so it could be used in two different sections of the Makefile.

The merge 225f78 resolving these two changes unfortunately snuck in an optimization while at it: it replaced the delayed-evaluation = operator with an immediate := assignment:

 TEST_PROGRAMS := $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))

Such a change would have been safe when TEST_PROGRAMS was defined towards the bottom of the makefile, but in its new location before the platform-specific definitions, $(X) is not yet defined. Thus the following error occurs when trying to compile Git in Windows:

  make: *** No rule to make target `test-chmtime', needed by `all'.  Stop.
or if X is set to a nonempty value in config.mak.

So change the operator back to =. This makes TEST_PROGRAMS more similar to PROGRAMS and the other macros defined with delayed evaluation in that section.

Thanks to Junio for the analysis.
Signed-off-by: Michael Lukashov <michael.lukashov@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Thanks for the catch!  Here’s a longer explanation.
 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index 93e1a92..b64eec1 100644
--- a/Makefile
+++ b/Makefile
@@ -418,7 +418,7 @@ TEST_PROGRAMS_NEED_X += test-sha1
 TEST_PROGRAMS_NEED_X += test-sigchain
 TEST_PROGRAMS_NEED_X += test-index-version
 
-TEST_PROGRAMS := $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))
+TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))
 
 # List built-in command $C whose implementation cmd_$C() is not in
 # builtin-$C.o but is linked in as part of some other command.
-- 
1.7.0
Previous: Michael LukashovNext: Jonathan Nieder
Message 6 of 8 in “Makefile: fix compilation of test programs under MinGW environment”
  1. Makefile: fix compilation of test programs under MinGW environmentMichael Lukashov, Feb 27, 2010
  2. Junio C HamanoFeb 27, 2010
  3. Michael LukashovFeb 27, 2010
  4. Junio C HamanoFeb 27, 2010
  5. Michael LukashovFeb 27, 2010
  6. 1/2 Makefile: fix definition of $(TEST_PROGRAMS) on WindowsJonathan Nieder, Feb 28, 2010
  7. 2/2 Makefile: clarify definition of TEST_OBJSJonathan Nieder, Feb 28, 2010
  8. Junio C HamanoFeb 28, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.