llvm-project/offload/docs/CMakeLists.txt
Kenneth Benzie (Benie) cea33304c0
[Offload] Add Offload API Sphinx documentation (#147323)
* Add spec generation to offload-tblgen tool
* This patch adds generation of Sphinx compatible reStructuedText
utilizing the C domain to document the Offload API directly from the
spec definition `.td` files.
* Add Sphinx HTML documentation target
* Introduces the `docs-offload-html` target when CMake is configured
with `LLVM_ENABLE_SPHINX=ON` and `SPHINX_OUTPUT_HTML=ON`. Utilized
`offload-tblgen -gen-spen` to generate Offload API specification docs.
2025-07-10 11:50:51 +01:00

38 lines
1.6 KiB
CMake

if(LLVM_ENABLE_SPHINX)
include(AddSphinxTarget)
if(SPHINX_FOUND AND SPHINX_OUTPUT_HTML)
# Generate offload-api.rst from OffloadAPI.td
set(LLVM_TARGET_DEFINITIONS
${OFFLOAD_SOURCE_DIR}/liboffload/API/OffloadAPI.td)
tablegen(OFFLOAD source/offload-api.rst -gen-doc
EXTRA_INCLUDES ${OFFLOAD_SOURCE_DIR}/liboffload/API)
add_public_tablegen_target(OffloadDocsGenerate)
# Due to Sphinx only allowing a single source direcotry and the fact we
# only generate a single file, copy offload-api.rst to the source directory
# to be included in the generated documentation.
# Additionally, copy the llvm-theme into the Sphinx source directory.
# A .gitignore file ensures the copied files will not be added to the
# repository.
add_custom_target(OffloadDocsCopy
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/source/offload-api.rst
${CMAKE_CURRENT_SOURCE_DIR}/offload-api.rst
COMMAND ${CMAKE_COMMAND} -E copy
${OFFLOAD_SOURCE_DIR}/../clang/www/favicon.ico
${CMAKE_CURRENT_SOURCE_DIR}/_static/favicon.ico
COMMAND ${CMAKE_COMMAND} -E copy
${OFFLOAD_SOURCE_DIR}/../llvm/docs/_static/llvm.css
${CMAKE_CURRENT_SOURCE_DIR}/_static/llvm.css
COMMAND ${CMAKE_COMMAND} -E copy_directory
${OFFLOAD_SOURCE_DIR}/../llvm/docs/_themes
${CMAKE_CURRENT_SOURCE_DIR}/_themes
)
add_dependencies(OffloadDocsCopy OffloadDocsGenerate)
# Generate the HTML documentation, the docs-offload-html target.
add_sphinx_target(html offload)
add_dependencies(docs-offload-html OffloadDocsCopy)
endif()
endif()