3FS/cmake/CLangFormat.cmake
2025-02-27 21:53:53 +08:00

25 lines
1.1 KiB
CMake

set(CLANG_FORMAT "/usr/bin/clang-format-14")
if(EXISTS ${CLANG_FORMAT})
message(STATUS "Found clang-format at ${CLANG_FORMAT}")
set(SOURCE_DIRS
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/tests
${CMAKE_SOURCE_DIR}/benchmarks
)
# For now, it just hard codes the source files list to globs. That works
# fine until we have another directory in `src/`. We should ideally gather
# this from SOURCE_FILES list. But, should filter the thirs_party sources.
# Taking a quick route for now. We should deal with it sometime down the line.
add_custom_target(format
COMMENT "Running clang-format"
COMMAND find ${SOURCE_DIRS} -name '*.cc' -o -name '*.cpp' -o -name '*.h' | grep -v "_generated.h" | xargs ${CLANG_FORMAT} -i)
add_custom_target(check-format
COMMENT "Running clang-format"
COMMAND find ${SOURCE_DIRS} -name '*.cc' -o -name '*.cpp' -o -name '*.h' | grep -v "_generated.h" | xargs ${CLANG_FORMAT} --Werror --dry-run)
else()
message(FATAL_ERROR "clang-format-14 not found")
endif()