blob: c3b8cf483729708d273e5411ebe412c586f1b33c [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# This is an adaptation of Bigtop's bigtop-detect-javahome:
# https://github.com/apache/bigtop/blob/38e1571b2f73bbfa6ab0c01a689fae967b8399d9/bigtop-packages/src/common/bigtop-utils/bigtop-detect-javahome
# (this is the last version to support JDK7).
#
# This module defines
# JAVA_HOME, directory containing a Java installation
# JAVA_HOME_FOUND, whether JAVA_HOME has been found
file (STRINGS "${CMAKE_CURRENT_LIST_DIR}/../build-support/java-home-candidates.txt"
JAVA_HOME_CANDIDATES REGEX "^[^#].*")
if (DEFINED ENV{JAVA_HOME})
set(JAVA_HOME $ENV{JAVA_HOME})
set(JAVA_HOME_FOUND true)
elseif (APPLE)
# Use the 'java_home' finder on macOS.
execute_process(COMMAND /usr/libexec/java_home
OUTPUT_VARIABLE JAVA_HOME
RESULT_VARIABLE JAVA_HOME_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (JAVA_HOME_ERROR)
message(FATAL_ERROR "Unable to run /usr/libexec/java_home: ${JAVA_HOME_ERROR}")
else()
set(JAVA_HOME_FOUND true)
endif()
else()
foreach(CANDIDATE ${JAVA_HOME_CANDIDATES})
if (IS_DIRECTORY ${CANDIDATE} AND EXISTS ${CANDIDATE}/bin/java)
set(JAVA_HOME ${CANDIDATE})
set(JAVA_HOME_FOUND true)
break()
endif()
endforeach()
endif()
if (JAVA_HOME_FOUND AND NOT EXISTS "${JAVA_HOME}/bin/java")
message(FATAL_ERROR "$JAVA_HOME (${JAVA_HOME}) does not contain bin/java")
endif()
if (DEFINED JavaHome_FIND_REQUIRED AND NOT DEFINED JAVA_HOME_FOUND)
message(FATAL_ERROR "failed to find JAVA_HOME")
else()
message("Found JAVA_HOME: ${JAVA_HOME}")
endif()