summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2020-05-03 04:19:29 (GMT)
committerGitHub <noreply@github.com>2020-05-03 04:19:29 (GMT)
commitc3fb7d78509dc5eca1748d79ea97b6c7ce59869e (patch)
treef54898ff902bf7999098cdea62d794d6da978ce1 /src
parentb2496d7c252ff8f9063d9176f6076a3caa98a9ac (diff)
parentcbb97df8659b76d0227c27d0aed622e3086ce7b3 (diff)
downloadSCons-c3fb7d78509dc5eca1748d79ea97b6c7ce59869e.zip
SCons-c3fb7d78509dc5eca1748d79ea97b6c7ce59869e.tar.gz
SCons-c3fb7d78509dc5eca1748d79ea97b6c7ce59869e.tar.bz2
Merge pull request #3635 from dmoody256/soname_fix_for_issue_3246
check for SONAME and generate symlinks (github Issue #3246)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/CHANGES.txt3
-rw-r--r--src/engine/SCons/Tool/applelink.py8
-rw-r--r--src/engine/SCons/Tool/link.py10
3 files changed, 19 insertions, 2 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index fcd9378..12315a4 100755
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -10,6 +10,9 @@ NOTE: Please include a reference to any Issues resolved by your changes in the b
RELEASE VERSION/DATE TO BE FILLED IN LATER
+ From Daniel Moody:
+ - Added check for SONAME in environment to setup symlinks correctly (Github Issue #3246)
+
From James Benton:
- Improve Visual Studio solution/project generation code to add support
for a per-variant cppflags. Intellisense can be affected by cppflags,
diff --git a/src/engine/SCons/Tool/applelink.py b/src/engine/SCons/Tool/applelink.py
index efa7ee1..8c081a2 100644
--- a/src/engine/SCons/Tool/applelink.py
+++ b/src/engine/SCons/Tool/applelink.py
@@ -39,6 +39,7 @@ import SCons.Util
# the -rpath option, so we use the "link" tool instead of "gnulink".
from . import link
+from SCons.Tool import ShLibSonameGenerator
class AppleLinkInvalidCurrentVersionException(Exception):
pass
@@ -70,7 +71,12 @@ def _applelib_versioned_lib_soname(env, libnode, version, prefix, suffix, name_f
print("_applelib_versioned_lib_soname: name={!r}".format(name))
major = version.split('.')[0]
(libname,_suffix) = name.split('.')
- soname = '.'.join([libname, major, _suffix])
+ # if a desired SONAME was supplied, use that, otherwise create
+ # a default from the major version
+ if env.get('SONAME'):
+ soname = ShLibSonameGenerator(env, libnode)
+ else:
+ soname = '.'.join([libname, major, _suffix])
if Verbose:
print("_applelib_versioned_lib_soname: soname={!r}".format(soname))
return soname
diff --git a/src/engine/SCons/Tool/link.py b/src/engine/SCons/Tool/link.py
index d52c90d..a3567aa 100644
--- a/src/engine/SCons/Tool/link.py
+++ b/src/engine/SCons/Tool/link.py
@@ -46,6 +46,8 @@ from SCons.Tool.DCommon import isD
from SCons.Tool.cxx import iscplusplus
+from SCons.Tool import ShLibSonameGenerator
+
issued_mixed_link_warning = False
@@ -173,7 +175,13 @@ def _versioned_lib_soname(env, libnode, version, prefix, suffix, name_func):
if Verbose:
print("_versioned_lib_soname: name={!r}".format(name))
major = version.split('.')[0]
- soname = name + '.' + major
+
+ # if a desired SONAME was supplied, use that, otherwise create
+ # a default from the major version
+ if env.get('SONAME'):
+ soname = ShLibSonameGenerator(env, libnode)
+ else:
+ soname = name + '.' + major
if Verbose:
print("_versioned_lib_soname: soname={!r}".format(soname))
return soname