diff options
| author | Cristian Adam <cristian.adam@gmail.com> | 2025-04-07 13:19:03 +0200 |
|---|---|---|
| committer | Cristian Adam <cristian.adam@gmail.com> | 2025-09-24 22:07:29 +0200 |
| commit | c93e34a826d8b12811202f922f1d59de5c0e76ba (patch) | |
| tree | 9e962d22617a4bcf5a9368d0b919550eaa210348 | |
| parent | 74ed0c7eb48c771b4b28b2c4fab54e3b78ea8bef (diff) | |
Build clazy-standalone using LLVM/Clang CMake packages1.16-based
Use CLAZY_BUILD_WITH_CLANG to find LLVM and Clang CMake packages
from a LLVM/Clang build.
This doesn't mean installing Clazy in the LLVM/Clang sources, but
to use find_package(LLVM/Clang) via CMake and CMAKE_PREFIX_PATH.
Change-Id: Ic853197a8aa01cc1e9e83e3cbb72aa088f585477
| -rw-r--r-- | CMakeLists.txt | 28 | ||||
| -rw-r--r-- | ClazyTests.cmake | 26 |
2 files changed, 41 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 9640b2d2..13aed0be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,15 @@ if (NOT CLAZY_BUILD_WITH_CLANG) set(default_use_clang_cpp OFF) endif() option(CLAZY_LINK_CLANG_DYLIB "Link clazy to dynamic Clang C++ library clang-cpp." ${default_use_clang_cpp}) + + if (NOT CLAZY_LINK_CLANG_DYLIB) + add_definitions(-DCLANG_EXPORTS) + endif() +else() + find_package(LLVM CONFIG REQUIRED) + find_package(Clang CONFIG REQUIRED) + include("${LLVM_CMAKE_DIR}/AddLLVM.cmake") + include("${CLANG_CMAKE_DIR}/AddClang.cmake") endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) @@ -280,10 +289,10 @@ else() clangRewrite clangAST clangASTMatchers + clangAPINotes clangParse clangLex clangBasic - clangARCMigrate clangEdit clangFrontendTool clangRewrite @@ -299,6 +308,23 @@ else() target_link_libraries(clazy-standalone clazyPlugin) install(TARGETS clazy-standalone DESTINATION bin PERMISSIONS OWNER_WRITE OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_READ WORLD_EXECUTE) + + # Install the explanation README's + include(${CMAKE_CURRENT_LIST_DIR}/readmes.cmake) + + install(FILES ${README_LEVEL0_FILES} DESTINATION ${CMAKE_INSTALL_DOCDIR}/level0) + install(FILES ${README_LEVEL1_FILES} DESTINATION ${CMAKE_INSTALL_DOCDIR}/level1) + install(FILES ${README_LEVEL2_FILES} DESTINATION ${CMAKE_INSTALL_DOCDIR}/level2) + install(FILES ${README_manuallevel_FILES} DESTINATION ${CMAKE_INSTALL_DOCDIR}/manuallevel) + + # Install more doc files + install(FILES README.md LICENSES/LGPL-2.0-or-later.txt checks.json DESTINATION ${CMAKE_INSTALL_DOCDIR}) + + # Build docs + if (CLAZY_MAN_PAGE) + add_subdirectory(docs) + endif() + endif() diff --git a/ClazyTests.cmake b/ClazyTests.cmake index 5457d6ac..9bd277c2 100644 --- a/ClazyTests.cmake +++ b/ClazyTests.cmake @@ -5,21 +5,23 @@ if ($ENV{CI_JOB_NAME_SLUG} MATCHES "qt5") elseif($ENV{CI_JOB_NAME_SLUG} MATCHES "qt6") set(TEST_VERSION_OPTION "--qt-versions=6") endif() -if (NOT CLAZY_BUILD_CLANG_TIDY) - set(TEST_OPTIONS "--no-clang-tidy") -endif() macro(add_clazy_test name) - add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose ${TEST_VERSION_OPTION} ${TEST_OPTIONS} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/) - if (CLANG_EXECUTABLE_PATH) - set(CLANG_CXX_TEST "CLANGXX=${CLANG_EXECUTABLE_PATH};") - endif() - if (CLAZY_BUILD_CLANG_TIDY) - set(CLANGTIDYPLUGIN_CXX "CLANGTIDYPLUGIN_CXX=$<TARGET_FILE:ClazyClangTidy>;") + if (NOT CLAZY_BUILD_WITH_CLANG) + add_test(NAME ${name} COMMAND python3 run_tests.py ${name} --verbose ${TEST_VERSION_OPTION} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/) + if (CLANG_EXECUTABLE_PATH) + set(CLANG_CXX_TEST "CLANGXX=${CLANG_EXECUTABLE_PATH};") + endif() + set_property(TEST ${name} PROPERTY + ENVIRONMENT "${CLANG_CXX_TEST}CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>;$<$<BOOL:${HAS_STD_FILESYSTEM}>:CLAZY_HAS_FILESYSTEM=>" + ) + else() + add_test(NAME ${name} + COMMAND python3 run_tests.py ${name} --verbose ${TEST_VERSION_OPTION} --only-standalone WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/) + set_property(TEST ${name} PROPERTY + ENVIRONMENT "CLANGXX=$<TARGET_FILE:clang>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>;$<$<BOOL:${HAS_STD_FILESYSTEM}>:CLAZY_HAS_FILESYSTEM=>" + ) endif() - set_property(TEST ${name} PROPERTY - ENVIRONMENT "${CLANG_CXX_TEST}${CLANGTIDYPLUGIN_CXX}CLAZYPLUGIN_CXX=$<TARGET_FILE:ClazyPlugin>;CLAZYSTANDALONE_CXX=$<TARGET_FILE:clazy-standalone>" - ) endmacro() include(ClazyTests.generated.cmake) |
