Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modern documentation #20

Merged
merged 3 commits into from
May 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[submodule "cpack.d"]
path = cpack.d
url = https://github.com/coin3d/cpack.d
[submodule "docs/doxygen-awesome"]
path = docs/doxygen-awesome
url = https://github.com/coin3d/doxygen-awesome-css.git
branch = coin3d
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ option(SMALLCHANGE_USE_QT6 "Prefer Qt6 over Qt5 if available" ON)
option(SMALLCHANGE_USE_QT5 "Prefer Qt5 over Qt4 if available" ON)
option(SMALLCHANGE_USE_WX "Prefer wxWidgets over Qt if available" OFF)
option(SMALLCHANGE_BUILD_DOCUMENTATION "Build and install API documentation (requires Doxygen)." OFF)
option(SMALLCHANGE_BUILD_AWESOME_DOCUMENTATION "Build and install API documentation in new modern style (requires Doxygen)." OFF)
cmake_dependent_option(SMALLCHANGE_BUILD_INTERNAL_DOCUMENTATION "Document internal code not part of the API." OFF "SMALLCHANGE_BUILD_DOCUMENTATION" OFF)
cmake_dependent_option(SMALLCHANGE_BUILD_DOC_MAN "Build SmallChange man pages." OFF "SMALLCHANGE_BUILD_DOCUMENTATION" OFF)
cmake_dependent_option(SMALLCHANGE_BUILD_DOC_QTHELP "Build QtHelp documentation." OFF "SMALLCHANGE_BUILD_DOCUMENTATION" OFF)
Expand All @@ -69,6 +70,7 @@ report_prepare(
SMALLCHANGE_USE_QT5
SMALLCHANGE_USE_WX
SMALLCHANGE_BUILD_DOCUMENTATION
SMALLCHANGE_BUILD_AWESOME_DOCUMENTATION
SMALLCHANGE_BUILD_INTERNAL_DOCUMENTATION
SMALLCHANGE_BUILD_DOC_MAN
SMALLCHANGE_BUILD_DOC_QTHELP
Expand Down
101 changes: 101 additions & 0 deletions docs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,104 @@ if(SMALLCHANGE_BUILD_DOCUMENTATION)
message(STATUS "CMAKE_INSTALL_MANDIR ${CMAKE_INSTALL_MANDIR}")
endif()
endif()


# ############################################################################
# Add a target to generate modern API documentation with Doxygen
# ############################################################################
if(SMALLCHANGE_BUILD_AWESOME_DOCUMENTATION)
find_package(Doxygen)
if(NOT DOXYGEN_FOUND)
message(FATAL_ERROR "Doxygen is needed to build the documentation.")
endif()

if(NOT "${Coin_DOC_DIR}" STREQUAL "")
get_filename_component(_coin_versioned_dir ${Coin_DOC_DIR} NAME)
set(DOXYGEN_TAGFILES "${Coin_DOC_DIR}/html/Coin.tag=../../${_coin_versioned_dir}/html")
endif()

find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
# Update submodules as needed
option(GIT_SUBMODULE "Check submodules during build" ON)
if(GIT_SUBMODULE)
message(STATUS "Submodule update")
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
message(FATAL_ERROR "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
endif()
endif()
endif()


# ############################################################################
# Setup documentation options
# ############################################################################
set(GENERATE_HTMLHELP NO)
set(DOXYGEN_GENERATE_MAN NO)
set(GENERATE_QHP NO)
set(GENERATE_TREEVIEW YES)
set(DOXYGEN_INTERNAL_DOCS NO)
set(DOXYGEN_EXTRACT_PRIVATE NO)
set(DOXYGEN_WARN_IF_UNDOCUMENTED NO)
set(DOXYGEN_EXCLUDE)
set(GITHUB_LINK "https://github.com/coin3d/smallchange")
if(SMALLCHANGE_BUILD_INTERNAL_DOCUMENTATION)
set(DOXYGEN_EXTRACT_PRIVATE YES)
set(DOXYGEN_WARN_IF_UNDOCUMENTED NO)
set(DOXYGEN_INTERNAL_DOCS YES)
set(SM_DOCUMENTATION_FILES
${SM_DOCUMENTATION_FILES}
${SM_INTERNAL_DOCUMENTATION_FILES}
CACHE INTERNAL "SM_DOCUMENTATION_FILES"
)
else()
set(SM_DOCUMENTATION_EXCLUDE_SYMBOLS SoProfilerP)
foreach(XF ${SM_INTERNAL_DOCUMENTATION_FILES})
set(DOXYGEN_EXCLUDE "${DOXYGEN_EXCLUDE} ${XF} \\\n")
endforeach(XF)
endif()
set(DOXYGEN_INPUT)
list(REMOVE_DUPLICATES SM_DOCUMENTATION_FILES)
foreach(XF ${SM_DOCUMENTATION_FILES})
set(DOXYGEN_INPUT "${DOXYGEN_INPUT} ${XF} \\\n")
endforeach(XF)
dump_variable(
SM_DOCUMENTATION_FILES
DOXYGEN_INPUT
)
set(DOXYGEN_EXCLUDE_SYMBOLS)
foreach(XF ${SM_DOCUMENTATION_EXCLUDE_SYMBOLS})
set(DOXYGEN_EXCLUDE_SYMBOLS "${DOXYGEN_EXCLUDE_SYMBOLS} ${XF} \\\n")
endforeach(XF)

set(DOXYFILE_AWESOME "${CMAKE_CURRENT_BINARY_DIR}//Doxyfile_awesome")
set(HTML_HEADER_AWESOME "${CMAKE_CURRENT_BINARY_DIR}/header_awesome.html")
set(DOXYGEN_OUTPUT_AWESOME "${CMAKE_BINARY_DIR}/html_awesome/index.html")
dump_variable(DOXYGEN_TAGFILES)
configure_file(smallchange.doxygen.awesome.cmake.in ${DOXYFILE_AWESOME} @ONLY)
configure_file(doxygen-awesome/doxygen-custom/header.html.cmake.in ${HTML_HEADER_AWESOME} @ONLY)

# ############################################################################
# Setup documentation targets
# ############################################################################

add_custom_command(
OUTPUT ${DOXYGEN_OUTPUT_AWESOME}
COMMAND ${CMAKE_COMMAND} -E echo_append "Generating modern API documentation with Doxygen "
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_AWESOME}
COMMAND ${CMAKE_COMMAND} -E echo "done."
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
DEPENDS ${DOXYFILE_AWESOME}
)
add_custom_target(documentation_awesome ALL DEPENDS ${DOXYGEN_OUTPUT_AWESOME})

# ############################################################################
# Install built documentation files
# ############################################################################
install(DIRECTORY "${CMAKE_BINARY_DIR}/html_awesome" DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT documentation REGEX ".*\\.(chm|qch)" EXCLUDE)
endif()


1 change: 1 addition & 0 deletions docs/doxygen-awesome
Submodule doxygen-awesome added at 621765
Loading
Loading