blob: 4e1f9db9f0ef485594e52b10d2b6f3e22b2cfe36 [file] [log] [blame]
Carles Cufiae699342018-07-09 14:12:17 +02001cmake_minimum_required(VERSION 3.8.2)
2project(Zephyr-Kernel-Doc VERSION ${PROJECT_VERSION} LANGUAGES)
3
4set(ZEPHYR_BASE $ENV{ZEPHYR_BASE})
5
6message(STATUS "Zephyr base: ${ZEPHYR_BASE}")
7
8find_package(PythonInterp 3.4)
9set(DOXYGEN_SKIP_DOT True)
10find_package(Doxygen REQUIRED)
11
12find_program(
13 SPHINXBUILD
14 sphinx-build
15 )
16if(${SPHINXBUILD} STREQUAL SPHINXBUILD-NOTFOUND)
17 message(FATAL_ERROR "The 'sphinx-build' command was not found. Make sure you have Sphinx installed.")
18endif()
19
20if(NOT DEFINED SPHINXOPTS)
21 set(SPHINXOPTS -q)
Carles Cufid505ca72018-07-13 12:37:13 +020022else()
23 separate_arguments(SPHINXOPTS)
Carles Cufiae699342018-07-09 14:12:17 +020024endif()
25
26if(NOT DEFINED DOC_TAG)
27 set(DOC_TAG development)
28endif()
29
30# Internal variables.
Carles Cufi2af9a9e2018-07-13 15:32:36 +020031set(ALLSPHINXOPTS -d ${CMAKE_CURRENT_BINARY_DIR}/doctrees ${SPHINXOPTS})
Carles Cufiae699342018-07-09 14:12:17 +020032# the i18n builder cannot share the environment and doctrees with the others
Carles Cufid505ca72018-07-13 12:37:13 +020033set(I18NSPHINXOPTS ${SPHINXOPTS})
Carles Cufiae699342018-07-09 14:12:17 +020034
Carles Cufi2af9a9e2018-07-13 15:32:36 +020035set(DOXYFILE ${CMAKE_CURRENT_LIST_DIR}/zephyr.doxyfile)
36set(BUILD_DOXYFILE ${CMAKE_CURRENT_BINARY_DIR}/build.doxyfile)
Carles Cufiae699342018-07-09 14:12:17 +020037set(DOC_LOG doc.log)
38set(DOXY_LOG doxy.log)
39set(SPHINX_LOG sphinx.log)
40set(DOC_WARN doc.warnings)
41
42configure_file(${DOXYFILE} ${BUILD_DOXYFILE} COPYONLY)
43file(APPEND ${BUILD_DOXYFILE} "STRIP_FROM_PATH=${ZEPHYR_BASE}\n")
44
45set(ARGS ${BUILD_DOXYFILE})
46
47add_custom_target(
48 doxy
49 COMMAND ${CMAKE_COMMAND}
50 -DCOMMAND=${DOXYGEN_EXECUTABLE}
51 -DARGS="${ARGS}"
52 -DOUTPUT_FILE=${DOXY_LOG}
53 -DERROR_FILE=${DOXY_LOG}
Carles Cufi2af9a9e2018-07-13 15:32:36 +020054 -DWORKING_DIRECTORY=${CMAKE_CURRENT_LIST_DIR}
Carles Cufi45d58a72018-07-12 17:34:29 +020055 -P ${ZEPHYR_BASE}/cmake/util/execute_process.cmake
Carles Cufiae699342018-07-09 14:12:17 +020056)
57
58add_custom_target(
59 pristine
60 COMMAND ${CMAKE_COMMAND} -P ${ZEPHYR_BASE}/cmake/pristine.cmake
Carles Cufi2af9a9e2018-07-13 15:32:36 +020061 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_LIST_DIR}/html
62 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_LIST_DIR}/xml
63 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_LIST_DIR}/doxygen
64 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_LIST_DIR}/latex
65 COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_LIST_DIR}/reference/kconfig/*.rst
66 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_LIST_DIR}/samples
67 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_LIST_DIR}/boards
68 COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_LIST_DIR}/${DOXY_LOG}
69 COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_LIST_DIR}/${SPHINX_LOG}
70 COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_LIST_DIR}/${DOC_LOG}
Carles Cufiae699342018-07-09 14:12:17 +020071)
72
73add_custom_target(
74 htmldocs
75 DEPENDS doxy html
76)
77
78add_custom_target(
79 content
80 COMMAND ${PYTHON_EXECUTABLE} scripts/extract_content.py
Carles Cufi2af9a9e2018-07-13 15:32:36 +020081 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
Carles Cufiae699342018-07-09 14:12:17 +020082)
83
84if(WIN32)
85 set(SEP ;)
86else()
87 set(SEP :)
88endif()
89
90add_custom_target(
91 kconfig
92 ${CMAKE_COMMAND} -E env
93 PYTHONPATH="${ZEPHYR_BASE}/scripts/kconfig${SEP}$ENV{PYTHONPATH}"
94 srctree=${ZEPHYR_BASE}
95 ENV_VAR_BOARD_DIR=boards/*/*/
96 ENV_VAR_ARCH=*
97 KERNELVERSION=${PROJECT_VERSION}
98 SRCARCH=x86
99 ${PYTHON_EXECUTABLE} scripts/genrest.py ../Kconfig reference/kconfig/
Carles Cufi2af9a9e2018-07-13 15:32:36 +0200100 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
Carles Cufiae699342018-07-09 14:12:17 +0200101)
102
103set(KI_SCRIPT ${ZEPHYR_BASE}/scripts/filter-known-issues.py)
104set(CONFIG_DIR ${ZEPHYR_BASE}/.known-issues/doc)
105
106add_custom_target(
107 html
Carles Cufi2af9a9e2018-07-13 15:32:36 +0200108 COMMAND ${SPHINXBUILD} -w ${SPHINX_LOG} -N -t ${DOC_TAG} -b html ${ALLSPHINXOPTS} ${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_BINARY_DIR}/html
Carles Cufiae699342018-07-09 14:12:17 +0200109 # Merge the Doxygen and Sphinx logs into a single file
110 COMMAND ${CMAKE_COMMAND} -P ${ZEPHYR_BASE}/cmake/util/fmerge.cmake ${DOC_LOG} ${DOXY_LOG} ${SPHINX_LOG}
111 COMMAND ${PYTHON_EXECUTABLE} ${KI_SCRIPT} --config-dir ${CONFIG_DIR} --errors ${DOC_WARN} --warnings ${DOC_WARN} ${DOC_LOG}
112 COMMAND ${CMAKE_COMMAND} -E remove_directory samples
113 COMMAND ${CMAKE_COMMAND} -E remove_directory boards
114 DEPENDS doxy content kconfig
Carles Cufi2af9a9e2018-07-13 15:32:36 +0200115 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
Carles Cufiae699342018-07-09 14:12:17 +0200116)