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/__init__.py | |
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/__init__.py')
-rw-r--r-- | src/engine/SCons/Tool/__init__.py | 42 |
1 files changed, 36 insertions, 6 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) |