Forráskód Böngészése

Merge branch 'backport-java-new-packaging' into java-new-packaging

Fix conflicts by combining the changes from both sides.
Brad King 7 éve
szülő
commit
ea54a9c666
3 módosított fájl, 91 hozzáadás és 23 törlés
  1. 47 13
      Modules/FindJNI.cmake
  2. 39 5
      Modules/FindJava.cmake
  3. 5 5
      Modules/UseJava.cmake

+ 47 - 13
Modules/FindJNI.cmake

@@ -120,14 +120,39 @@ if(_JAVA_HOME)
     ${_JAVA_HOME}
     ${_JAVA_HOME}
     )
     )
 endif()
 endif()
-get_filename_component(java_install_version
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit;CurrentVersion]" NAME)
 
 
-list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/lib"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/lib"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/lib"
-  )
+if (WIN32)
+  set (_JNI_HINTS)
+  execute_process(COMMAND REG QUERY HKLM\\SOFTWARE\\JavaSoft\\JDK /f "." /k
+    RESULT_VARIABLE _JNI_RESULT
+    OUTPUT_VARIABLE _JNI_VERSIONS
+    ERROR_QUIET)
+  if (NOT  _JNI_RESULT)
+    string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\JDK\\\\[0-9\.]+" _JNI_VERSIONS "${_JNI_VERSIONS}")
+    foreach (_JNI_HINT IN LISTS _JNI_VERSIONS)
+      list(APPEND _JNI_HINTS "[${_JNI_HINT}\\MSI;INSTALLDIR]")
+    endforeach()
+  endif()
+
+  foreach (_JNI_HINT IN LISTS _JNI_HINTS)
+    list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES "${_JNI_HINT}/lib")
+  endforeach()
+
+  get_filename_component(java_install_version
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit;CurrentVersion]" NAME)
+
+  list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/lib"
+    )
+endif()
+
 JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
 JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
   /usr/lib/jvm/java/lib
   /usr/lib/jvm/java/lib
   /usr/lib/java/jre/lib/{libarch}
   /usr/lib/java/jre/lib/{libarch}
@@ -179,11 +204,21 @@ set(JAVA_AWT_INCLUDE_DIRECTORIES)
 if(_JAVA_HOME)
 if(_JAVA_HOME)
   list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES ${_JAVA_HOME}/include)
   list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES ${_JAVA_HOME}/include)
 endif()
 endif()
-list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/include"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/include"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/include"
-)
+if (WIN32)
+  foreach (_JNI_HINT IN LISTS _JNI_HINTS)
+    list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES "${_JNI_HINT}/include")
+  endforeach()
+  list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/include"
+    )
+endif()
 
 
 JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_INCLUDE_DIRECTORIES
 JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_INCLUDE_DIRECTORIES
   /usr/lib/java/include
   /usr/lib/java/include
@@ -330,4 +365,3 @@ set(JNI_INCLUDE_DIRS
   ${JAVA_INCLUDE_PATH2}
   ${JAVA_INCLUDE_PATH2}
   ${JAVA_AWT_INCLUDE_PATH}
   ${JAVA_AWT_INCLUDE_PATH}
 )
 )
-

+ 39 - 5
Modules/FindJava.cmake

@@ -77,8 +77,25 @@ set(_JAVA_HINTS)
 if(_JAVA_HOME)
 if(_JAVA_HOME)
   list(APPEND _JAVA_HINTS ${_JAVA_HOME}/bin)
   list(APPEND _JAVA_HINTS ${_JAVA_HOME}/bin)
 endif()
 endif()
-list(APPEND _JAVA_HINTS
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\2.0;JavaHome]/bin"
+if (WIN32)
+  macro (_JAVA_GET_INSTALLED_VERSIONS _KIND)
+    execute_process(COMMAND REG QUERY HKLM\\SOFTWARE\\JavaSoft\\${_KIND} /f "." /k
+      RESULT_VARIABLE _JAVA_RESULT
+      OUTPUT_VARIABLE _JAVA_VERSIONS
+      ERROR_QUIET)
+    if (NOT  _JAVA_RESULT)
+      string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\[0-9\.]+" _JAVA_VERSIONS "${_JAVA_VERSIONS}")
+      foreach (_JAVA_HINT IN LISTS _JAVA_VERSIONS)
+        list(APPEND _JAVA_HINTS "[${_JAVA_HINT}\\MSI;INSTALLDIR]/bin")
+      endforeach()
+    endif()
+  endmacro()
+
+  # search for installed versions for version 9 and upper
+  _JAVA_GET_INSTALLED_VERSIONS("JDK")
+  _JAVA_GET_INSTALLED_VERSIONS("JRE")
+
+  list(APPEND _JAVA_HINTS
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
@@ -86,7 +103,6 @@ list(APPEND _JAVA_HINTS
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\2.0;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.9;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.9;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.7;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.7;JavaHome]/bin"
@@ -95,6 +111,8 @@ list(APPEND _JAVA_HINTS
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.4;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.4;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.3;JavaHome]/bin"
   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.3;JavaHome]/bin"
   )
   )
