From: Michael Lukashov Date: Sat, 27 Feb 2010 23:03:35 GMT Subject: Re: [PATCH] Makefile: fix compilation of test programs under MinGW environment Message-ID: <63cde7731002271503oac53237ubed6d318b46042e9@mail.gmail.com> In-Reply-To: <7vmxyupbpa.fsf@alter.siamese.dyndns.org> Hi, On Sun, Feb 28, 2010 at 1:15 AM, Junio C Hamano wrote: > Junio C Hamano writes: > >> Michael Lukashov writes: >> >>> Commit 225f78c8 (Merge branch 'master' of git://repo.or.cz/alt-git >>> into jn/autodep, 2010-01-26) changed Makefile in such a way that >>> the following error occurs when trying to compile Git under MinGW environment: >>> >>>   make: *** No rule to make target `test-chmtime', needed by `all'.  Stop. >>> >>> Under Linux it seems there's no difference between two variants. >> >>> -TEST_PROGRAMS := $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X)) >>> +TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X)) >> >> If the difference were on the RHS of this definition, which does involve >> $X that is different between the two platforms, I would understand, but >> your patch looks like it is addressing difference between := vs =, and >> that is more like a difference of other parts of the Makefile than >> difference between Linux and mingw compilation environment. > > Ok, I think I know what happend. > > We used to have the definition of TEST_PROGRAMS way later than where we > currently have it, and it was for a reason.  X is to be defined to be .exe > in the platform specific section for MinGW (and probably Cygwin as well). > > But because the definition of TEST_PROGRAMS was moved way up, it needs to > be recursively expanded. > > TEST_OBJS also uses $X in simple expansion (i.e. sets with := not with =), > so I expect that it has the same issue.  Can you check and verify? > > It seems there's no difference between TEST_OBJS := $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS)) and TEST_OBJS = $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS)) Both variants seem to work under mingw.