summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2021-03-09 18:17:32 (GMT)
committerWilliam Deegan <bill@baddogconsulting.com>2021-03-09 18:17:32 (GMT)
commit24120957308e294e6152a1aadc5d1db9666c3db4 (patch)
tree88e6e655e81823425fc2cf1e1225240825a5bda4
parentfc656e485940d0b73771fa349044dbc697f009a0 (diff)
downloadSCons-24120957308e294e6152a1aadc5d1db9666c3db4.zip
SCons-24120957308e294e6152a1aadc5d1db9666c3db4.tar.gz
SCons-24120957308e294e6152a1aadc5d1db9666c3db4.tar.bz2
Fix Isssue #3035 by disabling versioned library symlinks
-rwxr-xr-xCHANGES.txt4
-rw-r--r--SCons/Tool/linkCommon/SharedLibrary.py2
-rw-r--r--SCons/Tool/mingw.py5
-rw-r--r--test/MinGW/MinGWSharedLibrary.py8
4 files changed, 17 insertions, 2 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 1f985b6..ed5ece8 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -13,6 +13,10 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER
It will now allow callables with expected args, and any extra args as long as they
have default arguments. Additionally functions with no defaults for extra arguments
as long as they are set using functools.partial to create a new callable which set them.
+ - Fix Issue #3035 - mingw with SHLIBVERSION set fails with either not a dll error or
+ "Multiple ways to build the same target were specified for:". Now mingw will disable
+ creating the symlinks (and adding version string to ) dlls. It sets SHLIBNOVERSIONSYMLINKS,
+ IMPLIBNOVERSIONSYMLINKS and LDMODULENOVERSIONSYMLINKS to True.
From Daniel Moody:
- Update CacheDir to use uuid for tmpfile uniqueness instead of pid.
diff --git a/SCons/Tool/linkCommon/SharedLibrary.py b/SCons/Tool/linkCommon/SharedLibrary.py
index e28addc..5c6250d 100644
--- a/SCons/Tool/linkCommon/SharedLibrary.py
+++ b/SCons/Tool/linkCommon/SharedLibrary.py
@@ -28,7 +28,7 @@ from . import lib_emitter, EmitLibSymlinks, StringizeLibSymlinks
def shlib_symlink_emitter(target, source, env, **kw):
- verbose = False
+ verbose = True
if "variable_prefix" in kw:
var_prefix = kw["variable_prefix"]
diff --git a/SCons/Tool/mingw.py b/SCons/Tool/mingw.py
index f72c64d..90c41d0 100644
--- a/SCons/Tool/mingw.py
+++ b/SCons/Tool/mingw.py
@@ -198,6 +198,11 @@ def generate(env):
env['_SHLIBSUFFIX'] = '$SHLIBSUFFIX'
env["SHLIBPREFIX"] = ""
+ # Disable creating symlinks for versioned shared library.
+ env['SHLIBNOVERSIONSYMLINKS'] = True
+ env['LDMODULENOVERSIONSYMLINKS'] = True
+ env['IMPLIBNOVERSIONSYMLINKS'] = True
+
def exists(env):
diff --git a/test/MinGW/MinGWSharedLibrary.py b/test/MinGW/MinGWSharedLibrary.py
index f563909..9ce4eb3 100644
--- a/test/MinGW/MinGWSharedLibrary.py
+++ b/test/MinGW/MinGWSharedLibrary.py
@@ -58,7 +58,13 @@ test.write('SConstruct', """
DefaultEnvironment(tools=[])
env = Environment(tools=['mingw','link','g++'])
#env.Tool('mingw')
-env.SharedLibrary('foobar', 'foobar.cc')
+foobar_obj = env.SharedObject('foobar.cc')
+env.SharedLibrary('foobar', foobar_obj)
+
+# Now verify versioned shared library doesn't fail
+env.SharedLibrary('foobar_ver', foobar_obj, SHLIBVERSION='2.4')
+
+
""" % locals())
test.run(arguments = ".")