From 1992c2d467572808318dac523ffd079e96cbc71c Mon Sep 17 00:00:00 2001 From: Kaydax Date: Mon, 25 Aug 2025 00:56:52 -0400 Subject: [PATCH 1/2] Update CMakeLists to include Clang Tooling components Co-Authored-By: Ashley Hawkins --- CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5730ab4..1c9479e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,9 @@ 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) +message(STATUS "${CMAKE_MODULE_PATH}") +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) From 9604eb716052259b70356ce1ab442a83b86e06d8 Mon Sep 17 00:00:00 2001 From: Ashley Hawkins Date: Mon, 25 Aug 2025 06:15:39 +0100 Subject: [PATCH 2/2] Fix up CMakeLists.txt - Use REALPATH of compiler path - Remove unnecessary message() --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c9479e..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) @@ -35,7 +36,6 @@ 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 COMPONENTS Tooling) -message(STATUS "${CMAKE_MODULE_PATH}") 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})