Find{Java,JNI}: Consider JAVA_HOME before ENV{JAVA_HOME}

Add a helper module CMakeFindJavaCommon shared between FindJava
and FindJNI to select a JAVA_HOME value.  Prefer a CMake variable
or cache entry first, then an environment variable.
This commit is contained in:
Brad King 2014-01-29 13:47:51 -05:00
parent 4b3614b25a
commit fcd66a7f7b
3 changed files with 40 additions and 5 deletions

View File

@ -0,0 +1,30 @@
#=============================================================================
# Copyright 2013-2014 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Do not include this module directly from code outside CMake!
set(_JAVA_HOME "")
if(JAVA_HOME AND IS_DIRECTORY "${JAVA_HOME}")
set(_JAVA_HOME "${JAVA_HOME}")
set(_JAVA_HOME_EXPLICIT 1)
else()
set(_ENV_JAVA_HOME "")
if(DEFINED ENV{JAVA_HOME})
file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _ENV_JAVA_HOME)
endif()
if(_ENV_JAVA_HOME AND IS_DIRECTORY "${_ENV_JAVA_HOME}")
set(_JAVA_HOME "${_ENV_JAVA_HOME}")
set(_JAVA_HOME_EXPLICIT 1)
endif()
unset(_ENV_JAVA_HOME)
endif()

View File

@ -6,7 +6,10 @@
# #
# This module finds if Java is installed and determines where the # This module finds if Java is installed and determines where the
# include files and libraries are. It also determines what the name of # include files and libraries are. It also determines what the name of
# the library is. This code sets the following variables: # the library is. The caller may set variable JAVA_HOME to specify a
# Java installation prefix explicitly.
#
# This module sets the following result variables:
# #
# :: # ::
# #
@ -91,7 +94,7 @@ macro(java_append_library_directories _var)
endforeach() endforeach()
endmacro() endmacro()
file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _JAVA_HOME) include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
set(JAVA_AWT_LIBRARY_DIRECTORIES) set(JAVA_AWT_LIBRARY_DIRECTORIES)
if(_JAVA_HOME) if(_JAVA_HOME)

View File

@ -5,8 +5,10 @@
# Find Java # Find Java
# #
# This module finds if Java is installed and determines where the # This module finds if Java is installed and determines where the
# include files and libraries are. This code sets the following # include files and libraries are. The caller may set variable JAVA_HOME
# variables: # to specify a Java installation prefix explicitly.
#
# This module sets the following result variables:
# #
# :: # ::
# #
@ -67,7 +69,7 @@
# (To distribute this file outside of CMake, substitute the full # (To distribute this file outside of CMake, substitute the full
# License text for the above reference.) # License text for the above reference.)
file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _JAVA_HOME) include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
# The HINTS option should only be used for values computed from the system. # The HINTS option should only be used for values computed from the system.
set(_JAVA_HINTS) set(_JAVA_HINTS)