1set(LLVM_LINK_COMPONENTS support) 2 3add_clang_library(clangFormat 4 AffectedRangeManager.cpp 5 BreakableToken.cpp 6 ContinuationIndenter.cpp 7 DefinitionBlockSeparator.cpp 8 Format.cpp 9 FormatToken.cpp 10 FormatTokenLexer.cpp 11 IntegerLiteralSeparatorFixer.cpp 12 MacroCallReconstructor.cpp 13 MacroExpander.cpp 14 MatchFilePath.cpp 15 NamespaceEndCommentsFixer.cpp 16 ObjCPropertyAttributeOrderFixer.cpp 17 QualifierAlignmentFixer.cpp 18 SortJavaScriptImports.cpp 19 TokenAnalyzer.cpp 20 TokenAnnotator.cpp 21 UnwrappedLineFormatter.cpp 22 UnwrappedLineParser.cpp 23 UsingDeclarationsSorter.cpp 24 WhitespaceManager.cpp 25 26 LINK_LIBS 27 clangBasic 28 clangLex 29 clangToolingCore 30 clangToolingInclusions 31 ) 32 33file(GLOB_RECURSE files 34 *.cpp 35 *.h 36 ${CLANG_SOURCE_DIR}/include/clang/Format/*.h 37 ${CLANG_SOURCE_DIR}/tools/clang-format/*.cpp 38 ${CLANG_SOURCE_DIR}/unittests/Format/*.cpp 39 ${CLANG_SOURCE_DIR}/unittests/Format/*.h 40 ) 41 42set(check_format_depends) 43set(i 0) 44foreach(file IN LISTS files) 45 add_custom_command(OUTPUT check_format_depend_${i} 46 COMMAND clang-format ${file} | diff -u ${file} - 47 VERBATIM 48 COMMENT "Checking format of ${file}" 49 ) 50 list(APPEND check_format_depends check_format_depend_${i}) 51 math(EXPR i ${i}+1) 52endforeach() 53add_custom_target(clang-format-check-format DEPENDS ${check_format_depends}) 54 55set(docs_tools_dir ${CLANG_SOURCE_DIR}/docs/tools) 56 57set(format_style_depend ${CMAKE_CURRENT_BINARY_DIR}/format_style_depend) 58set(dump_style dump_format_style.py) 59set(style_options_rst ${CLANG_SOURCE_DIR}/docs/ClangFormatStyleOptions.rst) 60add_custom_command(OUTPUT ${format_style_depend} 61 COMMAND ${Python3_EXECUTABLE} ${dump_style} && touch ${format_style_depend} 62 WORKING_DIRECTORY ${docs_tools_dir} 63 VERBATIM 64 COMMENT "Updating ${style_options_rst}" 65 DEPENDS ${CLANG_SOURCE_DIR}/include/clang/Format/Format.h 66 ${CLANG_SOURCE_DIR}/include/clang/Tooling/Inclusions/IncludeStyle.h 67 ${style_options_rst} 68 ${docs_tools_dir}/plurals.txt 69 ${docs_tools_dir}/${dump_style} 70 ) 71add_custom_target(clang-format-style DEPENDS ${format_style_depend}) 72 73set(format_help_depend ${CMAKE_CURRENT_BINARY_DIR}/format_help_depend) 74set(dump_help dump_format_help.py) 75set(clang_format_rst ${CLANG_SOURCE_DIR}/docs/ClangFormat.rst) 76add_custom_command(OUTPUT ${format_help_depend} 77 COMMAND ${Python3_EXECUTABLE} ${dump_help} -d ${CMAKE_BINARY_DIR}/bin && 78 touch ${format_help_depend} 79 WORKING_DIRECTORY ${docs_tools_dir} 80 VERBATIM 81 COMMENT "Updating ${clang_format_rst}" 82 DEPENDS clang-format 83 ${clang_format_rst} 84 ${docs_tools_dir}/${dump_help} 85 ) 86add_custom_target(clang-format-help DEPENDS ${format_help_depend}) 87