148 lines
5.1 KiB
CMake
Vendored
148 lines
5.1 KiB
CMake
Vendored
# Z80 - documentation/CMakeLists.txt
|
|
# ______ ______ ______
|
|
# /\___ \/\ __ \\ __ \
|
|
# \/__/ /\_\ __ \\ \/\ \
|
|
# /\_____\\_____\\_____\
|
|
# Zilog \/_____//_____//_____/ CPU Emulator
|
|
# Copyright (C) 1999-2026 Manuel Sainz de Baranda y Goñi.
|
|
# Released under the terms of the GNU Lesser General Public License v3.
|
|
|
|
find_package(Doxygen REQUIRED)
|
|
find_package(Sphinx REQUIRED)
|
|
find_package(Breathe REQUIRED)
|
|
|
|
set(_api_xml_output "${CMAKE_CURRENT_BINARY_DIR}/API-XML")
|
|
|
|
set(DOXYGEN_BRIEF_MEMBER_DESC YES )
|
|
set(DOXYGEN_ENABLE_PREPROCESSING YES )
|
|
set(DOXYGEN_EXPAND_ONLY_PREDEF NO )
|
|
set(DOXYGEN_FILE_PATTERNS "*.h" )
|
|
set(DOXYGEN_FULL_PATH_NAMES YES )
|
|
set(DOXYGEN_GENERATE_DOCBOOK NO )
|
|
set(DOXYGEN_GENERATE_HTML NO )
|
|
set(DOXYGEN_GENERATE_LATEX NO )
|
|
set(DOXYGEN_GENERATE_MAN NO )
|
|
set(DOXYGEN_GENERATE_RTF NO )
|
|
set(DOXYGEN_GENERATE_XML YES )
|
|
set(DOXYGEN_INLINE_INFO YES )
|
|
set(DOXYGEN_INPUT_ENCODING "UTF-8" )
|
|
set(DOXYGEN_MACRO_EXPANSION YES )
|
|
set(DOXYGEN_MARKDOWN_SUPPORT YES )
|
|
set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES )
|
|
set(DOXYGEN_PREDEFINED "Z_ALWAYS_INLINE=inline" )
|
|
set(DOXYGEN_REPEAT_BRIEF YES )
|
|
set(DOXYGEN_SEARCH_INCLUDES YES )
|
|
set(DOXYGEN_SHOW_INCLUDE_FILES YES )
|
|
set(DOXYGEN_SKIP_FUNCTION_MACROS NO )
|
|
set(DOXYGEN_STRIP_FROM_PATH "${PROJECT_SOURCE_DIR}/API")
|
|
set(DOXYGEN_WARN_IF_DOC_ERROR YES )
|
|
set(DOXYGEN_WARN_IF_UNDOCUMENTED YES )
|
|
set(DOXYGEN_WARNINGS YES )
|
|
set(DOXYGEN_XML_OUTPUT "API-XML" )
|
|
set(DOXYGEN_XML_PROGRAMLISTING YES )
|
|
|
|
get_target_property(DOXYGEN_INCLUDE_PATH Zeta INTERFACE_INCLUDE_DIRECTORIES)
|
|
|
|
file(READ "${PROJECT_SOURCE_DIR}/README" _)
|
|
string(REGEX MATCH ".*Copyright \\(C\\) ([^ ]+) (([^. \t\n]+ ?)*[^. \t\n]+).*" _ ${_})
|
|
set(_copyright_year ${CMAKE_MATCH_1})
|
|
set(_author ${CMAKE_MATCH_2})
|
|
unset(_)
|
|
|
|
doxygen_add_docs(
|
|
${PROJECT_NAME}-API-XML
|
|
"${PROJECT_SOURCE_DIR}/API"
|
|
ALL
|
|
COMMENT "Extracting API reference from ${PROJECT_NAME}")
|
|
|
|
if(${PROJECT_NAME}_WITH_HTML_DOCUMENTATION)
|
|
set(_html_documentation_output "${CMAKE_CURRENT_BINARY_DIR}/HTML")
|
|
|
|
if(${PROJECT_NAME}_SPHINX_HTML_THEME STREQUAL "")
|
|
set(_html_theme_option "")
|
|
else()
|
|
set(_html_theme_option "-Dhtml_theme=${${PROJECT_NAME}_SPHINX_HTML_THEME}")
|
|
endif()
|
|
|
|
add_custom_command(
|
|
OUTPUT "${_html_documentation_output}"
|
|
COMMAND "${Sphinx_BUILD_EXECUTABLE}"
|
|
-b html
|
|
"-Dproject=${PROJECT_NAME}"
|
|
"-Dversion=${PROJECT_VERSION}"
|
|
"-Drelease=${PROJECT_VERSION}"
|
|
"-Dauthor=${_author}"
|
|
"-Dcopyright=${_copyright_year} ${_author}"
|
|
${_html_theme_option}
|
|
"-Dhtml_title=${PROJECT_NAME} Documentation"
|
|
"-Dbreathe_default_project=${PROJECT_NAME}"
|
|
"-Dbreathe_projects.${PROJECT_NAME}=${_api_xml_output}"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
|
"${_html_documentation_output}"
|
|
DEPENDS ${PROJECT_NAME}-API-XML
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
|
COMMENT "Generating documentation in HTML format for ${PROJECT_NAME}")
|
|
|
|
add_custom_target(
|
|
${PROJECT_NAME}-Documentation-HTML ALL
|
|
DEPENDS "${_html_documentation_output}")
|
|
|
|
add_dependencies(${PROJECT_NAME}-Documentation-HTML ${PROJECT_NAME}-API-XML)
|
|
|
|
install(DIRECTORY "${_html_documentation_output}/"
|
|
DESTINATION "${CMAKE_INSTALL_DOCDIR}/documentation"
|
|
COMPONENT ${PROJECT_NAME}_Documentation)
|
|
endif()
|
|
|
|
if(${PROJECT_NAME}_WITH_PDF_DOCUMENTATION)
|
|
find_package(LATEX REQUIRED COMPONENTS PDFLATEX)
|
|
|
|
set(_latex_documentation_output "${CMAKE_CURRENT_BINARY_DIR}/LaTeX")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${_latex_documentation_output}"
|
|
COMMAND "${Sphinx_BUILD_EXECUTABLE}"
|
|
-b latex
|
|
"-Dproject=${PROJECT_NAME}"
|
|
"-Dversion=${PROJECT_VERSION}"
|
|
"-Drelease=${PROJECT_VERSION}"
|
|
"-Dauthor=${_author}"
|
|
"-Dcopyright=${_copyright_year} ${_author}"
|
|
"-Dbreathe_default_project=${PROJECT_NAME}"
|
|
"-Dbreathe_projects.${PROJECT_NAME}=${_api_xml_output}"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
|
"${_latex_documentation_output}"
|
|
DEPENDS ${PROJECT_NAME}-API-XML
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
|
COMMENT "Generating documentation in LaTeX format for ${PROJECT_NAME}")
|
|
|
|
add_custom_target(
|
|
${PROJECT_NAME}-Documentation-LaTeX ALL
|
|
DEPENDS "${_latex_documentation_output}")
|
|
|
|
add_dependencies(${PROJECT_NAME}-Documentation-LaTeX ${PROJECT_NAME}-API-XML)
|
|
|
|
string(TOLOWER ${PROJECT_NAME} _pdf_documentation_output)
|
|
set(_pdf_documentation_output "${_latex_documentation_output}/${_pdf_documentation_output}.pdf")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${_pdf_documentation_output}"
|
|
COMMAND "${CMAKE_MAKE_PROGRAM}"
|
|
MAIN_DEPENDENCY "${_latex_documentation_output}"
|
|
WORKING_DIRECTORY "${_latex_documentation_output}"
|
|
COMMENT "Generating documentation in PDF format for ${PROJECT_NAME}")
|
|
|
|
add_custom_target(
|
|
${PROJECT_NAME}-Documentation-PDF ALL
|
|
DEPENDS "${_pdf_documentation_output}")
|
|
|
|
add_dependencies(${PROJECT_NAME}-Documentation-PDF ${PROJECT_NAME}-Documentation-LaTeX)
|
|
|
|
install(FILES "${_pdf_documentation_output}"
|
|
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
|
|
RENAME "${PROJECT_NAME}-${PROJECT_VERSION}-documentation.pdf"
|
|
COMPONENT ${PROJECT_NAME}_Documentation)
|
|
endif()
|
|
|
|
# documentation/CMakeLists.txt EOF
|