RetroQUEST/gdlibretro/cmake/ClangFormat.cmake

33 lines
1.1 KiB
CMake

# SPDX-License-Identifier: Unlicense
find_program( CLANG_FORMAT_PROGRAM NAMES clang-format )
if ( CLANG_FORMAT_PROGRAM )
# get version information
execute_process(
COMMAND "${CLANG_FORMAT_PROGRAM}" --version
OUTPUT_VARIABLE CLANG_FORMAT_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
message( STATUS "Using clang-format: ${CLANG_FORMAT_PROGRAM} (${CLANG_FORMAT_VERSION})" )
get_target_property( CLANG_FORMAT_SOURCES ${PROJECT_NAME} SOURCES )
# Remove some files from the list
list( FILTER CLANG_FORMAT_SOURCES EXCLUDE REGEX ".*/extern/.*" )
list( FILTER CLANG_FORMAT_SOURCES EXCLUDE REGEX ".*/gen/.*" )
list( FILTER CLANG_FORMAT_SOURCES EXCLUDE REGEX ".*/*.gdextension.in" )
list( FILTER CLANG_FORMAT_SOURCES EXCLUDE REGEX ".*/Version.h.in" )
add_custom_target( clang-format
COMMAND "${CLANG_FORMAT_PROGRAM}" --style=file -i ${CLANG_FORMAT_SOURCES}
COMMENT "Running clang-format..."
COMMAND_EXPAND_LISTS
VERBATIM
)
unset( CLANG_FORMAT_VERSION )
unset( CLANG_FORMAT_SOURCES )
endif()