diff options
author | Steven Knight <knight@baldmt.com> | 2003-08-24 14:44:10 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2003-08-24 14:44:10 (GMT) |
commit | 852e7119fb7c6d6ccc2a4cb2c159445376b97fef (patch) | |
tree | d14db00af1a9d01734146c6e5ceceb61b83da6e0 /src/engine/SCons/Tool/aixlink.py | |
parent | 189d5b4d754cbd7eefde34aef617c4e3adcd8180 (diff) | |
download | SCons-852e7119fb7c6d6ccc2a4cb2c159445376b97fef.zip SCons-852e7119fb7c6d6ccc2a4cb2c159445376b97fef.tar.gz SCons-852e7119fb7c6d6ccc2a4cb2c159445376b97fef.tar.bz2 |
Support for additional UNIX variants: (Christian Engel)
Diffstat (limited to 'src/engine/SCons/Tool/aixlink.py')
-rw-r--r-- | src/engine/SCons/Tool/aixlink.py | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/engine/SCons/Tool/aixlink.py b/src/engine/SCons/Tool/aixlink.py index 1209862..d987016 100644 --- a/src/engine/SCons/Tool/aixlink.py +++ b/src/engine/SCons/Tool/aixlink.py @@ -32,10 +32,20 @@ selection method. __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" +import os +import os.path + +import aixcc import link -plinkers = ['xlC', 'xlc'] -rlinkers = ['xlC_r', 'xlc_r'] +cplusplus = __import__('c++', globals(), locals(), []) + +def smart_linkflags(source, target, env, for_signature): + if cplusplus.iscplusplus(source): + build_dir = env.subst('$BUILDDIR') + if build_dir: + return '-qtempinc=' + os.path.join(build_dir, 'tempinc') + return '' def generate(env): """ @@ -44,10 +54,15 @@ def generate(env): """ link.generate(env) - env['SHLINK'] = env.Detect(rlinkers) or 'cc' - env['SHLINKFLAGS'] = '$LINKFLAGS -qmkshrobj' - env['SHLINKCOM'] = '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' - env['LINK'] = env.Detect(plinkers) or 'cc' + env['SMARTLINKFLAGS'] = smart_linkflags + env['LINKFLAGS'] = '$SMARTLINKFLAGS' + env['SHLINKFLAGS'] = '$LINKFLAGS -qmkshrobj -qsuppress=1501-218' + env['SHLIBSUFFIX'] = '.a' def exists(env): - return env.Detect(linkers) + path, _cc, _shcc, version = aixcc.get_xlc(env) + if path and _cc: + xlc = os.path.join(path, _cc) + if os.path.exists(xlc): + return xlc + return None |