Austin Schuh | 208337d | 2022-01-01 14:29:11 -0800 | [diff] [blame^] | 1 | find_package(Doxygen QUIET) |
| 2 | if (PICO_SDK_TOP_LEVEL_PROJECT AND ${DOXYGEN_FOUND}) |
| 3 | set(PICO_BUILD_DOCS_DEFAULT 1) |
| 4 | endif() |
| 5 | option(PICO_BUILD_DOCS "Build HTML Doxygen docs" ${PICO_BUILD_DOCS_DEFAULT}) |
| 6 | |
| 7 | if (DEFINED ENV{PICO_EXAMPLES_PATH} AND NOT PICO_EXAMPLES_PATH) |
| 8 | set(PICO_EXAMPLES_PATH $ENV{PICO_EXAMPLES_PATH}) |
| 9 | message("Using PICO_EXAMPLES_PATH from environment ('${PICO_EXAMPLES_PATH}')") |
| 10 | endif() |
| 11 | |
| 12 | if(PICO_BUILD_DOCS) |
| 13 | if(NOT DOXYGEN_FOUND) |
| 14 | message(FATAL_ERROR "Doxygen is needed to build the documentation.") |
| 15 | endif() |
| 16 | |
| 17 | include(ExternalProject) |
| 18 | |
| 19 | if(PICO_EXAMPLES_PATH) |
| 20 | get_filename_component(PICO_EXAMPLES_PATH "${PICO_EXAMPLES_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") |
| 21 | if (EXISTS ${PICO_EXAMPLES_PATH}) |
| 22 | message("Documentation example code will come from ${PICO_EXAMPLES_PATH}") |
| 23 | else() |
| 24 | message(WARNING "Documentation example code configured to come from ${PICO_EXAMPLES_PATH}, but that path does not exist") |
| 25 | endif() |
| 26 | add_custom_target(doc-pico-examples) |
| 27 | else() |
| 28 | ExternalProject_Add(doc-pico-examples |
| 29 | GIT_REPOSITORY https://github.com/raspberrypi/pico-examples |
| 30 | GIT_TAG master |
| 31 | CONFIGURE_COMMAND "" |
| 32 | BUILD_COMMAND "" |
| 33 | INSTALL_COMMAND "" |
| 34 | ) |
| 35 | ExternalProject_Get_property(doc-pico-examples SOURCE_DIR) |
| 36 | ExternalProject_Get_property(doc-pico-examples GIT_REPOSITORY) |
| 37 | ExternalProject_Get_property(doc-pico-examples GIT_TAG) |
| 38 | set(PICO_EXAMPLES_PATH ${SOURCE_DIR}) |
| 39 | message("Documentation example code will come from git repo ${GIT_REPOSITORY}, branch ${GIT_TAG}") |
| 40 | endif() |
| 41 | |
| 42 | set(DOXY_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/doxygen") |
| 43 | set(DOXY_INPUT_DIRS "${PICO_DOXYGEN_PATHS}") |
| 44 | set(DOXY_EXCLUDE_DIRS "${PICO_DOXYGEN_EXCLUDE_PATHS}") |
| 45 | set(DOXY_EXAMPLE_DIR "${PICO_EXAMPLES_PATH}") |
| 46 | |
| 47 | set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) |
| 48 | set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) |
| 49 | |
| 50 | configure_file(${doxyfile_in} ${doxyfile} @ONLY) |
| 51 | |
| 52 | add_custom_target(docs |
| 53 | COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} |
| 54 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 55 | COMMENT "Generating API documentation with Doxygen" |
| 56 | VERBATIM) |
| 57 | |
| 58 | add_dependencies(docs doc-pico-examples) |
| 59 | endif() |