mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-14 12:12:07 +00:00
6498aff249
All the code required to generate the language bindings for Python and Lua lives under scripts, even though the majority of this code aren't scripts at all, and surrounded by scripts that are totally unrelated. I've reorganized these files and moved everything related to the language bindings into a new top-level directory named bindings. This makes the corresponding files self contained and much more discoverable. Differential revision: https://reviews.llvm.org/D72437
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 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)
|
|
|
|
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()
|
|
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()
|