changeset: 3114:d9c0df155a9b parent: 3113:cf1daea9525a parent: 3104:98fe1dd00429 user: Gary Oberbrunner date: Sun May 18 19:45:24 2014 -0400 summary: Merged in haubi/scons, pull request #139: diff -r cf1daea9525a -r d9c0df155a9b src/CHANGES.txt #--- a/src/CHANGES.txt Sun May 18 18:30:56 2014 -0400 #+++ b/src/CHANGES.txt Sun May 18 19:45:24 2014 -0400 #@@ -8,6 +8,7 @@ From Michael Haubenwallner: - Respect user's CC/CXX values; don't always overwrite in generate() + - Delegate linker Tool.exists() to CC/CXX Tool.exists(). From Amir Szekely: - Fixed NoClean() for multi-target builders (#2353). diff -r cf1daea9525a -r d9c0df155a9b src/engine/SCons/Tool/aixlink.py --- a/src/engine/SCons/Tool/aixlink.py Sun May 18 18:30:56 2014 -0400 +++ b/src/engine/SCons/Tool/aixlink.py Sun May 18 19:45:24 2014 -0400 @@ -37,7 +37,6 @@ import SCons.Util -import aixcc import link cplusplus = __import__('c++', globals(), locals(), []) @@ -62,12 +61,14 @@ env['SHLIBSUFFIX'] = '.a' def exists(env): - 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 + # TODO: sync with link.smart_link() to choose a linker + linkers = { 'CXX': ['aixc++'], 'CC': ['aixcc'] } + alltools = [] + for langvar, linktools in linkers.items(): + if langvar in env: # use CC over CXX when user specified CC but not CXX + return SCons.Tool.FindTool(linktools, env) + alltools.extend(linktools) + return SCons.Tool.FindTool(alltools, env) # Local Variables: # tab-width:4 diff -r cf1daea9525a -r d9c0df155a9b src/engine/SCons/Tool/gnulink.py --- a/src/engine/SCons/Tool/gnulink.py Sun May 18 18:30:56 2014 -0400 +++ b/src/engine/SCons/Tool/gnulink.py Sun May 18 19:45:24 2014 -0400 @@ -37,8 +37,6 @@ import link -linkers = ['g++', 'gcc'] - def generate(env): """Add Builders and construction variables for gnulink to an Environment.""" link.generate(env) @@ -53,7 +51,14 @@ env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' def exists(env): - return env.Detect(linkers) + # TODO: sync with link.smart_link() to choose a linker + linkers = { 'CXX': ['g++'], 'CC': ['gcc'] } + alltools = [] + for langvar, linktools in linkers.items(): + if langvar in env: # use CC over CXX when user specified CC but not CXX + return SCons.Tool.FindTool(linktools, env) + alltools.extend(linktools) + return SCons.Tool.FindTool(alltools, env) # find CXX or CC # Local Variables: # tab-width:4