diff --git a/CMakeLists.txt b/CMakeLists.txt index 5730ab4..1fcbd3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,8 +20,9 @@ else() string(REGEX MATCH "^[0-9]+\.[0-9]+" gencppm_CLANG_VERSION_MAJOR_MINOR ${CMAKE_CXX_COMPILER_VERSION}) endif() if (NOT DEFINED LLVM_ROOT OR NOT DEFINED CLANG_ROOT) - # Get the path to the compiler - get_filename_component(CLANG_EXECUTABLE_DIR ${CMAKE_CXX_COMPILER} DIRECTORY) + # Get the real path to the compiler + get_filename_component(CLANG_EXECUTABLE_DIR ${CMAKE_CXX_COMPILER} REALPATH) + get_filename_component(CLANG_EXECUTABLE_DIR ${CLANG_EXECUTABLE_DIR} DIRECTORY) message(STATUS "Found Clang executable directory as ${CLANG_EXECUTABLE_DIR}, using this to get the base directory of the LLVM installation.") # Use that to get the path to the root (../) get_filename_component(CLANG_INSTALL_PREFIX ${CLANG_EXECUTABLE_DIR} DIRECTORY) @@ -34,7 +35,8 @@ endif() find_package(LLVM ${gencppm_CLANG_VERSION_MAJOR_MINOR} REQUIRED CONFIG) message(STATUS "Found LLVM ${LLVM_VERSION} at ${LLVM_DIR}") include(AddLLVM) -find_package(Clang ${gencppm_CLANG_VERSION_MAJOR_MINOR} REQUIRED CONFIG) +find_package(Clang ${gencppm_CLANG_VERSION_MAJOR_MINOR} REQUIRED CONFIG COMPONENTS Tooling) +include(${CLANG_ROOT}/lib/cmake/clang/AddClang.cmake) message(STATUS "Found Clang ${Clang_VERSION} at ${CLANG_INSTALL_PREFIX}") add_compile_definitions(${LLVM_DEFINITIONS} ${CLANG_DEFINITIONS}) add_link_options(${LLVM_LDFLAGS} ${CLANG_LDFLAGS}) @@ -58,7 +60,10 @@ add_executable(${PROJECT_NAME} ${SOURCE} src/main.cpp) add_library(${PROJECT_NAME}-module) target_sources(${PROJECT_NAME}-module PUBLIC FILE_SET CXX_MODULES FILES ${MODULE_SOURCES}) -target_link_libraries(${PROJECT_NAME}-module PUBLIC clangTooling) +clang_target_link_libraries(${PROJECT_NAME}-module PUBLIC clangTooling) +if (LLVM_LINK_LLVM_DYLIB) + target_link_libraries(${PROJECT_NAME}-module PUBLIC LLVM) +endif() target_compile_definitions(${PROJECT_NAME}-module PUBLIC CLANG_DIR="${CLANG_INSTALL_PREFIX}/lib/clang/${LLVM_VERSION_MAJOR}") llvm_update_compile_flags(${PROJECT_NAME}-module)