Explorar el Código

Merge topic 'UseSWIG-fix-library-prefix'

51b642679b UseSWIG: fix prefix library for Java on Windows

Acked-by: Kitware Robot <[email protected]>
Acked-by: Mathieu Malaterre <[email protected]>
Merge-request: !1871
Brad King hace 7 años
padre
commit
6792c7787a
Se han modificado 2 ficheros con 23 adiciones y 9 borrados
  1. 6 0
      Help/release/dev/UseSWIG-fix-library-prefix.rst
  2. 17 9
      Modules/UseSWIG.cmake

+ 6 - 0
Help/release/dev/UseSWIG-fix-library-prefix.rst

@@ -0,0 +1,6 @@
+UseSWIG-fix-library-prefix
+--------------------------
+
+* The :module:`UseSWIG` module :command:`swig_add_library` command
+  (and legacy ``swig_add_module`` command) now set the prefix of
+  Java modules to ``""`` for MINGW, MSYS, and CYGWIN environments.

+ 17 - 9
Modules/UseSWIG.cmake

@@ -507,15 +507,18 @@ function(SWIG_ADD_LIBRARY name)
   elseif (swig_lowercase_language STREQUAL "go")
     set_target_properties(${name} PROPERTIES PREFIX "")
   elseif (swig_lowercase_language STREQUAL "java")
+    # In java you want:
+    #      System.loadLibrary("LIBRARY");
+    # then JNI will look for a library whose name is platform dependent, namely
+    #   MacOS  : libLIBRARY.jnilib
+    #   Windows: LIBRARY.dll
+    #   Linux  : libLIBRARY.so
     if (APPLE)
-        # In java you want:
-        #      System.loadLibrary("LIBRARY");
-        # then JNI will look for a library whose name is platform dependent, namely
-        #   MacOS  : libLIBRARY.jnilib
-        #   Windows: LIBRARY.dll
-        #   Linux  : libLIBRARY.so
-        set_target_properties (${name} PROPERTIES SUFFIX ".jnilib")
-      endif ()
+      set_target_properties (${name} PROPERTIES SUFFIX ".jnilib")
+    endif()
+    if ((WIN32 AND MINGW) OR CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL MSYS)
+      set_target_properties(${name} PROPERTIES PREFIX "")
+    endif()
   elseif (swig_lowercase_language STREQUAL "lua")
     if(_SAM_TYPE STREQUAL "MODULE")
       set_target_properties(${name} PROPERTIES PREFIX "")
@@ -560,11 +563,16 @@ function(SWIG_ADD_LIBRARY name)
   # target property SWIG_SUPPORT_FILES lists proxy support files
   if (NOT SWIG_MODULE_${name}_NOPROXY)
     string(TOUPPER "${_SAM_LANGUAGE}" swig_uppercase_language)
+    set(swig_all_support_files)
     foreach (swig_it IN LISTS SWIG_${swig_uppercase_language}_EXTRA_FILE_EXTENSIONS)
       set (swig_support_files ${swig_generated_sources})
       list (FILTER swig_support_files INCLUDE REGEX ".*${swig_it}$")
-      set_property (TARGET ${name} APPEND PROPERTY SWIG_SUPPORT_FILES ${swig_support_files})
+      list(APPEND swig_all_support_files ${swig_support_files})
     endforeach()
+    if (swig_all_support_files)
+      list(REMOVE_DUPLICATES swig_all_support_files)
+    endif()
+    set_property (TARGET ${name} APPEND PROPERTY SWIG_SUPPORT_FILES ${swig_all_support_files})
   endif()
 
   # to ensure legacy behavior, export some variables