From: stevenknight Date: Fri, 12 Jul 2002 03:09:55 +0000 (+0000) Subject: Add prototype icc and ilink Tool specs for OS/2. X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=e36bb001ca66d2526aff0c26e175d3a7d3a1e17d;p=scons.git Add prototype icc and ilink Tool specs for OS/2. git-svn-id: http://scons.tigris.org/svn/scons/trunk@408 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- diff --git a/doc/man/scons.1 b/doc/man/scons.1 index 4f598355..8c02eff6 100644 --- a/doc/man/scons.1 +++ b/doc/man/scons.1 @@ -732,6 +732,8 @@ platforms: dvipdf dvips g77 +icc +ilink latex lex nasm diff --git a/rpm/scons.spec b/rpm/scons.spec index e40a16f8..aae24a63 100644 --- a/rpm/scons.spec +++ b/rpm/scons.spec @@ -116,6 +116,10 @@ rm -rf $RPM_BUILD_ROOT /usr/lib/scons/SCons/Tool/gcc.pyc /usr/lib/scons/SCons/Tool/gnulink.py /usr/lib/scons/SCons/Tool/gnulink.pyc +/usr/lib/scons/SCons/Tool/icc.py +/usr/lib/scons/SCons/Tool/icc.pyc +/usr/lib/scons/SCons/Tool/ilink.py +/usr/lib/scons/SCons/Tool/ilink.pyc /usr/lib/scons/SCons/Tool/latex.py /usr/lib/scons/SCons/Tool/latex.pyc /usr/lib/scons/SCons/Tool/lex.py diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 45a6517e..3002297b 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 d5be8782..118b4ba8 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 e757c35a..74df430d 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 00000000..2d8afc91 --- /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 00000000..460a4685 --- /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 4c3a57f6..eda8c407 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):