Commits

Gary Oberbrunner  committed 4d549db

Make VersionedSharedLib and its test not fail on Windows

  • Participants
  • Parent commits b2ba1a7

Comments (0)

Files changed (2)

File src/engine/SCons/Tool/__init__.py

             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:
                     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)

File test/LINK/VersionedLib.py

 """)
 
 test.write('test.c', """\
+#if _WIN32
+__declspec(dllexport)
+#endif
 int testlib(int n)
 {
 return n+1 ;
     '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= [