Skip to content

Instantly share code, notes, and snippets.

@theoparis
Created September 18, 2023 01:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theoparis/3f8040ac423d2795768e575a7b270384 to your computer and use it in GitHub Desktop.
Save theoparis/3f8040ac423d2795768e575a7b270384 to your computer and use it in GitHub Desktop.
cmake/FindLLVM.cmake
# 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