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

Reply via email to