On 22/02/2019 15:18, Jeff King wrote: > On Fri, Feb 22, 2019 at 03:41:23PM +0100, Ævar Arnfjörð Bjarmason wrote: > >> Move the assignment of the "STRIP" variable down to where we're >> setting variables with the names of other programs. >> >> For consistency with those use "=" for the assignment instead of >> "?=". I can't imagine why this would need to be different than the >> rest, and 4dc00021f7 ("Makefile: add 'strip' target", 2006-01-12) >> which added it doesn't provide an explanation. > > This might annoy somebody expecting $STRIP in the environment to have > precedence. But I agree that consistency is probably our best strategy > here, and I don't see any reason the same argument would not apply to > $SPATCH, or $CC for that matter. > > (So I could see an argument for moving them all to "?=", but that can > create its own confusion as environment variables accidentally start > taking effect). $STRIP and $SPATCH will work OK, but you would be disappointed with $CC (or any other variable from make's built-in database). ;-) Try this: $ cat -n Makefile 1 2 CC ?= gcc 3 4 all: 5 @echo "CC is $(CC), origin " $(origin CC) 6 $ The command-line works OK: $ make CC=cmd-line CC is cmd-line, origin command line $ So does the environment: $ CC=env make CC is env, origin environment $ But that conditional assignment: $ make CC is cc, origin default $ ... not so much! :-D ATB, Ramsay Jones