Skip to content

Commit 553842f

Browse files
committed
Fix build to support both Clang built from source and Fedora packages
1 parent b56fac9 commit 553842f

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

CMakeLists.txt

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.15.5)
1+
cmake_minimum_required(VERSION 3.20.0)
22
project(genpybind LANGUAGES C CXX)
33

44
set(CMAKE_EXPORT_COMPILE_COMMANDS YES)
@@ -16,11 +16,12 @@ add_compile_options(
1616
-Wall -Wextra -Wconversion -pedantic -pedantic-errors
1717
)
1818

19-
find_package(Clang REQUIRED
20-
HINTS "/usr/lib64/cmake/clang"
21-
)
19+
find_package(Clang REQUIRED HINTS "/usr/lib64/cmake/clang")
20+
message(STATUS "Found Clang ${Clang_VERSION}; using ClangConfig.cmake in: ${Clang_DIR}")
21+
22+
find_package(LLVM REQUIRED CONFIG)
23+
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}; using LLVMConfig.cmake in: ${LLVM_DIR}")
2224

23-
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
2425
include(AddLLVM)
2526

2627
find_program(IWYU_PATH NAMES include-what-you-use iwyu)
@@ -30,8 +31,7 @@ if(NOT IWYU_PATH STREQUAL "IWYU_PATH-NOTFOUND")
3031
-Xiwyu --mapping_file=${CMAKE_CURRENT_SOURCE_DIR}/genpybind.imp
3132
-Xiwyu --transitive_includes_only
3233
-Xiwyu --quoted_includes_first
33-
# TODO: Use ${CLANG_VERSION} instead
34-
-resource-dir=${LLVM_LIBRARY_DIR}/clang/${LLVM_PACKAGE_VERSION}
34+
-resource-dir=${LLVM_LIBRARY_DIR}/clang/${Clang_VERSION}
3535
)
3636
endif()
3737

@@ -58,7 +58,14 @@ add_library(genpybind SHARED
5858
# Use same compiler flags as LLVM.
5959
llvm_update_compile_flags(genpybind)
6060

61-
target_link_libraries(genpybind PUBLIC LLVM clang-cpp)
61+
# Link against libLLVM.so, if available.
62+
if(LLVM_LINK_LLVM_DYLIB)
63+
set(llvm_libs LLVM)
64+
else()
65+
llvm_map_components_to_libnames(llvm_libs support)
66+
endif()
67+
68+
target_link_libraries(genpybind PUBLIC ${llvm_libs} clang-cpp)
6269
target_include_directories(genpybind
6370
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
6471
# PUBLIC $<INSTALL_INTERFACE:...>
@@ -74,6 +81,8 @@ add_executable(genpybind-tool
7481
src/tool.cpp
7582
)
7683

84+
llvm_update_compile_flags(genpybind-tool)
85+
7786
target_link_libraries(genpybind-tool PRIVATE genpybind)
7887

7988
add_subdirectory(extern/pybind11)

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ find_package(GTest 1.10 REQUIRED CONFIG)
33
set(CMAKE_CXX_STANDARD 17)
44

55
add_executable(genpybind-tests)
6+
llvm_update_compile_flags(genpybind-tests)
67
target_link_libraries(genpybind-tests
78
PRIVATE genpybind GTest::gmock GTest::gmock_main)
89
file(GLOB_RECURSE test_files CONFIGURE_DEPENDS "*_test.cpp")

0 commit comments

Comments
 (0)