xref: /openbsd/gnu/llvm/lldb/docs/CMakeLists.txt (revision 771fbea0)
1include(FindDoxygen)
2
3if(DOXYGEN_FOUND)
4  set(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}/..)
5  set(DOT dot)
6  set(PACKAGE_VERSION mainline)
7  set(abs_top_builddir ..)
8  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxygen.cfg.in
9  ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg @ONLY)
10
11  add_custom_target(lldb-cpp-doc
12    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg
13    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
14    COMMENT "Generating LLDB C++ API reference with Doxygen" VERBATIM
15  )
16endif()
17
18if (LLDB_ENABLE_PYTHON)
19  find_program(EPYDOC_EXECUTABLE NAMES epydoc epydoc.py)
20  if(EPYDOC_EXECUTABLE)
21    message(STATUS "Found epydoc - ${EPYDOC_EXECUTABLE}")
22
23    find_program(DOT_EXECUTABLE dot)
24    if(DOT_EXECUTABLE)
25      set(EPYDOC_OPTIONS ${EPYDOC_OPTIONS} --graph all --dotpath ${DOT_EXECUTABLE})
26      message(STATUS "Found dot - ${DOT_EXECUTABLE}")
27    endif()
28
29    # Pretend to make a python package so that we can generate the reference.
30    # Because we don't build liblldb, epydoc will complain that the import of
31    # _lldb.so failed, but that doesn't prevent it from generating the docs.
32    file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lldb)
33    get_target_property(lldb_bindings_dir swig_wrapper BINARY_DIR)
34    add_custom_target(lldb-python-doc-package
35      COMMAND "${CMAKE_COMMAND}" -E copy "${lldb_bindings_dir}/lldb.py" "${CMAKE_CURRENT_BINARY_DIR}/lldb/__init__.py"
36      COMMENT "Copying lldb.py to pretend package.")
37    add_dependencies(lldb-python-doc-package swig_wrapper)
38
39    set(DOC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/doc")
40    file(MAKE_DIRECTORY "${DOC_DIR}")
41    add_custom_target(lldb-python-doc
42      ${EPYDOC_EXECUTABLE}
43      --html
44      lldb
45      -o ${CMAKE_CURRENT_BINARY_DIR}/python_reference
46      --name "LLDB python API"
47      --url "http://lldb.llvm.org"
48      ${EPYDOC_OPTIONS}
49      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
50      COMMENT "Generating LLDB Python API reference with epydoc" VERBATIM
51    )
52    add_dependencies(lldb-python-doc swig_wrapper lldb-python-doc-package)
53  else()
54    message(STATUS "Could NOT find epydoc")
55  endif()
56endif ()
57
58if (LLVM_ENABLE_SPHINX)
59  include(AddSphinxTarget)
60  if (SPHINX_FOUND)
61    if (${SPHINX_OUTPUT_HTML})
62      add_sphinx_target(html lldb)
63      # Sphinx does not reliably update the custom CSS files, so force
64      # a clean rebuild of the documentation every time.
65      add_custom_target(clean-lldb-html COMMAND "${CMAKE_COMMAND}" -E
66        remove_directory ${CMAKE_CURRENT_BINARY_DIR}/html)
67      add_dependencies(docs-lldb-html clean-lldb-html)
68    endif()
69
70    if (${SPHINX_OUTPUT_MAN})
71      add_sphinx_target(man lldb)
72    endif()
73  endif()
74endif()
75