diff options
author | Steven Knight <knight@baldmt.com> | 2005-02-14 00:40:40 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2005-02-14 00:40:40 (GMT) |
commit | 35451af4f3052befef3b41b3a971b3a8025b0577 (patch) | |
tree | 62f145f7eefcdabaa7d84a690a8651b4b2140134 /src/engine/SCons/Tool | |
parent | 28c5194366b0f6a08b6b0b30fe1ec438a4ac3498 (diff) | |
download | SCons-35451af4f3052befef3b41b3a971b3a8025b0577.zip SCons-35451af4f3052befef3b41b3a971b3a8025b0577.tar.gz SCons-35451af4f3052befef3b41b3a971b3a8025b0577.tar.bz2 |
Move the canned Scanner objects out of Defaults.py and document how to add Scanners that env.Object() can use.
Diffstat (limited to 'src/engine/SCons/Tool')
-rw-r--r-- | src/engine/SCons/Tool/__init__.py | 42 | ||||
-rw-r--r-- | src/engine/SCons/Tool/f77.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Tool/f90.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Tool/f95.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Tool/fortran.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Tool/ifl.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Tool/ifort.py | 4 | ||||
-rw-r--r-- | src/engine/SCons/Tool/mingw.py | 4 | ||||
-rw-r--r-- | src/engine/SCons/Tool/msvc.py | 6 |
9 files changed, 48 insertions, 18 deletions
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py index 1cfe6ef..7ef2ea0 100644 --- a/src/engine/SCons/Tool/__init__.py +++ b/src/engine/SCons/Tool/__init__.py @@ -42,7 +42,30 @@ import imp import sys import SCons.Errors -import SCons.Defaults +import SCons.Scanner +import SCons.Scanner.C +import SCons.Scanner.D +import SCons.Scanner.Prog + +CScanner = SCons.Scanner.C.CScanner() +DScanner = SCons.Scanner.D.DScanner() +ProgramScanner = SCons.Scanner.Prog.ProgramScanner() +SourceFileScanner = SCons.Scanner.Scanner({}, name='SourceFileScanner') + +CSuffixes = [".c", ".C", ".cxx", ".cpp", ".c++", ".cc", + ".h", ".H", ".hxx", ".hpp", ".hh", + ".F", ".fpp", ".FPP", + ".S", ".spp", ".SPP"] + +DSuffixes = ['.d'] + +IDLSuffixes = [".idl", ".IDL"] + +for suffix in CSuffixes: + SourceFileScanner.add_scanner(suffix, CScanner) + +for suffix in DSuffixes: + SourceFileScanner.add_scanner(suffix, DScanner) class ToolSpec: def __init__(self, name, **kw): @@ -116,13 +139,14 @@ def createProgBuilder(env): try: program = env['BUILDERS']['Program'] except KeyError: + import SCons.Defaults program = SCons.Builder.Builder(action = SCons.Defaults.LinkAction, emitter = '$PROGEMITTER', prefix = '$PROGPREFIX', suffix = '$PROGSUFFIX', src_suffix = '$OBJSUFFIX', src_builder = 'Object', - target_scanner = SCons.Defaults.ProgScan) + target_scanner = ProgramScanner) env['BUILDERS']['Program'] = program return program @@ -137,6 +161,7 @@ def createStaticLibBuilder(env): try: static_lib = env['BUILDERS']['StaticLibrary'] except KeyError: + import SCons.Defaults static_lib = SCons.Builder.Builder(action = SCons.Defaults.ArAction, emitter = '$LIBEMITTER', prefix = '$LIBPREFIX', @@ -158,13 +183,14 @@ def createSharedLibBuilder(env): try: shared_lib = env['BUILDERS']['SharedLibrary'] except KeyError: + import SCons.Defaults action_list = [ SCons.Defaults.SharedCheck, SCons.Defaults.ShLinkAction ] shared_lib = SCons.Builder.Builder(action = action_list, emitter = "$SHLIBEMITTER", prefix = '$SHLIBPREFIX', suffix = '$SHLIBSUFFIX', - target_scanner = SCons.Defaults.ProgScan, + target_scanner = ProgramScanner, src_suffix = '$SHOBJSUFFIX', src_builder = 'SharedObject') env['BUILDERS']['SharedLibrary'] = shared_lib @@ -181,13 +207,14 @@ def createLoadableModuleBuilder(env): try: ld_module = env['BUILDERS']['LoadableModule'] except KeyError: + import SCons.Defaults action_list = [ SCons.Defaults.SharedCheck, SCons.Defaults.LdModuleLinkAction ] ld_module = SCons.Builder.Builder(action = action_list, emitter = "$SHLIBEMITTER", prefix = '$LDMODULEPREFIX', suffix = '$LDMODULESUFFIX', - target_scanner = SCons.Defaults.ProgScan, + target_scanner = ProgramScanner, src_suffix = '$SHOBJSUFFIX', src_builder = 'SharedObject') env['BUILDERS']['LoadableModule'] = ld_module @@ -207,6 +234,7 @@ def createObjBuilders(env): The return is a 2-tuple of (StaticObject, SharedObject) """ + try: static_obj = env['BUILDERS']['StaticObject'] except KeyError: @@ -215,7 +243,8 @@ def createObjBuilders(env): prefix = '$OBJPREFIX', suffix = '$OBJSUFFIX', src_builder = ['CFile', 'CXXFile'], - source_scanner = SCons.Defaults.ObjSourceScan, single_source=1) + source_scanner = SourceFileScanner, + single_source = 1) env['BUILDERS']['StaticObject'] = static_obj env['BUILDERS']['Object'] = static_obj @@ -227,7 +256,8 @@ def createObjBuilders(env): prefix = '$SHOBJPREFIX', suffix = '$SHOBJSUFFIX', src_builder = ['CFile', 'CXXFile'], - source_scanner = SCons.Defaults.ObjSourceScan, single_source=1) + source_scanner = SourceFileScanner, + single_source = 1) env['BUILDERS']['SharedObject'] = shared_obj return (static_obj, shared_obj) diff --git a/src/engine/SCons/Tool/f77.py b/src/engine/SCons/Tool/f77.py index 5650e97..d5acbb3 100644 --- a/src/engine/SCons/Tool/f77.py +++ b/src/engine/SCons/Tool/f77.py @@ -53,7 +53,7 @@ else: F77Scan = SCons.Scanner.Fortran.FortranScan("F77PATH") for suffix in F77Suffixes + F77PPSuffixes: - SCons.Defaults.ObjSourceScan.add_scanner(suffix, F77Scan) + SCons.Tool.SourceFileScanner.add_scanner(suffix, F77Scan) # fVLG = fortran.VariableListGenerator diff --git a/src/engine/SCons/Tool/f90.py b/src/engine/SCons/Tool/f90.py index 9c3b0a3..447497f 100644 --- a/src/engine/SCons/Tool/f90.py +++ b/src/engine/SCons/Tool/f90.py @@ -53,7 +53,7 @@ else: F90Scan = SCons.Scanner.Fortran.FortranScan("F90PATH") for suffix in F90Suffixes + F90PPSuffixes: - SCons.Defaults.ObjSourceScan.add_scanner(suffix, F90Scan) + SCons.Tool.SourceFileScanner.add_scanner(suffix, F90Scan) # fVLG = fortran.VariableListGenerator diff --git a/src/engine/SCons/Tool/f95.py b/src/engine/SCons/Tool/f95.py index 2d5a0b5..bc3ece3 100644 --- a/src/engine/SCons/Tool/f95.py +++ b/src/engine/SCons/Tool/f95.py @@ -52,7 +52,7 @@ else: F95Scan = SCons.Scanner.Fortran.FortranScan("F95PATH") for suffix in F95Suffixes + F95PPSuffixes: - SCons.Defaults.ObjSourceScan.add_scanner(suffix, F95Scan) + SCons.Tool.SourceFileScanner.add_scanner(suffix, F95Scan) # fVLG = fortran.VariableListGenerator diff --git a/src/engine/SCons/Tool/fortran.py b/src/engine/SCons/Tool/fortran.py index 770a45e..180c811 100644 --- a/src/engine/SCons/Tool/fortran.py +++ b/src/engine/SCons/Tool/fortran.py @@ -62,7 +62,7 @@ else: FortranScan = SCons.Scanner.Fortran.FortranScan("FORTRANPATH") for suffix in FortranSuffixes + FortranPPSuffixes: - SCons.Defaults.ObjSourceScan.add_scanner(suffix, FortranScan) + SCons.Tool.SourceFileScanner.add_scanner(suffix, FortranScan) # def _fortranEmitter(target, source, env): diff --git a/src/engine/SCons/Tool/ifl.py b/src/engine/SCons/Tool/ifl.py index 923e5ef..b8b2012 100644 --- a/src/engine/SCons/Tool/ifl.py +++ b/src/engine/SCons/Tool/ifl.py @@ -39,7 +39,7 @@ import fortran def generate(env): """Add Builders and construction variables for ifl to an Environment.""" - SCons.Defaults.ObjSourceScan.add_scanner('.i90', fortran.FortranScan) + SCons.Tool.SourceFileScanner.add_scanner('.i90', fortran.FortranScan) fortran.FortranSuffixes.extend(['.i90']) fortran.generate(env) diff --git a/src/engine/SCons/Tool/ifort.py b/src/engine/SCons/Tool/ifort.py index 519f266..181078a 100644 --- a/src/engine/SCons/Tool/ifort.py +++ b/src/engine/SCons/Tool/ifort.py @@ -42,8 +42,8 @@ def generate(env): """Add Builders and construction variables for ifort to an Environment.""" # ifort supports Fortran 90 and Fortran 95 # Additionally, ifort recognizes more file extensions. - SCons.Defaults.ObjSourceScan.add_scanner('.i', fortran.FortranScan) - SCons.Defaults.ObjSourceScan.add_scanner('.i90', fortran.FortranScan) + SCons.Tool.SourceFileScanner.add_scanner('.i', fortran.FortranScan) + SCons.Tool.SourceFileScanner.add_scanner('.i90', fortran.FortranScan) fortran.FortranSuffixes.extend(['.i', '.i90']) fortran.generate(env) diff --git a/src/engine/SCons/Tool/mingw.py b/src/engine/SCons/Tool/mingw.py index f1bc91a..78cffde 100644 --- a/src/engine/SCons/Tool/mingw.py +++ b/src/engine/SCons/Tool/mingw.py @@ -99,8 +99,8 @@ shlib_action = SCons.Action.CommandGenerator(shlib_generator) res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR') res_builder = SCons.Builder.Builder(action=res_action, suffix='.o', - source_scanner=SCons.Defaults.ObjSourceScan) -SCons.Defaults.ObjSourceScan.add_scanner('.rc', SCons.Defaults.CScan) + source_scanner=SCons.Tool.SourceFileScanner) +SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan) def generate(env): mingw = find(env) diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py index e0ed26d..b47f331 100644 --- a/src/engine/SCons/Tool/msvc.py +++ b/src/engine/SCons/Tool/msvc.py @@ -400,11 +400,11 @@ def shared_object_emitter(target, source, env): pch_action = SCons.Action.Action('$PCHCOM', '$PCHCOMSTR') pch_builder = SCons.Builder.Builder(action=pch_action, suffix='.pch', emitter=pch_emitter, - source_scanner=SCons.Defaults.ObjSourceScan) + source_scanner=SCons.Tool.SourceFileScanner) res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR') res_builder = SCons.Builder.Builder(action=res_action, suffix='.res', - source_scanner=SCons.Defaults.ObjSourceScan) -SCons.Defaults.ObjSourceScan.add_scanner('.rc', SCons.Defaults.CScan) + source_scanner=SCons.Tool.SourceFileScanner) +SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan) def generate(env): """Add Builders and construction variables for MSVC++ to an Environment.""" |