瀏覽代碼

Merge topic 'java-new-packaging-version-sort'

1013560a6a FindJava, FindJNI: Ensure most recent version is searched first

Acked-by: Kitware Robot <[email protected]>
Merge-request: !2016
Brad King 7 年之前
父節點
當前提交
27279fa2db
共有 2 個文件被更改,包括 31 次插入7 次删除
  1. 15 3
      Modules/FindJNI.cmake
  2. 16 4
      Modules/FindJava.cmake

+ 15 - 3
Modules/FindJNI.cmake

@@ -129,9 +129,21 @@ if (WIN32)
     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()
+    if (_JNI_VERSIONS)
+      # sort versions. Most recent first
+      ## handle version 9 apart from other versions to get correct ordering
+      set (_JNI_V9 ${_JNI_VERSIONS})
+      list (FILTER _JNI_VERSIONS EXCLUDE REGEX "JDK\\\\9")
+      list (SORT _JNI_VERSIONS)
+      list (REVERSE _JNI_VERSIONS)
+      list (FILTER _JNI_V9 INCLUDE REGEX "JDK\\\\9")
+      list (SORT _JNI_V9)
+      list (REVERSE _JNI_V9)
+      list (APPEND _JNI_VERSIONS ${_JNI_V9})
+      foreach (_JNI_HINT IN LISTS _JNI_VERSIONS)
+        list(APPEND _JNI_HINTS "[${_JNI_HINT}\\MSI;INSTALLDIR]")
+      endforeach()
+    endif()
   endif()
 
   foreach (_JNI_HINT IN LISTS _JNI_HINTS)

+ 16 - 4
Modules/FindJava.cmake

@@ -84,10 +84,22 @@ if (WIN32)
       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()
+      string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\[0-9.]+" _JAVA_VERSIONS "${_JAVA_VERSIONS}")
+      if (_JAVA_VERSIONS)
+        # sort versions. Most recent first
+        ## handle version 9 apart from other versions to get correct ordering
+        set (_JAVA_V9 ${_JAVA_VERSIONS})
+        list (FILTER _JAVA_VERSIONS EXCLUDE REGEX "${_KIND}\\\\9")
+        list (SORT _JAVA_VERSIONS)
+        list (REVERSE _JAVA_VERSIONS)
+        list (FILTER _JAVA_V9 INCLUDE REGEX "${_KIND}\\\\9")
+        list (SORT _JAVA_V9)
+        list (REVERSE _JAVA_V9)
+        list (APPEND _JAVA_VERSIONS ${_JAVA_V9})
+        foreach (_JAVA_HINT IN LISTS _JAVA_VERSIONS)
+          list(APPEND _JAVA_HINTS "[${_JAVA_HINT}\\MSI;INSTALLDIR]/bin")
+        endforeach()
+      endif()
     endif()
   endmacro()