summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGary Oberbrunner <garyo@oberbrunner.com>2013-09-29 20:19:19 (GMT)
committerGary Oberbrunner <garyo@oberbrunner.com>2013-09-29 20:19:19 (GMT)
commit3ba5d044a4a6bb275cc33b42bff7be165d16ad19 (patch)
tree7faaf034431bb5d44cd49c017a8bd2824f7f6099 /src
parentc76073b8c0dfce959545d8aec1edf0ba09edbd1e (diff)
parent25c535f2e5997defdca96a6e0c35a0143e824982 (diff)
downloadSCons-3ba5d044a4a6bb275cc33b42bff7be165d16ad19.zip
SCons-3ba5d044a4a6bb275cc33b42bff7be165d16ad19.tar.gz
SCons-3ba5d044a4a6bb275cc33b42bff7be165d16ad19.tar.bz2
Merged pull req #85
Diffstat (limited to 'src')
-rw-r--r--src/CHANGES.txt4
-rw-r--r--src/engine/SCons/Tool/__init__.py22
2 files changed, 19 insertions, 7 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index f4229be..1e91144 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -6,6 +6,10 @@
RELEASE 2.3.1.alpha.yyyymmdd - NEW DATE WILL BE INSERTED HERE
+ From Stefan Sperling:
+ - Fixed the setup of linker flags for a versioned SharedLibrary
+ under OpenBSD (#2916).
+
From Antonio Cavallo:
- Improve error if Visual Studio bat file not found.
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py
index b80d6e4..00413e5 100644
--- a/src/engine/SCons/Tool/__init__.py
+++ b/src/engine/SCons/Tool/__init__.py
@@ -257,6 +257,10 @@ def VersionShLibLinkNames(version, libname, env):
print "VersionShLibLinkNames: linkname = ",linkname
linknames.append(linkname)
elif platform == 'posix':
+ if sys.platform.startswith('openbsd'):
+ # OpenBSD uses x.y shared library versioning numbering convention
+ # and doesn't use symlinks to backwards-compatible libraries
+ return []
# For libfoo.so.x.y.z, linknames libfoo.so libfoo.so.x.y libfoo.so.x
suffix_re = re.escape(shlib_suffix + '.' + version)
# First linkname has no version number
@@ -302,13 +306,17 @@ symlinks for the platform we are on"""
if version:
# set the shared library link flags
if platform == 'posix':
- suffix_re = re.escape(shlib_suffix + '.' + version)
- (major, age, revision) = version.split(".")
- # soname will have only the major version number in it
- soname = re.sub(suffix_re, shlib_suffix, libname) + '.' + major
- shlink_flags += [ '-Wl,-Bsymbolic', '-Wl,-soname=%s' % soname ]
- if Verbose:
- print " soname ",soname,", shlink_flags ",shlink_flags
+ shlink_flags += [ '-Wl,-Bsymbolic' ]
+ # OpenBSD doesn't usually use SONAME for libraries
+ if not sys.platform.startswith('openbsd'):
+ # continue setup of shlink flags for all other POSIX systems
+ suffix_re = re.escape(shlib_suffix + '.' + version)
+ (major, age, revision) = version.split(".")
+ # soname will have only the major version number in it
+ soname = re.sub(suffix_re, shlib_suffix, libname) + '.' + major
+ shlink_flags += [ '-Wl,-soname=%s' % soname ]
+ if Verbose:
+ print " soname ",soname,", shlink_flags ",shlink_flags
elif platform == 'cygwin':
shlink_flags += [ '-Wl,-Bsymbolic',
'-Wl,--out-implib,${TARGET.base}.a' ]