From c977df07cbc24b5359087072ee6ac97b01469be3 Mon Sep 17 00:00:00 2001 From: Gary Oberbrunner Date: Thu, 3 Mar 2011 03:00:19 +0000 Subject: Fix #1644: LINKFLAGS and RPATH conflict. Moved RPATH into LINKCOM. --- src/CHANGES.txt | 25 +++++++------------------ src/RELEASE.txt | 2 ++ src/engine/SCons/Tool/gnulink.py | 1 - src/engine/SCons/Tool/link.py | 7 ++++--- src/engine/SCons/Tool/sgilink.py | 1 - src/engine/SCons/Tool/sunlink.py | 1 - 6 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 2231cef..a10e852 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -7,23 +7,23 @@ RELEASE 2.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE - From Gary Oberbrunner: - - Fix precompiled headers on Windows when variant dir name has spaces. - From Gary Oberbrunner and Sohail Somani: - new construction variable WINDOWS_EMBED_MANIFEST to automatically embed manifests in Windows EXEs and DLLs. From Gary Oberbrunner: + - Put RPATH in LINKCOM rather than LINKFLAGS so resetting + LINKFLAGS doesn't kill RPATH + - Fix precompiled headers on Windows when variant dir name has spaces. - Adding None to an Action no longer fails (just returns original action) - - From Gary Oberbrunner: - New --debug=prepare option to show each target as it's being prepared, whether or not anything needs to be done for it. - - From Gary Oberbrunner: - New debug option --debug=duplicate to print a line for each unlink/relink (or copy) of a variant file from its source file. + - Improve error message for EnumVariables to show legal values. + - Fix Intel compiler to sort versions >9 correctly (esp. on Linux) + - Fix Install() when the source and target are directories and the + target directory exists. From David Garcia Garzon: - Fix Delete to be able to delete broken symlinks and dir @@ -38,12 +38,6 @@ RELEASE 2.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE properly. Previously the generated files would include the whitespace. - From Gary Oberbrunner: - - Improve error message for EnumVariables to show legal values. - - From Gary Oberbrunner: - - Fix Intel compiler to sort versions >9 correctly (esp. on Linux) - From Dmitry R.: - Handle Environment in case __semi_deepcopy is None @@ -51,11 +45,6 @@ RELEASE 2.1.0.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE - Much improved support for Windows UNC paths (\\SERVERNAME). - From Gary Oberbrunner: - - - Fix Install() when the source and target are directories and the - target directory exists. - From Jean-Baptiste Lab: - Fix problems with appending CPPDEFINES that contain diff --git a/src/RELEASE.txt b/src/RELEASE.txt index 5ceb8d7..585744c 100644 --- a/src/RELEASE.txt +++ b/src/RELEASE.txt @@ -56,6 +56,8 @@ FIXES + - RPATH is now in LINKCOM rather than LINKFLAGS, so resetting + LINKFLAGS doesn't kill RPATH - Precompiled headers on Windows no longer break when used with variant dirs containing spaces. - Delete can now delete symlinks to directories and broken symlinks diff --git a/src/engine/SCons/Tool/gnulink.py b/src/engine/SCons/Tool/gnulink.py index 1472021..bf71270 100644 --- a/src/engine/SCons/Tool/gnulink.py +++ b/src/engine/SCons/Tool/gnulink.py @@ -48,7 +48,6 @@ def generate(env): # __RPATH is set to $_RPATH in the platform specification if that # platform supports it. - env.Append(LINKFLAGS=['$__RPATH']) env['RPATHPREFIX'] = '-Wl,-rpath=' env['RPATHSUFFIX'] = '' env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' diff --git a/src/engine/SCons/Tool/link.py b/src/engine/SCons/Tool/link.py index e54a075..fae7f63 100644 --- a/src/engine/SCons/Tool/link.py +++ b/src/engine/SCons/Tool/link.py @@ -75,14 +75,15 @@ def generate(env): env['SHLINK'] = '$LINK' env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared') - env['SHLINKCOM'] = '$SHLINK -o $TARGET $SHLINKFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + env['SHLINKCOM'] = '$SHLINK -o $TARGET $SHLINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' # don't set up the emitter, cause AppendUnique will generate a list # starting with None :-( env.Append(SHLIBEMITTER = [shlib_emitter]) env['SMARTLINK'] = smart_link env['LINK'] = "$SMARTLINK" env['LINKFLAGS'] = SCons.Util.CLVar('') - env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + # __RPATH is only set to something ($_RPATH typically) on platforms that support it. + env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' env['LIBDIRPREFIX']='-L' env['LIBDIRSUFFIX']='' env['_LIBFLAGS']='${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}' @@ -105,7 +106,7 @@ def generate(env): env['LDMODULEPREFIX'] = '$SHLIBPREFIX' env['LDMODULESUFFIX'] = '$SHLIBSUFFIX' env['LDMODULEFLAGS'] = '$SHLINKFLAGS' - env['LDMODULECOM'] = '$LDMODULE -o $TARGET $LDMODULEFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + env['LDMODULECOM'] = '$LDMODULE -o $TARGET $LDMODULEFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' diff --git a/src/engine/SCons/Tool/sgilink.py b/src/engine/SCons/Tool/sgilink.py index 1c32ad0..6244141 100644 --- a/src/engine/SCons/Tool/sgilink.py +++ b/src/engine/SCons/Tool/sgilink.py @@ -48,7 +48,6 @@ def generate(env): # __RPATH is set to $_RPATH in the platform specification if that # platform supports it. - env.Append(LINKFLAGS=['$__RPATH']) env['RPATHPREFIX'] = '-rpath ' env['RPATHSUFFIX'] = '' env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' diff --git a/src/engine/SCons/Tool/sunlink.py b/src/engine/SCons/Tool/sunlink.py index ab66f46..5996a30 100644 --- a/src/engine/SCons/Tool/sunlink.py +++ b/src/engine/SCons/Tool/sunlink.py @@ -62,7 +62,6 @@ def generate(env): env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -G') - env.Append(LINKFLAGS=['$__RPATH']) env['RPATHPREFIX'] = '-R' env['RPATHSUFFIX'] = '' env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' -- cgit v0.12