1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-19 02:17:27 +08:00

FindJava, FindJNI: Ensure most recent version is searched first

This commit is contained in:
Marc Chevrier
2018-04-27 13:38:32 +02:00
committed by Brad King
parent 5482f485b8
commit 1013560a6a
2 changed files with 31 additions and 7 deletions

View File

@@ -129,9 +129,21 @@ if (WIN32)
ERROR_QUIET) ERROR_QUIET)
if (NOT _JNI_RESULT) if (NOT _JNI_RESULT)
string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\JDK\\\\[0-9\.]+" _JNI_VERSIONS "${_JNI_VERSIONS}") string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\JDK\\\\[0-9\.]+" _JNI_VERSIONS "${_JNI_VERSIONS}")
foreach (_JNI_HINT IN LISTS _JNI_VERSIONS) if (_JNI_VERSIONS)
list(APPEND _JNI_HINTS "[${_JNI_HINT}\\MSI;INSTALLDIR]") # sort versions. Most recent first
endforeach() ## 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() endif()
foreach (_JNI_HINT IN LISTS _JNI_HINTS) foreach (_JNI_HINT IN LISTS _JNI_HINTS)

View File

@@ -84,10 +84,22 @@ if (WIN32)
OUTPUT_VARIABLE _JAVA_VERSIONS OUTPUT_VARIABLE _JAVA_VERSIONS
ERROR_QUIET) ERROR_QUIET)
if (NOT _JAVA_RESULT) if (NOT _JAVA_RESULT)
string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\[0-9\.]+" _JAVA_VERSIONS "${_JAVA_VERSIONS}") string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\[0-9.]+" _JAVA_VERSIONS "${_JAVA_VERSIONS}")
foreach (_JAVA_HINT IN LISTS _JAVA_VERSIONS) if (_JAVA_VERSIONS)
list(APPEND _JAVA_HINTS "[${_JAVA_HINT}\\MSI;INSTALLDIR]/bin") # sort versions. Most recent first
endforeach() ## 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() endif()
endmacro() endmacro()