diff --git a/CMakeLists.txt b/CMakeLists.txt index 16a82546da8a04a714955ab224227f38262a39c4..d8d73d7e6405b6a83a50419f8b0db4e8a44e0811 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -162,6 +162,23 @@ else () message(WARNING "clang-format no found!") endif() +#------------------------------------------------------ +# search for clang-format + +find_program(CLAZY_STANDALONE clazy-standalone) +if (CLAZY_STANDALONE) + add_custom_target(clazy-standalone + COMMAND ${CMAKE_COMMAND} + -DPUGS_SOURCE_DIR="${PUGS_SOURCE_DIR}" + -DPUGS_BINARY_DIR="${PUGS_BINARY_DIR}" + -DCLAZY_STANDALONE="${CLAZY_STANDALONE}" + -P ${PUGS_SOURCE_DIR}/cmake/ClazyStandaloneProcess.cmake + COMMENT "running ${CLAZY_STANDALONE} ..." + ) +else () + message(WARNING "clazy-standalone no found!") +endif() + #------------------------------------------------------ # C++ 17 flags if(${CMAKE_VERSION} VERSION_LESS "3.8.0") diff --git a/cmake/ClazyStandaloneProcess.cmake b/cmake/ClazyStandaloneProcess.cmake new file mode 100644 index 0000000000000000000000000000000000000000..45582a54e82da2f9b2cf32b0c658bfc054381a2c --- /dev/null +++ b/cmake/ClazyStandaloneProcess.cmake @@ -0,0 +1,41 @@ +# --------------- runs clazy-standalone --------------- + +if(PUGS_SOURCE_DIR AND CLAZY_STANDALONE) + # get C++ sources file list (ignoring packages) + file(GLOB_RECURSE ALL_SOURCE_FILES + ${PUGS_SOURCE_DIR}/src/**.[hc]pp + ${PUGS_SOURCE_DIR}/tests/**.[hc]pp) + + # checks if VERBOSE was set + set(ECHO_CMD_TO "NONE") + if (DEFINED ENV{VERBOSE}) + set(ECHO_CMD_TO "STDOUT") + endif() + + # Trick to continue on error using make + if(DEFINED ENV{MAKEFLAGS}) + string(FIND $ENV{MAKEFLAGS} "k" K_POSITION) + if (NOT(${K_POSITION} EQUAL "-1")) + set (CONTINUE_ON_ERROR "continue") + endif() + endif() + + # apply style to the file list + foreach(SOURCE_FILE ${ALL_SOURCE_FILES}) + string(REGEX REPLACE "^${PUGS_SOURCE_DIR}/" "" BASE_SOURCE_FILE "${SOURCE_FILE}") + execute_process( + COMMAND "${CMAKE_COMMAND}" -E env CLICOLOR_FORCE=1 + "${CMAKE_COMMAND}" -E cmake_echo_color --green "Running clazy-standalone on ${BASE_SOURCE_FILE}") + + execute_process( + COMMAND "${CLAZY_STANDALONE}" "-p=${PUGS_BINARY_DIR}" "${SOURCE_FILE}" + COMMAND_ECHO ${ECHO_CMD_TO} + RESULT_VARIABLE clazy_result) + + if (NOT DEFINED CONTINUE_ON_ERROR) + if (NOT (${clazy_result} EQUAL "0")) + message(FATAL_ERROR) + endif() + endif() + endforeach() +endif()