/
sphinx.cmake
58 lines (45 loc) · 1.46 KB
/
sphinx.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Copyright 2017-2024 AVSystem <avsystem@avsystem.com>
# AVSystem Anjay LwM2M SDK
# All rights reserved.
#
# Licensed under the AVSystem-5-clause License.
# See the attached LICENSE file for details.
function(sphinx_generate
OUTBASE
OUTTITLE
INCLUDE_FILES
INCLUDE_ROOT_PATH)
message(STATUS "generating sphinx sources for ${OUTBASE}")
file(MAKE_DIRECTORY "${OUTBASE}")
set(SHORTNAMES)
foreach(FNAME ${INCLUDE_FILES})
string(REGEX REPLACE "^.*/([^.]*)[.]h$" "\\1" SHORTNAME "${FNAME}")
list(APPEND SHORTNAMES "${SHORTNAME}")
file(RELATIVE_PATH RELATIVE_FNAME ${INCLUDE_ROOT_PATH} ${FNAME})
set(TITLE "``${RELATIVE_FNAME}``")
string(LENGTH "${TITLE}" TITLELEN)
string(RANDOM LENGTH ${TITLELEN} ALPHABET "#" TITLEHEAD)
message(STATUS "generating ${OUTBASE}/${SHORTNAME}.rst")
file(WRITE "${OUTBASE}/${SHORTNAME}.rst"
"${TITLEHEAD}
${TITLE}
${TITLEHEAD}
.. contents:: :local:
.. highlight:: c
.. doxygenfile:: ${RELATIVE_FNAME}")
endforeach()
string(LENGTH "${OUTTITLE}" TITLELEN)
string(RANDOM LENGTH ${TITLELEN} ALPHABET "#" OUTTITLEHEADER)
string(REGEX REPLACE "^.*/" "" SHORTOUTBASE "${OUTBASE}")
set(OUTPUT
"${OUTTITLEHEADER}
${OUTTITLE}
${OUTTITLEHEADER}
.. toctree::
")
foreach(SHORTNAME ${SHORTNAMES})
set(OUTPUT "${OUTPUT}
${SHORTOUTBASE}/${SHORTNAME}")
endforeach()
file(WRITE "${OUTBASE}.rst" "${OUTPUT}")
endfunction()