Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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})
Expand All @@ -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)

Expand Down