blob: 45fd1d6096f5c8f49f642f04a800f01ff8fa3912 [file] [log] [blame]
Austin Schuh208337d2022-01-01 14:29:11 -08001find_package(Doxygen QUIET)
2if (PICO_SDK_TOP_LEVEL_PROJECT AND ${DOXYGEN_FOUND})
3 set(PICO_BUILD_DOCS_DEFAULT 1)
4endif()
5option(PICO_BUILD_DOCS "Build HTML Doxygen docs" ${PICO_BUILD_DOCS_DEFAULT})
6
7if (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}')")
10endif()
11
12if(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)
59endif()