diff options
author | Steven Knight <knight@baldmt.com> | 2002-07-12 03:09:55 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-07-12 03:09:55 (GMT) |
commit | 6d85cf7623aed86c27514fc85a05f168cb994714 (patch) | |
tree | 093dbf0273e3b0ff88e7b78a4c9f922a64d4a439 /src | |
parent | f98a2dabc8603592c74f02674a8dc551533382b6 (diff) | |
download | SCons-6d85cf7623aed86c27514fc85a05f168cb994714.zip SCons-6d85cf7623aed86c27514fc85a05f168cb994714.tar.gz SCons-6d85cf7623aed86c27514fc85a05f168cb994714.tar.bz2 |
Add prototype icc and ilink Tool specs for OS/2.
Diffstat (limited to 'src')
-rw-r--r-- | src/CHANGES.txt | 3 | ||||
-rw-r--r-- | src/engine/MANIFEST.in | 2 | ||||
-rw-r--r-- | src/engine/SCons/Platform/os2.py | 3 | ||||
-rw-r--r-- | src/engine/SCons/Tool/icc.py | 69 | ||||
-rw-r--r-- | src/engine/SCons/Tool/ilink.py | 48 | ||||
-rw-r--r-- | src/engine/SCons/Util.py | 21 |
6 files changed, 143 insertions, 3 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 45a6517..3002297 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -84,7 +84,8 @@ RELEASE 0.08 - - Add a tar archive builder. - - Add preliminary support for OS/2. + - Add preliminary support for the OS/2 Platform, including the icc + and ilink Tools. From Jeff Petkau: diff --git a/src/engine/MANIFEST.in b/src/engine/MANIFEST.in index d5be878..118b4ba 100644 --- a/src/engine/MANIFEST.in +++ b/src/engine/MANIFEST.in @@ -33,6 +33,8 @@ SCons/Tool/g77.py SCons/Tool/gas.py SCons/Tool/gcc.py SCons/Tool/gnulink.py +SCons/Tool/icc.py +SCons/Tool/ilink.py SCons/Tool/latex.py SCons/Tool/lex.py SCons/Tool/lib.py diff --git a/src/engine/SCons/Platform/os2.py b/src/engine/SCons/Platform/os2.py index e757c35..74df430 100644 --- a/src/engine/SCons/Platform/os2.py +++ b/src/engine/SCons/Platform/os2.py @@ -36,7 +36,7 @@ import SCons.Util def tool_list(): list = ['dvipdf', 'dvips', 'g77', - 'latex', 'lex', + 'icc', 'ilink', 'latex', 'lex', 'pdflatex', 'pdftex', 'tex', 'yacc'] if SCons.Util.WhereIs('nasm'): list.append('nasm') @@ -45,7 +45,6 @@ def tool_list(): def generate(env): if not env.has_key('ENV'): env['ENV'] = {} - #env['ENV']['PATHEXT'] = '.COM;.EXE;.BAT;.CMD' env['OBJPREFIX'] = '' env['OBJSUFFIX'] = '.obj' env['PROGPREFIX'] = '' diff --git a/src/engine/SCons/Tool/icc.py b/src/engine/SCons/Tool/icc.py new file mode 100644 index 0000000..2d8afc9 --- /dev/null +++ b/src/engine/SCons/Tool/icc.py @@ -0,0 +1,69 @@ +"""engine.SCons.Tool.icc + +Tool-specific initialization for the OS/2 icc compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# Copyright (c) 2001, 2002 Steven Knight +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os.path +import string + +import SCons.Action +import SCons.Tool +import SCons.Errors + +CSuffixes = ['.c', '.C'] +CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++'] + +def generate(env, platform): + """Add Builders and construction variables for MSVC++ to an Environment.""" + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + for suffix in CSuffixes: + static_obj.add_action(suffix, SCons.Defaults.CAction) + shared_obj.add_action(suffix, SCons.Defaults.ShCAction) + + for suffix in CXXSuffixes: + static_obj.add_action(suffix, SCons.Defaults.CXXAction) + shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction) + + env['CC'] = 'icc' + env['CCFLAGS'] = '' + env['CCCOM'] = '$CC $CCFLAGS $CPPFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET' + env['CXX'] = '$CC' + env['CXXFLAGS'] = '$CCFLAGS' + env['CXXCOM'] = '$CXX $CXXFLAGS $CPPFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET' + env['INCPREFIX'] = '/I' + env['INCSUFFIX'] = '' + + env['CFILESUFFIX'] = '.c' + env['CXXFILESUFFIX'] = '.cc' + diff --git a/src/engine/SCons/Tool/ilink.py b/src/engine/SCons/Tool/ilink.py new file mode 100644 index 0000000..460a468 --- /dev/null +++ b/src/engine/SCons/Tool/ilink.py @@ -0,0 +1,48 @@ +"""SCons.Tool.ilink + +Tool-specific initialization for the OS/2 ilink linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# Copyright (c) 2001, 2002 Steven Knight +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Defaults + +def generate(env, platform): + """Add Builders and construction variables for ilink to an Environment.""" + env['BUILDERS']['Program'] = SCons.Defaults.Program + + env['LINK'] = 'ilink' + env['LINKFLAGS'] = '' + env['LINKCOM'] = '$LINK $LINKFLAGS /O:$TARGET $SOURCES $( $_LIBDIRFLAGS $) $_LIBFLAGS' + env['LIBDIRPREFIX']='/LIBPATH:' + env['LIBDIRSUFFIX']='' + env['LIBLINKPREFIX']='' + env['LIBLINKSUFFIX']='$LIBSUFFIX' diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py index 4c3a57f..eda8c40 100644 --- a/src/engine/SCons/Util.py +++ b/src/engine/SCons/Util.py @@ -438,6 +438,27 @@ if sys.platform == 'win32': return fext return None +elif os.name == 'os2': + + def WhereIs(file, path=None, pathext=None): + if path is None: + path = os.environ['PATH'] + if is_String(path): + path = string.split(path, os.pathsep) + if pathext is None: + pathext = ['.exe', '.cmd'] + for ext in pathext: + if string.lower(ext) == string.lower(file[-len(ext):]): + pathext = [''] + break + for dir in path: + f = os.path.join(dir, file) + for ext in pathext: + fext = f + ext + if os.path.isfile(fext): + return fext + return None + else: def WhereIs(file, path=None, pathext=None): |