xref: /aosp_15_r20/external/clang/docs/CMakeLists.txt (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li
2*67e74705SXin Liif (DOXYGEN_FOUND)
3*67e74705SXin Liif (LLVM_ENABLE_DOXYGEN)
4*67e74705SXin Li  set(abs_srcdir ${CMAKE_CURRENT_SOURCE_DIR})
5*67e74705SXin Li  set(abs_builddir ${CMAKE_CURRENT_BINARY_DIR})
6*67e74705SXin Li
7*67e74705SXin Li  if (HAVE_DOT)
8*67e74705SXin Li    set(DOT ${LLVM_PATH_DOT})
9*67e74705SXin Li  endif()
10*67e74705SXin Li
11*67e74705SXin Li  if (LLVM_DOXYGEN_EXTERNAL_SEARCH)
12*67e74705SXin Li    set(enable_searchengine "YES")
13*67e74705SXin Li    set(searchengine_url "${LLVM_DOXYGEN_SEARCHENGINE_URL}")
14*67e74705SXin Li    set(enable_server_based_search "YES")
15*67e74705SXin Li    set(enable_external_search "YES")
16*67e74705SXin Li    set(extra_search_mappings "${LLVM_DOXYGEN_SEARCH_MAPPINGS}")
17*67e74705SXin Li  else()
18*67e74705SXin Li    set(enable_searchengine "NO")
19*67e74705SXin Li    set(searchengine_url "")
20*67e74705SXin Li    set(enable_server_based_search "NO")
21*67e74705SXin Li    set(enable_external_search "NO")
22*67e74705SXin Li    set(extra_search_mappings "")
23*67e74705SXin Li  endif()
24*67e74705SXin Li
25*67e74705SXin Li  # If asked, configure doxygen for the creation of a Qt Compressed Help file.
26*67e74705SXin Li  if (LLVM_ENABLE_DOXYGEN_QT_HELP)
27*67e74705SXin Li    set(CLANG_DOXYGEN_QCH_FILENAME "org.llvm.clang.qch" CACHE STRING
28*67e74705SXin Li      "Filename of the Qt Compressed help file")
29*67e74705SXin Li    set(CLANG_DOXYGEN_QHP_NAMESPACE "org.llvm.clang" CACHE STRING
30*67e74705SXin Li      "Namespace under which the intermediate Qt Help Project file lives")
31*67e74705SXin Li    set(CLANG_DOXYGEN_QHP_CUST_FILTER_NAME "Clang ${CLANG_VERSION}" CACHE STRING
32*67e74705SXin Li      "See http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters")
33*67e74705SXin Li    set(CLANG_DOXYGEN_QHP_CUST_FILTER_ATTRS "Clang,${CLANG_VERSION}" CACHE STRING
34*67e74705SXin Li      "See http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes")
35*67e74705SXin Li    set(clang_doxygen_generate_qhp "YES")
36*67e74705SXin Li    set(clang_doxygen_qch_filename "${CLANG_DOXYGEN_QCH_FILENAME}")
37*67e74705SXin Li    set(clang_doxygen_qhp_namespace "${CLANG_DOXYGEN_QHP_NAMESPACE}")
38*67e74705SXin Li    set(clang_doxygen_qhelpgenerator_path "${LLVM_DOXYGEN_QHELPGENERATOR_PATH}")
39*67e74705SXin Li    set(clang_doxygen_qhp_cust_filter_name "${CLANG_DOXYGEN_QHP_CUST_FILTER_NAME}")
40*67e74705SXin Li    set(clang_doxygen_qhp_cust_filter_attrs "${CLANG_DOXYGEN_QHP_CUST_FILTER_ATTRS}")
41*67e74705SXin Li  else()
42*67e74705SXin Li    set(clang_doxygen_generate_qhp "NO")
43*67e74705SXin Li    set(clang_doxygen_qch_filename "")
44*67e74705SXin Li    set(clang_doxygen_qhp_namespace "")
45*67e74705SXin Li    set(clang_doxygen_qhelpgenerator_path "")
46*67e74705SXin Li    set(clang_doxygen_qhp_cust_filter_name "")
47*67e74705SXin Li    set(clang_doxygen_qhp_cust_filter_attrs "")
48*67e74705SXin Li  endif()
49*67e74705SXin Li
50*67e74705SXin Li  option(LLVM_DOXYGEN_SVG
51*67e74705SXin Li    "Use svg instead of png files for doxygen graphs." OFF)
52*67e74705SXin Li  if (LLVM_DOXYGEN_SVG)
53*67e74705SXin Li    set(DOT_IMAGE_FORMAT "svg")
54*67e74705SXin Li  else()
55*67e74705SXin Li    set(DOT_IMAGE_FORMAT "png")
56*67e74705SXin Li  endif()
57*67e74705SXin Li
58*67e74705SXin Li  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxygen.cfg.in
59*67e74705SXin Li    ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg @ONLY)
60*67e74705SXin Li
61*67e74705SXin Li  set(abs_top_srcdir)
62*67e74705SXin Li  set(abs_top_builddir)
63*67e74705SXin Li  set(DOT)
64*67e74705SXin Li  set(enable_searchengine)
65*67e74705SXin Li  set(searchengine_url)
66*67e74705SXin Li  set(enable_server_based_search)
67*67e74705SXin Li  set(enable_external_search)
68*67e74705SXin Li  set(extra_search_mappings)
69*67e74705SXin Li  set(clang_doxygen_generate_qhp)
70*67e74705SXin Li  set(clang_doxygen_qch_filename)
71*67e74705SXin Li  set(clang_doxygen_qhp_namespace)
72*67e74705SXin Li  set(clang_doxygen_qhelpgenerator_path)
73*67e74705SXin Li  set(clang_doxygen_qhp_cust_filter_name)
74*67e74705SXin Li  set(clang_doxygen_qhp_cust_filter_attrs)
75*67e74705SXin Li  set(DOT_IMAGE_FORMAT)
76*67e74705SXin Li
77*67e74705SXin Li  add_custom_target(doxygen-clang
78*67e74705SXin Li    COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg
79*67e74705SXin Li    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
80*67e74705SXin Li    COMMENT "Generating clang doxygen documentation." VERBATIM)
81*67e74705SXin Li
82*67e74705SXin Li  if (LLVM_BUILD_DOCS)
83*67e74705SXin Li    add_dependencies(doxygen doxygen-clang)
84*67e74705SXin Li  endif()
85*67e74705SXin Li
86*67e74705SXin Li  if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
87*67e74705SXin Li    install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html
88*67e74705SXin Li      DESTINATION docs/html)
89*67e74705SXin Li  endif()
90*67e74705SXin Liendif()
91*67e74705SXin Liendif()
92*67e74705SXin Li
93*67e74705SXin Liif (LLVM_ENABLE_SPHINX)
94*67e74705SXin Li  if (SPHINX_FOUND)
95*67e74705SXin Li    include(AddSphinxTarget)
96*67e74705SXin Li    if (${SPHINX_OUTPUT_HTML})
97*67e74705SXin Li      add_sphinx_target(html clang)
98*67e74705SXin Li      add_custom_command(TARGET docs-clang-html POST_BUILD
99*67e74705SXin Li        COMMAND ${CMAKE_COMMAND} -E copy
100*67e74705SXin Li        "${CMAKE_CURRENT_SOURCE_DIR}/LibASTMatchersReference.html"
101*67e74705SXin Li        "${CMAKE_CURRENT_BINARY_DIR}/html/LibASTMatchersReference.html")
102*67e74705SXin Li    endif()
103*67e74705SXin Li    if (${SPHINX_OUTPUT_MAN})
104*67e74705SXin Li      add_sphinx_target(man clang)
105*67e74705SXin Li    endif()
106*67e74705SXin Li  endif()
107*67e74705SXin Liendif()
108