Make SCons/Tool/ifl.py get included in the win32 package, make Microsoft tools be...
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 30 Aug 2002 05:06:27 +0000 (05:06 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 30 Aug 2002 05:06:27 +0000 (05:06 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@454 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/MANIFEST.in
src/engine/SCons/Environment.py
src/engine/SCons/Platform/__init__.py
src/engine/SCons/Platform/cygwin.py
src/engine/SCons/Platform/os2.py
src/engine/SCons/Platform/posix.py
src/engine/SCons/Platform/win32.py
src/engine/SCons/Tool/__init__.py
test/BuildDir.py

index 118b4ba877520bb4c6fc874ba1f84131b2d2c562..811390440b8df71fd532d0cb89557299abccf78b 100644 (file)
@@ -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
index 47ab58b323331ff57db4b69672b131a8d235085e..99927f6f1ff939541950b316cc4143236df757b3 100644 (file)
@@ -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)
index 2b35a2ea57ee607c4793691a83cec3e29e31dfbf..9d73cd721ec20a843b3db3121687752bac43c5f2 100644 (file)
@@ -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):
index b5a73f6f7e16f98673a23b1a5b9e700c923b7258..c01c022daa2374addcd508324b3329fbb58a3b6b 100644 (file)
@@ -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']        = {}
index 74df430d76791c12fc74435827f29cadb8973a2a..d56150c063826bb286bc4887d3e3303523bbe5d0 100644 (file)
@@ -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']        = {}
index a45dce1d4636df638a5699e149c3a9fc7f9ba2e2..ab3fb7fc2d3031bacd1e7fc36ad468502ee4abbf 100644 (file)
@@ -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']        = {}
index 96404396eb24a48cc8c373d413f3b52b0e69a2ab..ea6a23b57aae2385ff438a1c00abdab8e6d98e6b 100644 (file)
@@ -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']        = {}
index f4a791256040bd2b53f3b55c77e6d5db5cdba5ce..0095cdf8f85326c1391b88ecf297ef3a59d120b6 100644 (file)
@@ -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)
index d70ab7addbe04894adf6e88eb85d0890f76ffa25..c2ad4af05dcace30c22b0e8dcf5a102716f1f384 100644 (file)
@@ -36,7 +36,12 @@ else:
 
 test = TestSCons.TestSCons()
 
-test.write('SConstruct', "print Environment()['F77']\n")
+test.write('SConstruct', """
+try:
+    print Environment()['F77']
+except:
+    print 'There is no fortran compiler.'
+""")
 test.run()
 f77 = test.where_is(test.stdout()[:-1])
 test.unlink('SConstruct')
@@ -110,7 +115,12 @@ env.Command(target='f2.c', source='f2.in', action=buildIt)
 env.Program(target='foo2', source='f2.c')
 env.Program(target='foo1', source='f1.c')
 
-if WhereIs(env['F77']):
+try:
+    f77 = env['F77']
+except:
+    f77 = None
+
+if f77 and WhereIs(env['F77']):
     env.Command(target='b2.f', source='b2.in', action=buildIt)
     env.Copy(LIBS = 'g2c').Program(target='bar2', source='b2.f')
     env.Copy(LIBS = 'g2c').Program(target='bar1', source='b1.f')