summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool/link.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Tool/link.py')
-rw-r--r--src/engine/SCons/Tool/link.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/engine/SCons/Tool/link.py b/src/engine/SCons/Tool/link.py
index c54f65a..da672c1 100644
--- a/src/engine/SCons/Tool/link.py
+++ b/src/engine/SCons/Tool/link.py
@@ -37,7 +37,12 @@ import SCons.Defaults
import SCons.Tool
import SCons.Util
-linkers = ['c++', 'cc']
+cplusplus = __import__('c++', globals(), locals(), [])
+
+def smart_link(source, target, env, for_signature):
+ if cplusplus.iscplusplus(source):
+ return '$CXX'
+ return '$CC'
def generate(env):
"""Add Builders and construction variables for gnulink to an Environment."""
@@ -48,7 +53,8 @@ def generate(env):
env['SHLINKFLAGS'] = '$LINKFLAGS -shared'
env['SHLINKCOM'] = '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
env['SHLIBEMITTER']= None
- env['LINK'] = env.Detect(linkers) or 'c++'
+ env['SMARTLINK'] = smart_link
+ env['LINK'] = "$SMARTLINK"
env['LINKFLAGS'] = ''
env['LINKCOM'] = '$LINK $LINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
env['LIBDIRPREFIX']='-L'
@@ -57,5 +63,13 @@ def generate(env):
env['LIBLINKPREFIX']='-l'
env['LIBLINKSUFFIX']=''
+ if env['PLATFORM'] == 'hpux':
+ env['SHLIBSUFFIX'] = '.sl'
+ elif env['PLATFORM'] == 'aix':
+ env['SHLIBSUFFIX'] = '.a'
+
+
def exists(env):
- return env.Detect(linkers)
+ # This module isn't really a Tool on its own, it's common logic for
+ # other linkers.
+ return None