Check for minimum required clang-tidy version

This commit is contained in:
Chris Thrasher 2022-10-24 22:59:56 -06:00
parent 75642ef7aa
commit ad416ab531
2 changed files with 29 additions and 3 deletions

View File

@ -534,7 +534,10 @@ endif()
sfml_set_option(CLANG_FORMAT_EXECUTABLE clang-format STRING "Override clang-format executable, requires version 12, 13, or 14") sfml_set_option(CLANG_FORMAT_EXECUTABLE clang-format STRING "Override clang-format executable, requires version 12, 13, or 14")
add_custom_target(format add_custom_target(format
COMMAND ${CMAKE_COMMAND} "-DCLANG_FORMAT_EXECUTABLE=${CLANG_FORMAT_EXECUTABLE}" -P ./cmake/Format.cmake COMMAND ${CMAKE_COMMAND} -DCLANG_FORMAT_EXECUTABLE=${CLANG_FORMAT_EXECUTABLE} -P ./cmake/Format.cmake
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" VERBATIM) WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} VERBATIM)
add_custom_target(tidy COMMAND run-clang-tidy -p ${PROJECT_BINARY_DIR} VERBATIM) sfml_set_option(CLANG_TIDY_EXECUTABLE clang-tidy STRING "Override clang-tidy executable, requires minimum version 12")
add_custom_target(tidy
COMMAND ${CMAKE_COMMAND} -DCLANG_TIDY_EXECUTABLE=${CLANG_TIDY_EXECUTABLE} -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} -P ./cmake/Tidy.cmake
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} VERBATIM)

23
cmake/Tidy.cmake Normal file
View File

@ -0,0 +1,23 @@
# Check executable exists
if(NOT EXISTS ${CLANG_TIDY_EXECUTABLE})
find_program(CLANG_TIDY_EXEC_TEMP ${CLANG_TIDY_EXECUTABLE})
if(CLANG_TIDY_EXEC_TEMP)
set(CLANG_TIDY_EXECUTABLE ${CLANG_TIDY_EXEC_TEMP})
unset(CLANG_TIDY_EXEC_TEMP)
else()
message(FATAL_ERROR "Unable to find clang-tidy executable: \"${CLANG_TIDY_EXECUTABLE}\"")
endif()
endif()
# Check executable version
execute_process(COMMAND ${CLANG_TIDY_EXECUTABLE} --version OUTPUT_VARIABLE CLANG_TIDY_VERSION)
string(REGEX MATCH "version ([0-9]+)" CLANG_TIDY_VERSION ${CLANG_TIDY_VERSION})
unset(CLANG_TIDY_VERSION)
if(CMAKE_MATCH_1 GREATER_EQUAL 12)
message(STATUS "Using clang-tidy version ${CMAKE_MATCH_1}")
else()
message(FATAL_ERROR "clang-tidy version ${CMAKE_MATCH_1} is too low")
endif()
# Run
execute_process(COMMAND run-clang-tidy -clang-tidy-binary ${CLANG_TIDY_EXECUTABLE} -p ${PROJECT_BINARY_DIR})