summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-02-14 00:40:40 (GMT)
committerSteven Knight <knight@baldmt.com>2005-02-14 00:40:40 (GMT)
commit35451af4f3052befef3b41b3a971b3a8025b0577 (patch)
tree62f145f7eefcdabaa7d84a690a8651b4b2140134 /src/engine/SCons/Tool
parent28c5194366b0f6a08b6b0b30fe1ec438a4ac3498 (diff)
downloadSCons-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__.py42
-rw-r--r--src/engine/SCons/Tool/f77.py2
-rw-r--r--src/engine/SCons/Tool/f90.py2
-rw-r--r--src/engine/SCons/Tool/f95.py2
-rw-r--r--src/engine/SCons/Tool/fortran.py2
-rw-r--r--src/engine/SCons/Tool/ifl.py2
-rw-r--r--src/engine/SCons/Tool/ifort.py4
-rw-r--r--src/engine/SCons/Tool/mingw.py4
-rw-r--r--src/engine/SCons/Tool/msvc.py6
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."""