help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: does make -p dump variables in the right order?


From: Paul Smith
Subject: Re: does make -p dump variables in the right order?
Date: Wed, 3 Mar 2010 13:35:33 -0500

On Wed, 2010-03-03 at 13:03 -0500, Adam Kellas wrote:
> On Wed, Mar 3, 2010 at 12:27 PM, Paul Smith <address@hidden> wrote:
>         In fact the output explicitly does NOT show in any particular
>         order.
> 
> Thanks. When you say "explicit", do you mean literally that it's
> documented somewhere?

No, I don't think it's documented in the manual.

>         Variables are stored internally to make in a hash table, and
>         the -p flag
>         dumps the contents by walking the hash table.  So, the values
>         are
>         printed in essentially random order.
>         
> 
> This is somewhat surprising to me - after all, given the makefile
> 
> CFLAGS = -g
> CFLAGS = -O
> all:;   @echo CFLAGS=$(CFLAGS)
> 
> the order is crucial to getting the right result. So make must keep
> track of order somehow, no? And if it has that data, why not use it in
> -p mode?

There is no need for make to store the order: these changes are
internalized as the makefile is read in.  In your example above there
are not two different variables CFLAGS^1 and CFLAGS^2, with different
values.  There is only one variable, CFLAGS.  When make reads in the
first line, it sets the variable to the value "-g".  When make reads in
the second line, the first value is thrown away and replaced with the
new value and the variable now has the value "-O".

When make -p runs (after all the makefiles have been read in) it just
prints the current value of each variable; so in this case you'd see
"CFLAGS = -O" in the output.  There is no indication that this variable
ever had any other value.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]