+endif()
+
 # Hard-coded guesses should still go in PATHS. This ensures that the user
 # Hard-coded guesses should still go in PATHS. This ensures that the user
 # environment can always override hard guesses.
 # environment can always override hard guesses.
 set(_JAVA_PATHS
 set(_JAVA_PATHS
@@ -139,15 +157,31 @@ if(Java_JAVA_EXECUTABLE)
         # Sun, GCJ, older OpenJDK
         # Sun, GCJ, older OpenJDK
         set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
         set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
         set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
         set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
+        if (CMAKE_MATCH_4)
         set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
         set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
+        else()
+          set(Java_VERSION_MINOR 0)
+        endif()
+        if (CMAKE_MATCH_6)
         set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
         set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
+        else()
+          set(Java_VERSION_PATCH 0)
+        endif()
         set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
         set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
       elseif(var MATCHES "openjdk version \"${_java_version_regex}\"")
       elseif(var MATCHES "openjdk version \"${_java_version_regex}\"")
         # OpenJDK
         # OpenJDK
         set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
         set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
         set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
         set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
+        if (CMAKE_MATCH_4)
         set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
         set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
+        else()
+          set(Java_VERSION_MINOR 0)
+        endif()
+        if (CMAKE_MATCH_6)
         set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
         set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
+        else()
+          set(Java_VERSION_PATCH 0)
+        endif()
         set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
         set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
       elseif(var MATCHES "openjdk version \"([0-9]+)-[A-Za-z]+\"")
       elseif(var MATCHES "openjdk version \"([0-9]+)-[A-Za-z]+\"")
         # OpenJDK 9 early access builds or locally built
         # OpenJDK 9 early access builds or locally built
@@ -238,7 +272,7 @@ if(Java_FIND_COMPONENTS)
     elseif(component STREQUAL "Development")
     elseif(component STREQUAL "Development")
       list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAVAC_EXECUTABLE
       list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAVAC_EXECUTABLE
                                       Java_JAR_EXECUTABLE Java_JAVADOC_EXECUTABLE)
                                       Java_JAR_EXECUTABLE Java_JAVADOC_EXECUTABLE)
-      if(Java_VERSION VERSION_LESS "1.10")
+      if(Java_VERSION VERSION_LESS "10")
         list(APPEND _JAVA_REQUIRED_VARS Java_JAVAH_EXECUTABLE)
         list(APPEND _JAVA_REQUIRED_VARS Java_JAVAH_EXECUTABLE)
         if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE
         if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE
             AND Java_JAVAH_EXECUTABLE AND Java_JAR_EXECUTABLE AND Java_JAVADOC_EXECUTABLE)
             AND Java_JAVAH_EXECUTABLE AND Java_JAR_EXECUTABLE AND Java_JAVADOC_EXECUTABLE)
@@ -276,7 +310,7 @@ if(Java_FIND_COMPONENTS)
   endif()
   endif()
 else()
 else()
   # Check for Development
   # Check for Development
-  if(Java_VERSION VERSION_LESS "1.10")
+  if(Java_VERSION VERSION_LESS "10")
     find_package_handle_standard_args(Java
     find_package_handle_standard_args(Java
       REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
       REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
                     Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE
                     Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE

+ 5 - 5
Modules/UseJava.cmake

@@ -384,7 +384,7 @@
 # Create C header files from java classes. These files provide the connective glue
 # Create C header files from java classes. These files provide the connective glue
 # that allow your Java and C code to interact.
 # that allow your Java and C code to interact.
 #
 #
-# This command will no longer be supported starting with version 1.10 of the JDK due
+# This command will no longer be supported starting with version 10 of the JDK due
 # to the `suppression of javah tool <http://openjdk.java.net/jeps/313>`_.
 # to the `suppression of javah tool <http://openjdk.java.net/jeps/313>`_.
 # Command ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead.
 # Command ``add_jar(GENERATE_NATIVE_HEADERS)`` must be used instead.
 #
 #
@@ -527,7 +527,7 @@ function(add_jar _TARGET_NAME)
     if (_add_jar_GENERATE_NATIVE_HEADERS)
     if (_add_jar_GENERATE_NATIVE_HEADERS)
       # Raise an error if JDK version is less than 1.8 because javac -h is not supported
       # Raise an error if JDK version is less than 1.8 because javac -h is not supported
       # by earlier versions.
       # by earlier versions.
-      if ("${Java_VERSION}" VERSION_LESS 1.8)
+      if (Java_VERSION VERSION_LESS 1.8)
         message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS is not supported with this version of Java.")
         message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS is not supported with this version of Java.")
       endif()
       endif()
       cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS "" "DESTINATION" "" ${_add_jar_GENERATE_NATIVE_HEADERS})
       cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS "" "DESTINATION" "" ${_add_jar_GENERATE_NATIVE_HEADERS})
@@ -1312,10 +1312,10 @@ function(create_javadoc _target)
 endfunction()
 endfunction()
 
 
 function (create_javah)
 function (create_javah)
-  if ("${Java_VERSION}" VERSION_GREATER_EQUAL 1.10)
+  if (Java_VERSION VERSION_GREATER_EQUAL 10)
     message (FATAL_ERROR "create_javah: not supported with this Java version. Use add_jar(GENERATE_NATIVE_HEADERS) instead.")
     message (FATAL_ERROR "create_javah: not supported with this Java version. Use add_jar(GENERATE_NATIVE_HEADERS) instead.")
-  elseif ("${Java_VERSION}" VERSION_GREATER_EQUAL 1.8)
-    message (DEPRECATION "create_javah: this command will no longer be supported starting with version 1.10 of JDK. Update your project by using command add_jar(GENERATE_NATIVE_HEADERS) instead.")
+  elseif (Java_VERSION VERSION_GREATER_EQUAL 1.8)
+    message (DEPRECATION "create_javah: this command will no longer be supported starting with version 10 of JDK. Update your project by using command add_jar(GENERATE_NATIVE_HEADERS) instead.")
   endif()
   endif()
 
 
     cmake_parse_arguments(_create_javah
     cmake_parse_arguments(_create_javah