diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a397a2753ce5021034007d171cf3d41c74db138..4cb0905163f358b0b518d0507d1f92a990b12e20 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 0000000000000000000000000000000000000000..f1da4c989461010208d407d85a6a4d47cc35bbee --- /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()