Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 1 | cmake_minimum_required(VERSION 3.8.2) |
| 2 | project(Zephyr-Kernel-Doc VERSION ${PROJECT_VERSION} LANGUAGES) |
| 3 | |
| 4 | set(ZEPHYR_BASE $ENV{ZEPHYR_BASE}) |
| 5 | |
| 6 | message(STATUS "Zephyr base: ${ZEPHYR_BASE}") |
| 7 | |
| 8 | find_package(PythonInterp 3.4) |
| 9 | set(DOXYGEN_SKIP_DOT True) |
| 10 | find_package(Doxygen REQUIRED) |
| 11 | |
| 12 | find_program( |
| 13 | SPHINXBUILD |
| 14 | sphinx-build |
| 15 | ) |
| 16 | if(${SPHINXBUILD} STREQUAL SPHINXBUILD-NOTFOUND) |
| 17 | message(FATAL_ERROR "The 'sphinx-build' command was not found. Make sure you have Sphinx installed.") |
| 18 | endif() |
| 19 | |
| 20 | if(NOT DEFINED SPHINXOPTS) |
| 21 | set(SPHINXOPTS -q) |
Carles Cufi | d505ca7 | 2018-07-13 12:37:13 +0200 | [diff] [blame] | 22 | else() |
| 23 | separate_arguments(SPHINXOPTS) |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 24 | endif() |
| 25 | |
| 26 | if(NOT DEFINED DOC_TAG) |
| 27 | set(DOC_TAG development) |
| 28 | endif() |
| 29 | |
| 30 | # Internal variables. |
Carles Cufi | 2af9a9e | 2018-07-13 15:32:36 +0200 | [diff] [blame^] | 31 | set(ALLSPHINXOPTS -d ${CMAKE_CURRENT_BINARY_DIR}/doctrees ${SPHINXOPTS}) |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 32 | # the i18n builder cannot share the environment and doctrees with the others |
Carles Cufi | d505ca7 | 2018-07-13 12:37:13 +0200 | [diff] [blame] | 33 | set(I18NSPHINXOPTS ${SPHINXOPTS}) |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 34 | |
Carles Cufi | 2af9a9e | 2018-07-13 15:32:36 +0200 | [diff] [blame^] | 35 | set(DOXYFILE ${CMAKE_CURRENT_LIST_DIR}/zephyr.doxyfile) |
| 36 | set(BUILD_DOXYFILE ${CMAKE_CURRENT_BINARY_DIR}/build.doxyfile) |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 37 | set(DOC_LOG doc.log) |
| 38 | set(DOXY_LOG doxy.log) |
| 39 | set(SPHINX_LOG sphinx.log) |
| 40 | set(DOC_WARN doc.warnings) |
| 41 | |
| 42 | configure_file(${DOXYFILE} ${BUILD_DOXYFILE} COPYONLY) |
| 43 | file(APPEND ${BUILD_DOXYFILE} "STRIP_FROM_PATH=${ZEPHYR_BASE}\n") |
| 44 | |
| 45 | set(ARGS ${BUILD_DOXYFILE}) |
| 46 | |
| 47 | add_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 Cufi | 2af9a9e | 2018-07-13 15:32:36 +0200 | [diff] [blame^] | 54 | -DWORKING_DIRECTORY=${CMAKE_CURRENT_LIST_DIR} |
Carles Cufi | 45d58a7 | 2018-07-12 17:34:29 +0200 | [diff] [blame] | 55 | -P ${ZEPHYR_BASE}/cmake/util/execute_process.cmake |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 56 | ) |
| 57 | |
| 58 | add_custom_target( |
| 59 | pristine |
| 60 | COMMAND ${CMAKE_COMMAND} -P ${ZEPHYR_BASE}/cmake/pristine.cmake |
Carles Cufi | 2af9a9e | 2018-07-13 15:32:36 +0200 | [diff] [blame^] | 61 | 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 Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 71 | ) |
| 72 | |
| 73 | add_custom_target( |
| 74 | htmldocs |
| 75 | DEPENDS doxy html |
| 76 | ) |
| 77 | |
| 78 | add_custom_target( |
| 79 | content |
| 80 | COMMAND ${PYTHON_EXECUTABLE} scripts/extract_content.py |
Carles Cufi | 2af9a9e | 2018-07-13 15:32:36 +0200 | [diff] [blame^] | 81 | WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 82 | ) |
| 83 | |
| 84 | if(WIN32) |
| 85 | set(SEP ;) |
| 86 | else() |
| 87 | set(SEP :) |
| 88 | endif() |
| 89 | |
| 90 | add_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 Cufi | 2af9a9e | 2018-07-13 15:32:36 +0200 | [diff] [blame^] | 100 | WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 101 | ) |
| 102 | |
| 103 | set(KI_SCRIPT ${ZEPHYR_BASE}/scripts/filter-known-issues.py) |
| 104 | set(CONFIG_DIR ${ZEPHYR_BASE}/.known-issues/doc) |
| 105 | |
| 106 | add_custom_target( |
| 107 | html |
Carles Cufi | 2af9a9e | 2018-07-13 15:32:36 +0200 | [diff] [blame^] | 108 | COMMAND ${SPHINXBUILD} -w ${SPHINX_LOG} -N -t ${DOC_TAG} -b html ${ALLSPHINXOPTS} ${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_BINARY_DIR}/html |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 109 | # 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 Cufi | 2af9a9e | 2018-07-13 15:32:36 +0200 | [diff] [blame^] | 115 | WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} |
Carles Cufi | ae69934 | 2018-07-09 14:12:17 +0200 | [diff] [blame] | 116 | ) |