diff options
author | Steven Knight <knight@baldmt.com> | 2002-08-30 05:06:27 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-08-30 05:06:27 (GMT) |
commit | d8b4ea0c9adfb77244f488c338d290c863f2b8b1 (patch) | |
tree | 165056ab4b2db0b0a81381a2fcb22f86ad6dd15f /src | |
parent | 8acb75d6298160a653e88897ab3b9273dd3d1551 (diff) | |
download | SCons-d8b4ea0c9adfb77244f488c338d290c863f2b8b1.zip SCons-d8b4ea0c9adfb77244f488c338d290c863f2b8b1.tar.gz SCons-d8b4ea0c9adfb77244f488c338d290c863f2b8b1.tar.bz2 |
Make SCons/Tool/ifl.py get included in the win32 package, make Microsoft tools be prefered on win32, and get rid of some cruft in the Platform files. (Anthony Roach)
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/MANIFEST.in | 1 | ||||
-rw-r--r-- | src/engine/SCons/Environment.py | 4 | ||||
-rw-r--r-- | src/engine/SCons/Platform/__init__.py | 5 | ||||
-rw-r--r-- | src/engine/SCons/Platform/cygwin.py | 13 | ||||
-rw-r--r-- | src/engine/SCons/Platform/os2.py | 8 | ||||
-rw-r--r-- | src/engine/SCons/Platform/posix.py | 13 | ||||
-rw-r--r-- | src/engine/SCons/Platform/win32.py | 12 | ||||
-rw-r--r-- | src/engine/SCons/Tool/__init__.py | 61 |
8 files changed, 50 insertions, 67 deletions
diff --git a/src/engine/MANIFEST.in b/src/engine/MANIFEST.in index 118b4ba..8113904 100644 --- a/src/engine/MANIFEST.in +++ b/src/engine/MANIFEST.in @@ -34,6 +34,7 @@ SCons/Tool/gas.py SCons/Tool/gcc.py SCons/Tool/gnulink.py SCons/Tool/icc.py +SCons/Tool/ifl.py SCons/Tool/ilink.py SCons/Tool/latex.py SCons/Tool/lex.py diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py index 47ab58b..99927f6 100644 --- a/src/engine/SCons/Environment.py +++ b/src/engine/SCons/Environment.py @@ -121,13 +121,15 @@ class Environment: def __init__(self, platform=SCons.Platform.Platform(), - tools=SCons.Platform.DefaultToolList(), + tools=None, **kw): self.fs = SCons.Node.FS.default_fs self._dict = our_deepcopy(SCons.Defaults.ConstructionEnvironment) if SCons.Util.is_String(platform): platform = SCons.Platform.Platform(platform) platform(self) + if tools is None: + tools = SCons.Platform.DefaultToolList(platform) for tool in tools: if SCons.Util.is_String(tool): tool = SCons.Tool.Tool(tool) diff --git a/src/engine/SCons/Platform/__init__.py b/src/engine/SCons/Platform/__init__.py index 2b35a2e..9d73cd7 100644 --- a/src/engine/SCons/Platform/__init__.py +++ b/src/engine/SCons/Platform/__init__.py @@ -85,11 +85,10 @@ def platform_module(name = platform_default()): file.close() return sys.modules[full_name] -def DefaultToolList(name = platform_default()): +def DefaultToolList(platform): """Select a default tool list for the specified platform. """ - module = platform_module(name) - return SCons.Tool.tool_list() + return SCons.Tool.tool_list(platform) class PlatformSpec: def __init__(self, name): diff --git a/src/engine/SCons/Platform/cygwin.py b/src/engine/SCons/Platform/cygwin.py index b5a73f6..c01c022 100644 --- a/src/engine/SCons/Platform/cygwin.py +++ b/src/engine/SCons/Platform/cygwin.py @@ -34,19 +34,6 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" import SCons.Util -def tool_list(): - as = SCons.Util.WhereIs('as') - nasm = SCons.Util.WhereIs('nasm') - if nasm and not as: - assembler = 'nasm' - else: - assembler = 'gas' - return ['ar', 'dvipdf', 'dvips', - 'g++', 'g77', 'gcc', 'gnulink', - 'latex', 'lex', - 'pdflatex', 'pdftex', 'tar', 'tex', 'yacc', - assembler] - def generate(env): if not env.has_key('ENV'): env['ENV'] = {} diff --git a/src/engine/SCons/Platform/os2.py b/src/engine/SCons/Platform/os2.py index 74df430..d56150c 100644 --- a/src/engine/SCons/Platform/os2.py +++ b/src/engine/SCons/Platform/os2.py @@ -34,14 +34,6 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" import SCons.Util -def tool_list(): - list = ['dvipdf', 'dvips', 'g77', - 'icc', 'ilink', 'latex', 'lex', - 'pdflatex', 'pdftex', 'tex', 'yacc'] - if SCons.Util.WhereIs('nasm'): - list.append('nasm') - return list - def generate(env): if not env.has_key('ENV'): env['ENV'] = {} diff --git a/src/engine/SCons/Platform/posix.py b/src/engine/SCons/Platform/posix.py index a45dce1..ab3fb7f 100644 --- a/src/engine/SCons/Platform/posix.py +++ b/src/engine/SCons/Platform/posix.py @@ -34,19 +34,6 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" import SCons.Util -def tool_list(): - as = SCons.Util.WhereIs('as') - nasm = SCons.Util.WhereIs('nasm') - if nasm and not as: - assembler = 'nasm' - else: - assembler = 'gas' - return ['ar', 'dvipdf', 'dvips', - 'g++', 'g77', 'gcc', 'gnulink', - 'latex', 'lex', - 'pdflatex', 'pdftex', 'tar', 'tex', 'yacc', - assembler] - def generate(env): if not env.has_key('ENV'): env['ENV'] = {} diff --git a/src/engine/SCons/Platform/win32.py b/src/engine/SCons/Platform/win32.py index 9640439..ea6a23b 100644 --- a/src/engine/SCons/Platform/win32.py +++ b/src/engine/SCons/Platform/win32.py @@ -34,18 +34,6 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" import SCons.Util -def tool_list(): - masm = SCons.Util.WhereIs('ml') - nasm = SCons.Util.WhereIs('nasm') - if nasm and not masm: - assembler = 'nasm' - else: - assembler = 'masm' - return ['dvipdf', 'dvips', 'g77', - 'latex', 'lex', 'lib', 'mslink', 'msvc', - 'pdflatex', 'pdftex', 'tar', 'tex', 'yacc', - assembler] - def generate(env): if not env.has_key('ENV'): env['ENV'] = {} diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py index f4a7912..0095cdf 100644 --- a/src/engine/SCons/Tool/__init__.py +++ b/src/engine/SCons/Tool/__init__.py @@ -125,16 +125,6 @@ def createCFileBuilders(env): return (c_file, cxx_file) -linkers = ['gnulink', 'mslink', 'ilink'] -c_compilers = ['gcc', 'msvc', 'icc'] -cxx_compilers = ['g++'] # only those that are seperate from the c compiler -fortran_compilers = ['g77', 'ifl'] -assemblers = ['gas', 'nasm', 'masm'] -other_tools = ['ar', 'dvipdf', 'dvips', - 'latex', 'lex', 'lib', - 'pdflatex', 'pdftex', - 'tar', 'tex', 'yacc'] - def FindTool(tools): for tool in tools: t = Tool(tool) @@ -148,11 +138,48 @@ def _ToolExists(tool): def FindAllTools(tools): return filter (_ToolExists, tools) -def tool_list(): - tools = [FindTool(linkers), - FindTool(c_compilers), - FindTool(cxx_compilers), - FindTool(fortran_compilers), - FindTool(assemblers) - ] + FindAllTools(other_tools) +def tool_list(platform): + if str(platform) == 'win32': + "prefer Microsoft tools on Windows" + linkers = ['mslink', 'gnulink', 'ilink'] + c_compilers = ['msvc', 'gcc', 'icc'] + assemblers = ['nasm', 'masm', 'gas'] + fortran_compilers = ['g77', 'ifl'] + ars = ['lib', 'ar'] + elif str(platform) == 'os2': + "prefer IBM tools on OS/2" + linkers = ['ilink', 'gnulink', 'mslink'] + c_compilers = ['icc', 'gcc', 'msvc'] + assemblers = ['nasm', 'masm', 'gas'] + fortran_compilers = ['ifl', 'g77'] + ars = ['ar', 'lib'] + else: + "prefer GNU tools on all other platforms" + linkers = ['gnulink', 'mslink', 'ilink'] + c_compilers = ['gcc', 'msvc', 'icc'] + assemblers = ['gas', 'nasm', 'masm'] + fortran_compilers = ['g77', 'ifl'] + ars = ['ar', 'lib'] + + linker = FindTool(linkers) + c_compiler = FindTool(c_compilers) + assembler = FindTool(assemblers) + fortran_compiler = FindTool(fortran_compilers) + ar = FindTool(ars) + + # Don't use g++ if the C compiler has built-in C++ support: + if c_compiler and (c_compiler == 'msvc' or c_compiler == 'icc'): + cxx_compiler = None + else: + cxx_compiler = FindTool(['g++']) + + other_tools = FindAllTools(['dvipdf', 'dvips', + 'latex', 'lex', + 'pdflatex', 'pdftex', + 'tar', 'tex', 'yacc']) + + tools = ([linker, c_compiler, cxx_compiler, + fortran_compiler, assembler, ar] + + other_tools) + return filter(lambda x: x, tools) |