Separate the CMake logic for Lua and Python to clearly distinguish between code specific to either scripting language and the code shared by both. What this patch does is: - Move Python specific code into the bindings/python subdirectory. - Move the Lua specific code into the bindings/lua subdirectory. - Add the _python suffix to Python specific functions/targets. - Fix a dependency issue that would check the binding instead of whether the scripting language is enabled. Note that this patch also changes where the bindings are generated, which might affect downstream projects that check them in. Differential revision: https://reviews.llvm.org/D85708
75 lines
2.6 KiB
CMake
75 lines
2.6 KiB
CMake
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()
|
|
|
|
if (LLDB_ENABLE_PYTHON)
|
|
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_bindings_dir swig_wrapper_python BINARY_DIR)
|
|
add_custom_target(lldb-python-doc-package
|
|
COMMAND "${CMAKE_COMMAND}" -E copy "${lldb_bindings_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_python)
|
|
|
|
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_python lldb-python-doc-package)
|
|
else()
|
|
message(STATUS "Could NOT find epydoc")
|
|
endif()
|
|
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()
|
|
|
|
if (${SPHINX_OUTPUT_MAN})
|
|
add_sphinx_target(man lldb)
|
|
endif()
|
|
endif()
|
|
endif()
|