summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-03-07 19:31:55 (GMT)
committerSteven Knight <knight@baldmt.com>2002-03-07 19:31:55 (GMT)
commite23ae74447571c667d57d40a61d679732fe9ce83 (patch)
treeb2948193cfb5a17ba558ebb123bd7a4616931e7a /src/engine/SCons
parentc233ea9e5d7f7a9f8ee369877ef1301b2702fbee (diff)
downloadSCons-e23ae74447571c667d57d40a61d679732fe9ce83.zip
SCons-e23ae74447571c667d57d40a61d679732fe9ce83.tar.gz
SCons-e23ae74447571c667d57d40a61d679732fe9ce83.tar.bz2
Add a CXXFile builder to turn .ll and .yy files into .cc.
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Builder.py6
-rw-r--r--src/engine/SCons/Defaults.py14
2 files changed, 16 insertions, 4 deletions
diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py
index 2c87b6a..efef969 100644
--- a/src/engine/SCons/Builder.py
+++ b/src/engine/SCons/Builder.py
@@ -326,7 +326,11 @@ class CompositeBuilder(BuilderBase):
'src_suffix' : last_suffix,
}
if self.sbuild[r]:
- kw['src_builder'] = self.sbuild[r][0]
+ sb = filter(lambda x, e=env, s=last_suffix:
+ e.subst(x.suffix) == s,
+ self.sbuild[r])
+ if sb:
+ kw['src_builder'] = sb[0]
# XXX We should be able to cache this
bld = apply(Builder, (), kw)
for tnode in tlist:
diff --git a/src/engine/SCons/Defaults.py b/src/engine/SCons/Defaults.py
index baad55a..b0fa846 100644
--- a/src/engine/SCons/Defaults.py
+++ b/src/engine/SCons/Defaults.py
@@ -70,6 +70,12 @@ CFile = SCons.Builder.Builder(name = 'CFile',
},
suffix = '$CFILESUFFIX')
+CXXFile = SCons.Builder.Builder(name = 'CXXFile',
+ action = { '.ll' : '$LEXCOM',
+ '.yy' : '$YACCCOM',
+ },
+ suffix = '$CXXFILESUFFIX')
+
CPlusPlusAction = SCons.Action.Action('$CXXCOM')
Object = SCons.Builder.Builder(name = 'Object',
@@ -83,7 +89,7 @@ Object = SCons.Builder.Builder(name = 'Object',
},
prefix = '$OBJPREFIX',
suffix = '$OBJSUFFIX',
- src_builder = CFile)
+ src_builder = [CFile, CXXFile])
Program = SCons.Builder.Builder(name = 'Program',
action = '$LINKCOM',
@@ -209,6 +215,7 @@ def make_win32_env_from_paths(include, lib, path):
'CXX' : '$CC',
'CXXFLAGS' : '$CCFLAGS',
'CXXCOM' : '$CXX $CXXFLAGS $_INCFLAGS /c $SOURCES /Fo$TARGET',
+ 'CXXFILESUFFIX' : '.cc',
'LINK' : 'link',
'LINKFLAGS' : '/nologo',
'LINKCOM' : '$LINK $LINKFLAGS /OUT:$TARGET $_LIBDIRFLAGS $_LIBFLAGS $SOURCES',
@@ -221,7 +228,7 @@ def make_win32_env_from_paths(include, lib, path):
'YACC' : 'yacc',
'YACCFLAGS' : '',
'YACCCOM' : '$YACC $YACCFLAGS -o $TARGET $SOURCES',
- 'BUILDERS' : [CFile, Object, Program, Library],
+ 'BUILDERS' : [CFile, CXXFile, Object, Program, Library],
'SCANNERS' : [CScan],
'OBJPREFIX' : '',
'OBJSUFFIX' : '.obj',
@@ -269,6 +276,7 @@ if os.name == 'posix':
'CXX' : 'c++',
'CXXFLAGS' : '$CCFLAGS',
'CXXCOM' : '$CXX $CXXFLAGS $_INCFLAGS -c -o $TARGET $SOURCES',
+ 'CXXFILESUFFIX' : '.cc',
'LINK' : '$CXX',
'LINKFLAGS' : '',
'LINKCOM' : '$LINK $LINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS',
@@ -283,7 +291,7 @@ if os.name == 'posix':
'YACC' : 'yacc',
'YACCFLAGS' : '',
'YACCCOM' : '$YACC $YACCFLAGS -o $TARGET $SOURCES',
- 'BUILDERS' : [CFile, Object, Program, Library],
+ 'BUILDERS' : [CFile, CXXFile, Object, Program, Library],
'SCANNERS' : [CScan],
'OBJPREFIX' : '',
'OBJSUFFIX' : '.o',