mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 13:19:51 -05:00
Merge branch 'backport-3.23-Java-version-handling' into Java-version-handling
This commit is contained in:
+30
-45
@@ -234,46 +234,41 @@ endif()
|
|||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set (_JNI_HINTS)
|
set (_JNI_HINTS)
|
||||||
execute_process(COMMAND REG QUERY HKLM\\SOFTWARE\\JavaSoft\\JDK
|
macro (_JNI_GET_INSTALLED_VERSIONS _KIND)
|
||||||
RESULT_VARIABLE _JNI_RESULT
|
execute_process(COMMAND REG QUERY "HKLM\\SOFTWARE\\JavaSoft\\${_KIND}"
|
||||||
OUTPUT_VARIABLE _JNI_VERSIONS
|
RESULT_VARIABLE _JAVA_RESULT
|
||||||
ERROR_QUIET)
|
OUTPUT_VARIABLE _JAVA_VERSIONS
|
||||||
if (NOT _JNI_RESULT)
|
ERROR_QUIET)
|
||||||
string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\JDK\\\\[0-9.]+" _JNI_VERSIONS "${_JNI_VERSIONS}")
|
if (NOT _JAVA_RESULT)
|
||||||
if (_JNI_VERSIONS)
|
string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\[0-9._]+" _JNI_VERSIONS "${_JAVA_VERSIONS}")
|
||||||
# sort versions. Most recent first
|
string (REGEX REPLACE "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\([0-9._]+)" "\\1" _JNI_VERSIONS "${_JNI_VERSIONS}")
|
||||||
## handle version 9 apart from other versions to get correct ordering
|
if (_JNI_VERSIONS)
|
||||||
set (_JNI_V9 ${_JNI_VERSIONS})
|
# sort versions. Most recent first
|
||||||
list (FILTER _JNI_VERSIONS EXCLUDE REGEX "JDK\\\\9")
|
list (SORT _JNI_VERSIONS COMPARE NATURAL ORDER DESCENDING)
|
||||||
list (SORT _JNI_VERSIONS)
|
foreach (_JNI_VERSION IN LISTS _JNI_VERSIONS)
|
||||||
list (REVERSE _JNI_VERSIONS)
|
string(REPLACE "_" "." _JNI_CMAKE_VERSION "${_JNI_VERSION}")
|
||||||
list (FILTER _JNI_V9 INCLUDE REGEX "JDK\\\\9")
|
if (JNI_FIND_VERSION_EXACT
|
||||||
list (SORT _JNI_V9)
|
AND NOT _JNI_CMAKE_VERSION MATCHES "^${JNI_FIND_VERSION}")
|
||||||
list (REVERSE _JNI_V9)
|
continue()
|
||||||
list (APPEND _JNI_VERSIONS ${_JNI_V9})
|
endif()
|
||||||
foreach (_JNI_HINT IN LISTS _JNI_VERSIONS)
|
if (DEFINED JNI_FIND_VERSION AND _JNI_CMAKE_VERSION VERSION_LESS JNI_FIND_VERSION)
|
||||||
list(APPEND _JNI_HINTS "[${_JNI_HINT};JavaHome]")
|
break()
|
||||||
endforeach()
|
endif()
|
||||||
|
list(APPEND _JNI_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\${_KIND}\\${_JNI_VERSION};JavaHome]")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endmacro()
|
||||||
|
|
||||||
|
# for version 9 and upper
|
||||||
|
_JNI_GET_INSTALLED_VERSIONS("JDK")
|
||||||
|
|
||||||
|
# for versions older than 9
|
||||||
|
_JNI_GET_INSTALLED_VERSIONS("Java Development Kit")
|
||||||
|
|
||||||
foreach (_JNI_HINT IN LISTS _JNI_HINTS)
|
foreach (_JNI_HINT IN LISTS _JNI_HINTS)
|
||||||
list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES "${_JNI_HINT}/lib")
|
list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES "${_JNI_HINT}/lib")
|
||||||
endforeach()
|
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()
|
endif()
|
||||||
|
|
||||||
set(_JNI_JAVA_DIRECTORIES_BASE
|
set(_JNI_JAVA_DIRECTORIES_BASE
|
||||||
@@ -357,16 +352,6 @@ if (WIN32)
|
|||||||
foreach (_JNI_HINT IN LISTS _JNI_HINTS)
|
foreach (_JNI_HINT IN LISTS _JNI_HINTS)
|
||||||
list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES "${_JNI_HINT}/include")
|
list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES "${_JNI_HINT}/include")
|
||||||
endforeach()
|
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()
|
endif()
|
||||||
|
|
||||||
JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_INCLUDE_DIRECTORIES
|
JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_INCLUDE_DIRECTORIES
|
||||||
|
|||||||
+17
-32
@@ -90,50 +90,35 @@ if(_JAVA_HOME)
|
|||||||
endif()
|
endif()
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
macro (_JAVA_GET_INSTALLED_VERSIONS _KIND)
|
macro (_JAVA_GET_INSTALLED_VERSIONS _KIND)
|
||||||
execute_process(COMMAND REG QUERY HKLM\\SOFTWARE\\JavaSoft\\${_KIND}
|
execute_process(COMMAND REG QUERY "HKLM\\SOFTWARE\\JavaSoft\\${_KIND}"
|
||||||
RESULT_VARIABLE _JAVA_RESULT
|
RESULT_VARIABLE _JAVA_RESULT
|
||||||
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}")
|
||||||
|
string (REGEX REPLACE "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\([0-9._]+)" "\\1" _JAVA_VERSIONS "${_JAVA_VERSIONS}")
|
||||||
if (_JAVA_VERSIONS)
|
if (_JAVA_VERSIONS)
|
||||||
# sort versions. Most recent first
|
# sort versions. Most recent first
|
||||||
## handle version 9 apart from other versions to get correct ordering
|
list (SORT _JAVA_VERSIONS COMPARE NATURAL ORDER DESCENDING)
|
||||||
set (_JAVA_V9 ${_JAVA_VERSIONS})
|
foreach (_JAVA_VERSION IN LISTS _JAVA_VERSIONS)
|
||||||
list (FILTER _JAVA_VERSIONS EXCLUDE REGEX "${_KIND}\\\\9")
|
string(REPLACE "_" "." _JAVA_CMAKE_VERSION "${_JAVA_VERSION}")
|
||||||
list (SORT _JAVA_VERSIONS)
|
if (Java_FIND_VERSION_EXACT
|
||||||
list (REVERSE _JAVA_VERSIONS)
|
AND NOT _JAVA_CMAKE_VERSION MATCHES "^${Java_FIND_VERSION}")
|
||||||
list (FILTER _JAVA_V9 INCLUDE REGEX "${_KIND}\\\\9")
|
continue()
|
||||||
list (SORT _JAVA_V9)
|
endif()
|
||||||
list (REVERSE _JAVA_V9)
|
list(APPEND _JAVA_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\${_KIND}\\${_JAVA_VERSION};JavaHome]/bin")
|
||||||
list (APPEND _JAVA_VERSIONS ${_JAVA_V9})
|
|
||||||
foreach (_JAVA_HINT IN LISTS _JAVA_VERSIONS)
|
|
||||||
list(APPEND _JAVA_HINTS "[${_JAVA_HINT};JavaHome]/bin")
|
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
# search for installed versions for version 9 and upper
|
# for version 9 and upper
|
||||||
_JAVA_GET_INSTALLED_VERSIONS("JDK")
|
_JAVA_GET_INSTALLED_VERSIONS("JDK")
|
||||||
_JAVA_GET_INSTALLED_VERSIONS("JRE")
|
_JAVA_GET_INSTALLED_VERSIONS("JRE")
|
||||||
|
|
||||||
list(APPEND _JAVA_HINTS
|
# for versions older than 9
|
||||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
|
_JAVA_GET_INSTALLED_VERSIONS("Java Development Kit")
|
||||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
|
_JAVA_GET_INSTALLED_VERSIONS("Java Runtime Environment")
|
||||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
|
|
||||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;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.3;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.7;JavaHome]/bin"
|
|
||||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.6;JavaHome]/bin"
|
|
||||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.5;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"
|
|
||||||
)
|
|
||||||
endif()
|
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
|
||||||
@@ -336,13 +321,13 @@ else()
|
|||||||
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
|
||||||
VERSION_VAR Java_VERSION_STRING
|
VERSION_VAR Java_VERSION
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
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_JAVADOC_EXECUTABLE
|
Java_JAVADOC_EXECUTABLE
|
||||||
VERSION_VAR Java_VERSION_STRING
|
VERSION_VAR Java_VERSION
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user