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