summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Util.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Util.py')
-rw-r--r--src/engine/SCons/Util.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py
index 9108f14..b8286d1 100644
--- a/src/engine/SCons/Util.py
+++ b/src/engine/SCons/Util.py
@@ -254,3 +254,62 @@ def find_files(filenames, paths,
pass
return nodes
+
+
+
+# See the documentation for the __autogenerate() method
+# for an explanation of this variable...
+AUTO_GEN_VARS = ( ( '_LIBFLAGS',
+ 'LIBS',
+ 'LIBLINKPREFIX',
+ 'LIBLINKSUFFIX' ),
+ ( '_LIBDIRFLAGS',
+ 'LIBPATH',
+ 'LIBDIRPREFIX',
+ 'LIBDIRSUFFIX' ),
+ ( '_INCFLAGS',
+ 'CPPPATH',
+ 'INCPREFIX',
+ 'INCSUFFIX' ) )
+
+def autogenerate(dict):
+ """Autogenerate the "interpolated" environment variables.
+ We read a static structure that tells us how. AUTO_GEN_VARS
+ is a tuple of tuples. Each inner tuple has four elements,
+ each strings referring to an environment variable, and describing
+ how to autogenerate a particular variable. The elements are:
+
+ 0 - The variable to generate
+ 1 - The "source" variable, usually a list
+ 2 - The "prefix" variable
+ 3 - The "suffix" variable
+
+ The autogenerated variable is a list, consisting of every
+ element of the source list, or a single element if the source
+ is a string, with the prefix and suffix
+ concatenated."""
+
+ for strVarAuto, strSrc, strPref, strSuff, in AUTO_GEN_VARS:
+ if dict.has_key(strSrc):
+ src_var = dict[strSrc]
+ if type(src_var) is types.ListType or \
+ isinstance(src_var, UserList):
+ src_var = map(str, src_var)
+ else:
+ src_var = [ str(src_var), ]
+ else:
+ src_var = []
+
+ try:
+ prefix = str(dict[strPref])
+ except KeyError:
+ prefix=''
+
+ try:
+ suffix = str(dict[strSuff])
+ except KeyError:
+ suffix =''
+
+ dict[strVarAuto] = map(lambda x, suff=suffix, pref=prefix: \
+ pref + os.path.normpath(str(x)) + suff,
+ src_var)