summaryrefslogtreecommitdiffstats
path: root/lldb/docs/CMakeLists.txt
blob: bfdd50badf6578d841a3f63edcf38b3b1a051034 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
include(FindDoxygen)

if(DOXYGEN_FOUND)
  set(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}/..)
  set(DOT dot)
  set(PACKAGE_VERSION mainline)
  set(abs_top_builddir ..)
  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxygen.cfg.in
  ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg @ONLY)

  add_custom_target(lldb-cpp-doc
    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMENT "Generating LLDB C++ API reference with Doxygen" VERBATIM
  )
endif()

find_program(EPYDOC_EXECUTABLE NAMES epydoc epydoc.py)
if(EPYDOC_EXECUTABLE)
  message(STATUS "Found epydoc - ${EPYDOC_EXECUTABLE}")

  find_program(DOT_EXECUTABLE dot)
  if(DOT_EXECUTABLE)
    set(EPYDOC_OPTIONS ${EPYDOC_OPTIONS} --graph all --dotpath ${DOT_EXECUTABLE})
    message(STATUS "Found dot - ${DOT_EXECUTABLE}")
  endif()

  # Pretend to make a python package so that we can generate the reference.
  # Because we don't build liblldb, epydoc will complain that the import of
  # _lldb.so failed, but that doesn't prevent it from generating the docs.
  file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lldb)
  get_target_property(lldb_scripts_dir swig_wrapper BINARY_DIR)
  add_custom_target(lldb-python-doc-package
    COMMAND "${CMAKE_COMMAND}" -E copy "${lldb_scripts_dir}/lldb.py" "${CMAKE_CURRENT_BINARY_DIR}/lldb/__init__.py"
    COMMENT "Copying lldb.py to pretend package.")
  add_dependencies(lldb-python-doc-package swig_wrapper)

  set(DOC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/doc")
  file(MAKE_DIRECTORY "${DOC_DIR}")
  add_custom_target(lldb-python-doc
    ${EPYDOC_EXECUTABLE}
    --html
    lldb
    -o ${CMAKE_CURRENT_BINARY_DIR}/python_reference
    --name "LLDB python API"
    --url "http://lldb.llvm.org"
    ${EPYDOC_OPTIONS}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMENT "Generating LLDB Python API reference with epydoc" VERBATIM
  )
  add_dependencies(lldb-python-doc swig_wrapper lldb-python-doc-package)
else()
  message(STATUS "Could NOT find epydoc")
endif()

if (LLVM_ENABLE_SPHINX)
  include(AddSphinxTarget)
  if (SPHINX_FOUND)
    if (${SPHINX_OUTPUT_HTML})
      add_sphinx_target(html lldb)
      # Sphinx does not reliably update the custom CSS files, so force
      # a clean rebuild of the documentation every time.
      add_custom_target(clean-lldb-html COMMAND "${CMAKE_COMMAND}" -E
        remove_directory ${CMAKE_CURRENT_BINARY_DIR}/html)
      add_dependencies(docs-lldb-html clean-lldb-html)
    endif()
  endif()
endif()
OpenPOWER on IntegriCloud