Files
geant4/source/externals/ptl/cmake/Modules/PTLFormatting.cmake
2022-07-01 10:44:02 +02:00

61 lines
2.0 KiB
CMake

# * Clang-format only for master project
if(PTL_CLANG_FORMATTER MATCHES ".*-6")
unset(PTL_CLANG_FORMATTER CACHE)
endif()
find_program(PTL_CLANG_FORMATTER NAMES clang-format-9 clang-format-mp-9.0 clang-format)
mark_as_advanced(PTL_CLANG_FORMATTER)
find_program(PTL_CMAKE_FORMATTER NAMES cmake-format)
mark_as_advanced(PTL_CMAKE_FORMATTER)
set(PTL_FORMAT_TARGET format)
if(TARGET format)
set(PTL_FORMAT_TARGET format-ptl)
endif()
if(PTL_CLANG_FORMATTER)
set(_Source_DIR ${PROJECT_SOURCE_DIR}/source)
set(_Example_DIR ${PROJECT_SOURCE_DIR}/examples)
file(GLOB_RECURSE headers ${_Source_DIR}/*.hh ${_Source_DIR}/*.icc
${_Example_DIR}/*.hh ${_Example_DIR}/*.h)
file(GLOB_RECURSE sources ${_Source_DIR}/*.cc ${_Source_DIR}/*.c ${_Example_DIR}/*.cc
${_Example_DIR}/*.cu)
add_custom_target(
${PTL_FORMAT_TARGET}-source
COMMAND ${PTL_CLANG_FORMATTER} -i ${headers} ${sources}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT
"Running '${PTL_CLANG_FORMATTER}' on '${_Source_DIR}' and '${_Example_DIR}..."
SOURCES ${headers} ${sources})
endif()
if(PTL_CMAKE_FORMATTER)
set(_Source_DIR ${PROJECT_SOURCE_DIR}/source)
set(_Example_DIR ${PROJECT_SOURCE_DIR}/examples)
file(GLOB_RECURSE cmake_files "${PROJECT_SOURCE_DIR}/**/CMakeLists.txt"
"${PROJECT_SOURCE_DIR}/*.cmake" "${PROJECT_SOURCE_DIR}/*.cmake.in")
list(REMOVE_ITEM cmake_files "${PROJECT_SOURCE_DIR}/cmake/Modules/FindTBB.cmake")
add_custom_target(
${PTL_FORMAT_TARGET}-cmake
COMMAND ${PTL_CMAKE_FORMATTER} -i ${cmake_files}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Running '${PTL_CMAKE_FORMATTER}'..."
SOURCES ${cmake_files})
endif()
foreach(_FORMAT_TARGET ${PTL_FORMAT_TARGET}-source)
# avoid conflicting format targets
if(NOT TARGET ${PTL_FORMAT_TARGET})
add_custom_target(${PTL_FORMAT_TARGET})
endif()
if(TARGET ${_FORMAT_TARGET})
add_dependencies(${PTL_FORMAT_TARGET} ${_FORMAT_TARGET})
endif()
endforeach()