Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / docs / CMakeLists.txt
blob4163dd2d90ad5b3530bc374407d5a736591fe798
2 if (DOXYGEN_FOUND)
3 if (LLVM_ENABLE_DOXYGEN)
4   set(abs_srcdir ${CMAKE_CURRENT_SOURCE_DIR})
5   set(abs_builddir ${CMAKE_CURRENT_BINARY_DIR})
7   if (HAVE_DOT)
8     set(DOT ${LLVM_PATH_DOT})
9   endif()
11   if (LLVM_DOXYGEN_EXTERNAL_SEARCH)
12     set(enable_searchengine "YES")
13     set(searchengine_url "${LLVM_DOXYGEN_SEARCHENGINE_URL}")
14     set(enable_server_based_search "YES")
15     set(enable_external_search "YES")
16     set(extra_search_mappings "${LLVM_DOXYGEN_SEARCH_MAPPINGS}")
17   else()
18     set(enable_searchengine "NO")
19     set(searchengine_url "")
20     set(enable_server_based_search "NO")
21     set(enable_external_search "NO")
22     set(extra_search_mappings "")
23   endif()
25   # If asked, configure doxygen for the creation of a Qt Compressed Help file.
26   if (LLVM_ENABLE_DOXYGEN_QT_HELP)
27     set(CLANG_DOXYGEN_QCH_FILENAME "org.llvm.clang.qch" CACHE STRING
28       "Filename of the Qt Compressed help file")
29     set(CLANG_DOXYGEN_QHP_NAMESPACE "org.llvm.clang" CACHE STRING
30       "Namespace under which the intermediate Qt Help Project file lives")
31     set(CLANG_DOXYGEN_QHP_CUST_FILTER_NAME "Clang ${CLANG_VERSION}" CACHE STRING
32       "See http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters")
33     set(CLANG_DOXYGEN_QHP_CUST_FILTER_ATTRS "Clang,${CLANG_VERSION}" CACHE STRING
34       "See http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes")
35     set(clang_doxygen_generate_qhp "YES")
36     set(clang_doxygen_qch_filename "${CLANG_DOXYGEN_QCH_FILENAME}")
37     set(clang_doxygen_qhp_namespace "${CLANG_DOXYGEN_QHP_NAMESPACE}")
38     set(clang_doxygen_qhelpgenerator_path "${LLVM_DOXYGEN_QHELPGENERATOR_PATH}")
39     set(clang_doxygen_qhp_cust_filter_name "${CLANG_DOXYGEN_QHP_CUST_FILTER_NAME}")
40     set(clang_doxygen_qhp_cust_filter_attrs "${CLANG_DOXYGEN_QHP_CUST_FILTER_ATTRS}")
41   else()
42     set(clang_doxygen_generate_qhp "NO")
43     set(clang_doxygen_qch_filename "")
44     set(clang_doxygen_qhp_namespace "")
45     set(clang_doxygen_qhelpgenerator_path "")
46     set(clang_doxygen_qhp_cust_filter_name "")
47     set(clang_doxygen_qhp_cust_filter_attrs "")
48   endif()
50   option(LLVM_DOXYGEN_SVG
51     "Use svg instead of png files for doxygen graphs." OFF)
52   if (LLVM_DOXYGEN_SVG)
53     set(DOT_IMAGE_FORMAT "svg")
54   else()
55     set(DOT_IMAGE_FORMAT "png")
56   endif()
58   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxygen.cfg.in
59     ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg @ONLY)
61   set(abs_top_srcdir)
62   set(abs_top_builddir)
63   set(DOT)
64   set(enable_searchengine)
65   set(searchengine_url)
66   set(enable_server_based_search)
67   set(enable_external_search)
68   set(extra_search_mappings)
69   set(clang_doxygen_generate_qhp)
70   set(clang_doxygen_qch_filename)
71   set(clang_doxygen_qhp_namespace)
72   set(clang_doxygen_qhelpgenerator_path)
73   set(clang_doxygen_qhp_cust_filter_name)
74   set(clang_doxygen_qhp_cust_filter_attrs)
75   set(DOT_IMAGE_FORMAT)
77   add_custom_target(doxygen-clang
78     COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg
79     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
80     COMMENT "Generating clang doxygen documentation." VERBATIM)
82   if (LLVM_BUILD_DOCS)
83     add_dependencies(doxygen doxygen-clang)
84   endif()
86   if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
87     install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html
88       DESTINATION docs/html)
89   endif()
90 endif()
91 endif()
93 function (gen_rst_file_from_td output_file td_option source docs_targets)
94   if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${source}")
95     message(FATAL_ERROR "Cannot find source file: ${source} in ${CMAKE_CURRENT_SOURCE_DIR}")
96   endif()
97   get_filename_component(TABLEGEN_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${source}" DIRECTORY)
98   list(APPEND LLVM_TABLEGEN_FLAGS "-I${TABLEGEN_INCLUDE_DIR}")
99   clang_tablegen(${output_file} ${td_option} SOURCE ${source} TARGET "gen-${output_file}")
100   foreach(target ${docs_targets})
101     add_dependencies(${target} gen-${output_file})
102   endforeach()
103 endfunction()
105 if (LLVM_ENABLE_SPHINX)
106   include(AddSphinxTarget)
107   if (SPHINX_FOUND AND (${SPHINX_OUTPUT_HTML} OR ${SPHINX_OUTPUT_MAN}))
108     # Copy rst files to build directory before generating the html
109     # documentation.  Some of the rst files are generated, so they
110     # only exist in the build directory.  Sphinx needs all files in
111     # the same directory in order to generate the html, so we need to
112     # copy all the non-gnerated rst files from the source to the build
113     # directory before we run sphinx.
114     add_custom_target(copy-clang-rst-docs
115       COMMAND "${CMAKE_COMMAND}" -E copy_directory
116       "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}"
118       COMMAND "${CMAKE_COMMAND}" -E copy_if_different
119       "${CMAKE_CURRENT_SOURCE_DIR}/../CodeOwners.rst"
120       "${CMAKE_CURRENT_BINARY_DIR}"
121     )
123     set(docs_targets "")
125     if (${SPHINX_OUTPUT_HTML})
126       add_sphinx_target(html clang SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
128       add_custom_command(TARGET docs-clang-html POST_BUILD
129         COMMAND "${CMAKE_COMMAND}" -E copy
130         "${CMAKE_CURRENT_SOURCE_DIR}/LibASTMatchersReference.html"
131         "${CMAKE_CURRENT_BINARY_DIR}/html/LibASTMatchersReference.html")
133       list(APPEND docs_targets "docs-clang-html")
134     endif()
135     if (${SPHINX_OUTPUT_MAN})
136       add_sphinx_target(man clang SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
137       list(APPEND docs_targets "docs-clang-man")
138     endif()
140     # Generated files
141     gen_rst_file_from_td(AttributeReference.rst -gen-attr-docs ../include/clang/Basic/Attr.td "${docs_targets}")
142     gen_rst_file_from_td(DiagnosticsReference.rst -gen-diag-docs ../include/clang/Basic/Diagnostic.td "${docs_targets}")
143     gen_rst_file_from_td(ClangCommandLineReference.rst -gen-opt-docs ../include/clang/Driver/ClangOptionDocs.td "${docs_targets}")
145     foreach(target ${docs_targets})
146       add_dependencies(${target} copy-clang-rst-docs)
147     endforeach()
148   endif()
149 endif()