Blame cmake/ClangFormat.cmake

Packit Service 5a9772
# get all project files
Packit Service 5a9772
file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.c *.h *.m *.java)
Packit Service 5a9772
# minimum version required
Packit Service 5a9772
set(_CLANG_FORMAT_MINIMUM_VERSION 7.0.0)
Packit Service 5a9772
Packit Service 5a9772
find_program(CLANG_FORMAT
Packit Service 5a9772
	NAMES
Packit Service 5a9772
	clang-format-8
Packit Service 5a9772
	clang-format-7
Packit Service 5a9772
	clang-format
Packit Service 5a9772
	)
Packit Service 5a9772
Packit Service 5a9772
if (NOT CLANG_FORMAT)
Packit Service 5a9772
	message(WARNING "clang-format not found in path! code format target not available.")
Packit Service 5a9772
else()
Packit Service 5a9772
	execute_process(
Packit Service 5a9772
		COMMAND ${CLANG_FORMAT} "--version"
Packit Service 5a9772
		OUTPUT_VARIABLE _CLANG_FORMAT_VERSION
Packit Service 5a9772
		RESULT_VARIABLE _CLANG_FORMAT_VERSION_FAILED
Packit Service 5a9772
		)
Packit Service 5a9772
Packit Service 5a9772
	if (_CLANG_FORMAT_VERSION_FAILED)
Packit Service 5a9772
		message(WARNING "A problem was encounterd with ${CLANG_FORMAT}")
Packit Service 5a9772
		return()
Packit Service 5a9772
	endif()
Packit Service 5a9772
Packit Service 5a9772
	string(REGEX MATCH "([7-9]|[1-9][0-9])\\.[0-9]\\.[0-9]" CLANG_FORMAT_VERSION
Packit Service 5a9772
		"${_CLANG_FORMAT_VERSION}")
Packit Service 5a9772
Packit Service 5a9772
	if (NOT CLANG_FORMAT_VERSION)
Packit Service 5a9772
		message(WARNING "problem parsing clang-fromat version for ${CLANG_FORMAT}")
Packit Service 5a9772
		return()
Packit Service 5a9772
	endif()
Packit Service 5a9772
Packit Service 5a9772
	if (${CLANG_FORMAT_VERSION} VERSION_LESS ${_CLANG_FORMAT_MINIMUM_VERSION})
Packit Service 5a9772
		message(WARNING "clang-format version ${CLANG_FORMAT_VERSION} not supported")
Packit Service 5a9772
		message(WARNING "Minimum version required: ${_CLANG_FORMAT_MINIMUM_VERSION}")
Packit Service 5a9772
		return()
Packit Service 5a9772
	endif()
Packit Service 5a9772
Packit Service 5a9772
	add_custom_target(
Packit Service 5a9772
			clangformat
Packit Service 5a9772
			COMMAND ${CLANG_FORMAT}
Packit Service 5a9772
			-style=file
Packit Service 5a9772
			-i
Packit Service 5a9772
			${ALL_SOURCE_FILES}
Packit Service 5a9772
			)
Packit Service 5a9772
endif()