[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
undefine
From: |
Boris Kolpackov |
Subject: |
undefine |
Date: |
Mon, 5 Oct 2009 17:16:41 +0200 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
Hi Paul, All,
I was investigating why GNU make takes very long to run with my build
system and one thing I noticed is that I have a large number of global
variables and make spends considerable amount of time in hash functions
related the to global variable management. Most of these variables are
temporary in that they are used to store information while a makefile
is parsed and are not needed after that. Currently I would just assign
an empty value to such variables since there is no way to actually
undefine them. But such a variable is still sitting in the hash table,
just with an empty value. What would be ideal for my situation is a
way to completely undefine a variable.
So I would like to implement a complimentary directive for 'define',
called 'undefine', which will allow to completely undefine a variable:
foo := foo
define bar
bar
endef
undefine foo
undefine bar
$(info $(origin foo))
$(info $(origin bar))
This would print:
undefined
undefined
I made a prototype of this feature and it gave me a 20% speedup.
The only mildly interesting area in the implementation of undefine
is undefining of a command line variable. I think for this we should
just use the same approach as with define, i.e., it can only be done
with override:
override undefine CFLAGS
Any thoughts?
Boris
--
Boris Kolpackov, Code Synthesis Tools http://codesynthesis.com/~boris/blog
Open-source XML data binding for C++: http://codesynthesis.com/products/xsd
XML data binding for embedded systems: http://codesynthesis.com/products/xsde
- undefine,
Boris Kolpackov <=