From bd88304bf1d868fff309cc64d98b63aa46b5c992 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Wed, 23 Jan 2019 00:54:25 +0100 Subject: [PATCH] Add clang-format target to cmake If `clang-format` is found the 'clang-format' target is defined. To build this target, clang format is run on pastis sources (c++) omitting 'packages' sources. It is better to configure editors to use clang-format than running this on the whole sources before pushing... --- CMakeLists.txt | 15 +++++++++++++++ cmake/ClangFormatProcess.cmake | 13 +++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 cmake/ClangFormatProcess.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a397a275..4cb090516 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,6 +121,21 @@ endif() set(PASTIS_HAS_MPI ${MPI_FOUND}) +#------------------------------------------------------ +# search for clang-format + +find_program(CLANG_FORMAT clang-format) +if (CLANG_FORMAT) + add_custom_target(clang-format + COMMAND echo "running ${CLANG_FORMAT} ..." + COMMAND ${CMAKE_COMMAND} + -DPASTIS_SOURCE_DIR="${PASTIS_SOURCE_DIR}" + -DCLANG_FORMAT="${CLANG_FORMAT}" + -P ${PASTIS_SOURCE_DIR}/cmake/ClangFormatProcess.cmake) +else () + message(WARNING "clang-format no found!") +endif() + #------------------------------------------------------ # setting Kokkos defaults to OpenMP when available diff --git a/cmake/ClangFormatProcess.cmake b/cmake/ClangFormatProcess.cmake new file mode 100644 index 000000000..f1da4c989 --- /dev/null +++ b/cmake/ClangFormatProcess.cmake @@ -0,0 +1,13 @@ +# --------------- runs clang-format in place using the style file --------------- + +if(PASTIS_SOURCE_DIR AND CLANG_FORMAT) + # get C++ sources file list (ignoring packages) + file(GLOB_RECURSE ALL_SOURCE_FILES + ${PASTIS_SOURCE_DIR}/src/**.[hc]pp + ${PASTIS_SOURCE_DIR}/tests/**.[hc]pp) + + # apply style to the file list + foreach(SOURCE_FILE ${ALL_SOURCE_FILES}) + execute_process(COMMAND "${CLANG_FORMAT}" -style=file -verbose -i "${SOURCE_FILE}") + endforeach() +endif() -- GitLab