From b52681021d427bdcaeb423e25caeb29f37278df9 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Wed, 25 Oct 2023 02:42:13 +0200 Subject: [PATCH] cmake: add clang-format target --- CMakeLists.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index ed157136..8d3fa647 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -329,3 +329,27 @@ if (MSVC) set_property(TARGET lego1 PROPERTY JOB_POOL_LINK msvc_lego1) endif() endif() + +find_program(CLANGFORMAT_BIN NAMES clang-format) +if(EXISTS "${CLANGFORMAT_BIN}") + execute_process(COMMAND "${CLANGFORMAT_BIN}" --version + OUTPUT_VARIABLE "CLANGFORMAT_VERSION_OUTPUT" + RESULT_VARIABLE "CLANGFORMAT_RESULT" + ) + if(CLANGFORMAT_RESULT EQUAL 0 AND CLANGFORMAT_VERSION_OUTPUT MATCHES "version ([0-9\\.]+)") + set(CLANGFORMAT_VERSION "${CMAKE_MATCH_1}") + set(CLANGFORMAT_VERSION_REQUIRED "17.0") + message(DEBUG "Found clang-format version ${CLANGFORMAT_VERSION} (needs ${CLANGFORMAT_VERSION_REQUIRED}") + if(CLANGFORMAT_VERSION VERSION_GREATER_EQUAL "${CLANGFORMAT_VERSION_REQUIRED}") + file(GLOB_RECURSE isle_sources + "${PROJECT_SOURCE_DIR}/ISLE/*.cpp" + "${PROJECT_SOURCE_DIR}/ISLE/*.h" + "${PROJECT_SOURCE_DIR}/LEGO1/*.cpp" + "${PROJECT_SOURCE_DIR}/LEGO1/*.h" + ) + string(REPLACE ";" "\n" isle_sources_lines "${isle_sources}") + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/isle_sources.txt" "${isle_sources_lines}\n") + add_custom_target(clang-format ${CLANGFORMAT_BIN} -i "--files=${CMAKE_CURRENT_BINARY_DIR}/isle_sources.txt") + endif() + endif() +endif()