From 1262c98416773f5afeea55935360504b6e5d9f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20St=C3=B6neberg?= Date: Mon, 22 Aug 2022 20:13:13 +0200 Subject: [PATCH] some clang-tidy CMake integration improvements / fixed `SOVERSION` with multi-digit versions (#4391) --- cmake/clang_tidy.cmake | 44 ++++++++++++++++++++++++++++-------------- cmake/versions.cmake | 2 +- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/cmake/clang_tidy.cmake b/cmake/clang_tidy.cmake index 863092084..5c3abbec2 100644 --- a/cmake/clang_tidy.cmake +++ b/cmake/clang_tidy.cmake @@ -1,21 +1,35 @@ -if (NOT NPROC) - include(ProcessorCount) - ProcessorCount(NPROC) - if(NPROC EQUAL 0) - message(FATAL_ERROR "could not get processor count") +if (NOT CMAKE_DISABLE_PRECOMPILE_HEADERS) + # clang-tidy and clang need to have the same version when precompiled headers are beign used + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + string(REGEX MATCHALL "[0-9]+" _clang_ver_parts "${CMAKE_CXX_COMPILER_VERSION}") + LIST(GET _clang_ver_parts 0 _clang_major) + set(RUN_CLANG_TIDY_NAMES "run-clang-tidy-${_clang_major}") + message(STATUS "Clang and clang-tidy version need to match when precompiled headers are enabled - limiting search to '${RUN_CLANG_TIDY_NAMES}'") + else() + message(STATUS "Cannot use non-Clang compiler with clang-tidy when precompiled headers are enabled - skipping 'run-clang-tidy' target generation") endif() +else() + set(RUN_CLANG_TIDY_NAMES run-clang-tidy run-clang-tidy-15 run-clang-tidy-14 run-clang-tidy-13 run-clang-tidy-12 run-clang-tidy-11 run-clang-tidy-10 run-clang-tidy-9 run-clang-tidy-8) endif() -message(STATUS "NPROC=${NPROC}") -find_program(RUN_CLANG_TIDY NAMES run-clang-tidy run-clang-tidy-15 run-clang-tidy-14 run-clang-tidy-13 run-clang-tidy-12 run-clang-tidy-11 run-clang-tidy-10 run-clang-tidy-9 run-clang-tidy-8) -message(STATUS "RUN_CLANG_TIDY=${RUN_CLANG_TIDY}") -if (RUN_CLANG_TIDY) - # disable all compiler warnings since we are just interested in the tidy ones - add_custom_target(run-clang-tidy ${RUN_CLANG_TIDY} -p=${CMAKE_BINARY_DIR} -j ${NPROC} -quiet) - if (BUILD_GUI) - add_dependencies(run-clang-tidy gui-build-deps) - if (BUILD_TESTS) - add_dependencies(run-clang-tidy triage-build-ui-deps) +if (RUN_CLANG_TIDY_NAMES) + find_program(RUN_CLANG_TIDY NAMES ${RUN_CLANG_TIDY_NAMES}) + message(STATUS "RUN_CLANG_TIDY=${RUN_CLANG_TIDY}") + if (RUN_CLANG_TIDY) + include(ProcessorCount) + ProcessorCount(NPROC) + if(NPROC EQUAL 0) + message(FATAL_ERROR "could not get processor count") + endif() + message(STATUS "NPROC=${NPROC}") + + # disable all compiler warnings since we are just interested in the tidy ones + add_custom_target(run-clang-tidy ${PYTHON_EXECUTABLE} ${RUN_CLANG_TIDY} -p=${CMAKE_BINARY_DIR} -j ${NPROC} -quiet) + if (BUILD_GUI) + add_dependencies(run-clang-tidy gui-build-deps) + if (BUILD_TESTS) + add_dependencies(run-clang-tidy triage-build-ui-deps) + endif() endif() endif() endif() diff --git a/cmake/versions.cmake b/cmake/versions.cmake index 9f80eb508..aad26fc75 100644 --- a/cmake/versions.cmake +++ b/cmake/versions.cmake @@ -1,6 +1,6 @@ # Version for libraries CPP SET(VERSION "2.9.99") -STRING(REGEX MATCHALL "[0-9]" VERSION_PARTS "${VERSION}") +STRING(REGEX MATCHALL "[0-9]+" VERSION_PARTS "${VERSION}") LIST(GET VERSION_PARTS 0 VERSION_MAJOR) LIST(GET VERSION_PARTS 1 VERSION_MINOR) SET(SOVERSION "${VERSION_MAJOR}.${VERSION_MINOR}")