diff options
author | Steven Knight <knight@baldmt.com> | 2002-03-07 19:31:55 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-03-07 19:31:55 (GMT) |
commit | e23ae74447571c667d57d40a61d679732fe9ce83 (patch) | |
tree | b2948193cfb5a17ba558ebb123bd7a4616931e7a /src/engine/SCons | |
parent | c233ea9e5d7f7a9f8ee369877ef1301b2702fbee (diff) | |
download | SCons-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.py | 6 | ||||
-rw-r--r-- | src/engine/SCons/Defaults.py | 14 |
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', |