Browse Source

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.
Brad King 12 years ago
parent
commit
fcd66a7f7b
3 changed files with 40 additions and 5 deletions
  1. 30 0
      Modules/CMakeFindJavaCommon.cmake
  2. 5 2
      Modules/FindJNI.cmake
  3. 5 3
      Modules/FindJava.cmake

+ 30 - 0
Modules/CMakeFindJavaCommon.cmake

@@ -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()

+ 5 - 2
Modules/FindJNI.cmake

@@ -6,7 +6,10 @@
 #
 # This module finds if Java is installed and determines where the
 # 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()
 endmacro()
 
-file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _JAVA_HOME)
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
 
 set(JAVA_AWT_LIBRARY_DIRECTORIES)
 if(_JAVA_HOME)

+ 5 - 3
Modules/FindJava.cmake

@@ -5,8 +5,10 @@
 # Find Java
 #
 # This module finds if Java is installed and determines where the
-# include files and libraries are.  This code sets the following
-# variables:
+# include files and libraries are.  The caller may set variable JAVA_HOME
+# 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
 #  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.
 set(_JAVA_HINTS)