From c6b820510ab748fb079a4ef7375ee65a72e52bec Mon Sep 17 00:00:00 2001 From: Gary Oberbrunner Date: Sat, 22 Dec 2012 15:50:07 -0500 Subject: Make VersionedSharedLib and its test not fail on Windows --- src/engine/SCons/Tool/__init__.py | 14 +++++++++----- test/LINK/VersionedLib.py | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py index 83c2fb5..89aabb5 100644 --- a/src/engine/SCons/Tool/__init__.py +++ b/src/engine/SCons/Tool/__init__.py @@ -273,11 +273,14 @@ def VersionShLibLinkNames(version, libname, env): if Verbose: print "VersionShLibLinkNames: linkname ",linkname, ", target ",libname linknames.append(linkname) + # note: no Windows case here (win32 or cygwin); + # MSVC doesn't support this type of versioned shared libs. + # (could probably do something for MinGW though) return linknames def VersionedSharedLibrary(target = None, source= None, env=None): - """Build a shared library. If the environment has SHLIBVERSION -defined make a versioned shared library and create the appropriate + """Build a shared library. If the environment has SHLIBVERSION +defined make a versioned shared library and create the appropriate symlinks for the platform we are on""" Verbose = False try: @@ -339,9 +342,10 @@ symlinks for the platform we are on""" print "VerShLib: made sym link of %s -> %s" % (lastname,linkname) lastname = linkname # finish chain of sym links with link to the actual library - os.symlink(lib_ver,lastname) - if Verbose: - print "VerShLib: made sym link of %s -> %s" % (lib_ver,linkname) + if len(linknames)>0: + os.symlink(lib_ver,lastname) + if Verbose: + print "VerShLib: made sym link of %s -> %s" % (lib_ver,linkname) return result ShLibAction = SCons.Action.Action(VersionedSharedLibrary, None) diff --git a/test/LINK/VersionedLib.py b/test/LINK/VersionedLib.py index 34bef2a..0d45789 100644 --- a/test/LINK/VersionedLib.py +++ b/test/LINK/VersionedLib.py @@ -46,6 +46,9 @@ env.Default(instnode) """) test.write('test.c', """\ +#if _WIN32 +__declspec(dllexport) +#endif int testlib(int n) { return n+1 ; @@ -95,6 +98,18 @@ elif platform == 'darwin': 'libtest.dylib', 'libtest.2.5.4.dylib', ] +elif platform == 'win32': + # All (?) the files we expect will get created in the current directory + files = [ + 'test.dll', + 'test.lib', + 'test.obj', + ] + # All (?) the files we expect will get created in the 'installtest' directory + instfiles = [ + 'test.dll', + 'test.lib', + ] else: # All (?) the files we expect will get created in the current directory files= [ -- cgit v0.12