Backported #6865: Disable websockets command line option
[platform/upstream/freerdp.git] / cmake / ClangFormat.cmake
1 # get all project files
2 file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.c *.h *.m *.java)
3 # minimum version required
4 set(_CLANG_FORMAT_MINIMUM_VERSION 7.0.0)
5
6 find_program(CLANG_FORMAT
7         NAMES
8         clang-format-8
9         clang-format-7
10         clang-format
11         )
12
13 if (NOT CLANG_FORMAT)
14         message(WARNING "clang-format not found in path! code format target not available.")
15 else()
16         execute_process(
17                 COMMAND ${CLANG_FORMAT} "--version"
18                 OUTPUT_VARIABLE _CLANG_FORMAT_VERSION
19                 RESULT_VARIABLE _CLANG_FORMAT_VERSION_FAILED
20                 )
21
22         if (_CLANG_FORMAT_VERSION_FAILED)
23                 message(WARNING "A problem was encounterd with ${CLANG_FORMAT}")
24                 return()
25         endif()
26
27         string(REGEX MATCH "([7-9]|[1-9][0-9])\\.[0-9]\\.[0-9]" CLANG_FORMAT_VERSION
28                 "${_CLANG_FORMAT_VERSION}")
29
30         if (NOT CLANG_FORMAT_VERSION)
31                 message(WARNING "problem parsing clang-fromat version for ${CLANG_FORMAT}")
32                 return()
33         endif()
34
35         if (${CLANG_FORMAT_VERSION} VERSION_LESS ${_CLANG_FORMAT_MINIMUM_VERSION})
36                 message(WARNING "clang-format version ${CLANG_FORMAT_VERSION} not supported")
37                 message(WARNING "Minimum version required: ${_CLANG_FORMAT_MINIMUM_VERSION}")
38                 return()
39         endif()
40
41         add_custom_target(
42                         clangformat
43                         COMMAND ${CLANG_FORMAT}
44                         -style=file
45                         -i
46                         ${ALL_SOURCE_FILES}
47                         )
48 endif()