blob: 29e7cd4b121e05c168af65c6a9acad82293cdb84 [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.
##############################################################################
# Find the LLVM binaries: clang and opt
# LLVM_BINARIES_ROOT - hints the search path
# LLVM_CLANG_EXECUTABLE - set to path to clang
# LLVM_OPT_EXECUTABLE - set to path to opt
find_program(LLVM_BINARIES_CONFIG_EXECUTABLE llvm-config
PATHS
${LLVM_BINARIES_ROOT}/bin
$ENV{LLVM_HOME}
NO_DEFAULT_PATH
)
if (LLVM_BINARIES_CONFIG_EXECUTABLE STREQUAL "LLVM_BINARIES_CONFIG_EXECUTABLE-NOTFOUND")
message(FATAL_ERROR "Could not find llvm-config")
endif ()
# Check LLVM Version to be compatible
execute_process(
COMMAND ${LLVM_BINARIES_CONFIG_EXECUTABLE} --version
OUTPUT_VARIABLE LLVM_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (NOT "${LLVM_VERSION}" VERSION_EQUAL "$ENV{IMPALA_LLVM_VERSION}")
message(FATAL_ERROR
"LLVM version must be $ENV{IMPALA_LLVM_VERSION}. Found version: ${LLVM_VERSION}")
endif()
# get the location of the binaries
execute_process(
COMMAND ${LLVM_BINARIES_CONFIG_EXECUTABLE} --bindir
OUTPUT_VARIABLE LLVM_BIN_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(LLVM_CLANG_EXECUTABLE "${LLVM_BIN_DIR}/clang++")
set(LLVM_OPT_EXECUTABLE "${LLVM_BIN_DIR}/opt")
message(STATUS "LLVM llvm-config found at: ${LLVM_BINARIES_CONFIG_EXECUTABLE}")
message(STATUS "LLVM clang++ found at: ${LLVM_CLANG_EXECUTABLE}")
message(STATUS "LLVM opt found at: ${LLVM_OPT_EXECUTABLE}")