Created
September 18, 2023 01:15
-
-
Save theoparis/3f8040ac423d2795768e575a7b270384 to your computer and use it in GitHub Desktop.
cmake/FindLLVM.cmake
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# LLVM_FOUND | |
# LLVM_INCLUDE_DIRS | |
# LLVM_LIBRARIES | |
# LLVM_LIBDIRS | |
set(LLVM_CONFIG_ERROR_MESSAGES "") | |
unset(LLVM_CONFIG_EXE CACHE) | |
find_program(LLVM_CONFIG_EXE | |
NAMES llvm-config NAMES_PER_DIR | |
) | |
if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND") | |
if (NOT LLVM_CONFIG_ERROR_MESSAGES STREQUAL "") | |
list(JOIN LLVM_CONFIG_ERROR_MESSAGES "\n" LLVM_CONFIG_ERROR_MESSAGE) | |
message(FATAL_ERROR ${LLVM_CONFIG_ERROR_MESSAGE}) | |
else() | |
message(FATAL_ERROR "unable to find llvm-config") | |
endif() | |
endif() | |
# Check that this LLVM is the right version | |
execute_process( | |
COMMAND ${LLVM_CONFIG_EXE} --version | |
OUTPUT_VARIABLE LLVM_CONFIG_VERSION | |
OUTPUT_STRIP_TRAILING_WHITESPACE) | |
get_filename_component(LLVM_CONFIG_DIR "${LLVM_CONFIG_EXE}" DIRECTORY) | |
execute_process( | |
COMMAND ${LLVM_CONFIG_EXE} --libnames | |
OUTPUT_STRIP_TRAILING_WHITESPACE | |
OUTPUT_VARIABLE LLVM_LIBRARIES | |
ERROR_VARIABLE LLVM_CONFIG_ERROR | |
ERROR_STRIP_TRAILING_WHITESPACE | |
) | |
if (LLVM_CONFIG_ERROR) | |
message(FATAL_ERROR Could not find LLVM ${LLVM_CONFIG_ERROR}) | |
endif() | |
execute_process( | |
COMMAND ${LLVM_CONFIG_EXE} --libdir | |
OUTPUT_STRIP_TRAILING_WHITESPACE | |
OUTPUT_VARIABLE LLVM_LIBDIRS | |
ERROR_VARIABLE LLVM_CONFIG_ERROR | |
ERROR_STRIP_TRAILING_WHITESPACE | |
) | |
execute_process( | |
COMMAND ${LLVM_CONFIG_EXE} --includedir | |
OUTPUT_VARIABLE LLVM_INCLUDE_DIRS_SPACES | |
OUTPUT_STRIP_TRAILING_WHITESPACE | |
) | |
string(REPLACE " " ";" LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS_SPACES}") | |
link_directories("${CMAKE_PREFIX_PATH}/lib") | |
link_directories("${LLVM_LIBDIRS}") | |
include(FindPackageHandleStandardArgs) | |
find_package_handle_standard_args(LLVM DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS) | |
mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_LIBDIRS) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment