summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool/aixlink.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-08-24 14:44:10 (GMT)
committerSteven Knight <knight@baldmt.com>2003-08-24 14:44:10 (GMT)
commit852e7119fb7c6d6ccc2a4cb2c159445376b97fef (patch)
treed14db00af1a9d01734146c6e5ceceb61b83da6e0 /src/engine/SCons/Tool/aixlink.py
parent189d5b4d754cbd7eefde34aef617c4e3adcd8180 (diff)
downloadSCons-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.py29
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