>>>I am still trying to track down where exactly my lag time is coming from, 
>>>and it
>doesn't >appear to be from using the include directive by itself.  My question 
>is how
>makefile
>>>evaluates variables that are defined using ':=' with respect to include 
>>>files.
>>>
>>>If I have a file include_me.mk which contains:
>>>
>>>my_var:=$(shell script)
>>>
>>>and I have included this file several times (indirectly through my file's 
>>>dependent
>>>include files).  Does make re-evaluate this variable assignment each time 
>>>'include
>>>include_me.mk' appears?
>>>
>>>If that's the case, then I think that's where my problem is.
>> 
>> I did some more investigation and found that this is where my performance 
>> problem is.  >It appears that time increases linearly with the number of 
>> times the include file with >':=' variables are included, which means make 
>> is evaluating it each time it is seen like >it should.  Adding inclusion 
>> guards to my include files should fix my performance
>problem.
>
>This makes sense.  The := is evaluated at the time of the assignment (rather 
>than at the >time of usage as with =).  As Paul has said $(system) is an 
>expensive call.

Yep.  I did a 'grep -r ":=" * | grep shell' and I think the only variable I 
have defined with a shell which may take a while is this particular variable.  
$(call first_file,filename,path) is a function to search for the first instance 
of a file in a path, which uses $(shell).  It allows me to guess the extension 
whether I'm on a windows or a unix box.

shell_exec_extension:=$(if $(call first_file,sh.exe,$(PATH)),.exe)

I also like the ifndef idea just for those expensive variables that Paul gave.  
I'll have to play with it.

John


_______________________________________________
Help-make mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to