summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2018-12-06 23:25:26 (GMT)
committerWilliam Deegan <bill@baddogconsulting.com>2018-12-06 23:25:26 (GMT)
commita0aad5a43bb631a97dd45cf1a3899f88adb25ed7 (patch)
treee3d53c07c697e2e456257eb246d197c5bd51564c /src/engine/SCons
parentd620a79ebd590c5864656bd4bbca043e99809454 (diff)
downloadSCons-a0aad5a43bb631a97dd45cf1a3899f88adb25ed7.zip
SCons-a0aad5a43bb631a97dd45cf1a3899f88adb25ed7.tar.gz
SCons-a0aad5a43bb631a97dd45cf1a3899f88adb25ed7.tar.bz2
Fix GH issue #3241 - Support -compatability_version and -current_version flags propagating to linker for shared libraries. Derive them from SHLIBVERSION if not independantly specified
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Tool/applelink.py14
-rw-r--r--src/engine/SCons/Tool/applelink.xml8
2 files changed, 13 insertions, 9 deletions
diff --git a/src/engine/SCons/Tool/applelink.py b/src/engine/SCons/Tool/applelink.py
index c332fc2..cb7cfb6 100644
--- a/src/engine/SCons/Tool/applelink.py
+++ b/src/engine/SCons/Tool/applelink.py
@@ -43,7 +43,7 @@ from . import link
class AppleLinkInvalidCurrentVersionException(Exception):
pass
-class AppleLinkInvalidCompatibityVersionException(Exception):
+class AppleLinkInvalidCompatibilityVersionException(Exception):
pass
@@ -93,9 +93,9 @@ def _applelib_check_valid_version(version_string):
"""
parts = version_string.split('.')
if len(parts) > 3:
- return False, "Version string has too many periods"
+ return False, "Version string has too many periods [%s]"%version_string
if len(parts) <= 0:
- return False, "Version string unspecified"
+ return False, "Version string unspecified [%s]"%version_string
for (i, p) in enumerate(parts):
try:
@@ -120,7 +120,6 @@ def _applelib_currentVersionFromSoVersion(source, target, env, for_signature):
else:
return ""
- print("Version_String:%s"%version_string)
version_string = ".".join(version_string.split('.')[:3])
valid, reason = _applelib_check_valid_version(version_string)
@@ -144,7 +143,7 @@ def _applelib_compatVersionFromSoVersion(source, target, env, for_signature):
valid, reason = _applelib_check_valid_version(version_string)
if not valid:
- raise AppleLinkInvalidCompatibityVersionException(reason)
+ raise AppleLinkInvalidCompatibilityVersionException(reason)
return "-Wl,-compatibility_version,%s" % version_string
@@ -182,6 +181,11 @@ def generate(env):
env['LDMODULEFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -bundle')
env['LDMODULECOM'] = '$LDMODULE -o ${TARGET} $LDMODULEFLAGS $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS'
+ #
+ env['__SHLIBVERSIONFLAGS'] = '${__libversionflags(__env__,"SHLIBVERSION","_SHLIBVERSIONFLAGS")}'
+
+
+
def exists(env):
return env['PLATFORM'] == 'darwin'
diff --git a/src/engine/SCons/Tool/applelink.xml b/src/engine/SCons/Tool/applelink.xml
index c7c6d5b..c3346db 100644
--- a/src/engine/SCons/Tool/applelink.xml
+++ b/src/engine/SCons/Tool/applelink.xml
@@ -59,8 +59,8 @@ See its __doc__ string for a discussion of the format.
</para>
<para>
The value is specified as X[.Y[.Z]] where X is between 1 and 65535, Y can be omitted or between 1 and
- 255, Z can be omitted or between 1 and 255. This value will be set to &cv-link-SHLIBVERSION; if not
- specified.
+ 255, Z can be omitted or between 1 and 255. This value will be derived from &cv-link-SHLIBVERSION; if not
+ specified. The lowest digit will be dropped and replaced by a 0.
</para>
<para>See MacOS's ld manpage for more details</para>
</summary>
@@ -76,8 +76,8 @@ See its __doc__ string for a discussion of the format.
</para>
<para>
The value is specified as X[.Y[.Z]] where X is between 1 and 65535, Y can be omitted or between 1 and
- 255, Z can be omitted or between 1 and 255. This value will be derived from &cv-link-SHLIBVERSION; if not
- specified. The lowest digit will be dropped and replaced by a 0.
+ 255, Z can be omitted or between 1 and 255. This value will be set to &cv-link-SHLIBVERSION; if not
+ specified.
</para>
<para>See MacOS's ld manpage for more details</para>