@@ -29,7 +29,7 @@ function(_setup_doxygen)
29
29
if (DPCTL_ENABLE_DOXYGEN_HTML )
30
30
set (GENERATE_HTML "YES" )
31
31
endif ()
32
- set (DOXYGEN_INPUT_DIR ../libsyclinterface/include )
32
+ set (DOXYGEN_INPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR} / ../libsyclinterface/include )
33
33
set (DOXYGEN_OUTPUT_DIR ${DOC_OUTPUT_DIR} /doxygen )
34
34
set (DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR} /xml/index.xml )
35
35
set (DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR} /Doxyfile.in )
@@ -62,30 +62,33 @@ endfunction()
62
62
63
63
function (_setup_doxyrest )
64
64
set (DOXYREST_OUTPUT_DIR_NAME docfiles/libsyclinterface )
65
+ # Set the DOXYREST_OUTPUT_DIR variable in both current and parent scope.
66
+ # The variable is used by _setup_sphinx when generating the conf.py file.
65
67
set (DOXYREST_OUTPUT_DIR
66
68
${CMAKE_CURRENT_SOURCE_DIR} /${DOXYREST_OUTPUT_DIR_NAME}
67
69
PARENT_SCOPE
68
70
)
69
71
set (DOXYREST_OUTPUT_DIR
70
72
${CMAKE_CURRENT_SOURCE_DIR} /${DOXYREST_OUTPUT_DIR_NAME}
71
-
72
73
)
73
74
set (DOXYREST_CONFIG_IN ${CMAKE_CURRENT_SOURCE_DIR} /doxyrest-config.lua.in )
74
75
set (DOXYREST_CONFIG_OUT ${CMAKE_CURRENT_SOURCE_DIR} /doxyrest-config.lua )
75
76
set (DOXYREST_OUTPUT ${DOXYREST_OUTPUT_DIR} /index.rst )
76
77
set (DOXYGEN_OUTPUT_DIR ${DOC_OUTPUT_DIR} /doxygen )
78
+
77
79
configure_file (${DOXYREST_CONFIG_IN} ${DOXYREST_CONFIG_OUT} @ONLY )
78
80
configure_file (${INDEX_DOXYREST_IN} ${INDEX_OUT} @ONLY )
81
+
79
82
add_custom_command (
80
83
OUTPUT ${DOXYREST_OUTPUT}
81
84
COMMAND
82
85
${DOXYREST_EXE} -c
83
86
${DOXYREST_CONFIG_OUT}
84
87
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
85
88
DEPENDS
86
- # Other docs files that can be edited manually
87
- ${INDEX_OUT}
88
- ${DOXYGEN_INDEX_FILE}
89
+ # Other docs files that can be edited manually
90
+ ${INDEX_OUT}
91
+ ${DOXYGEN_INDEX_FILE}
89
92
MAIN_DEPENDENCY ${DOXYREST_CONFIG_OUT} ${DOXYREST_CONFIG_IN}
90
93
COMMENT "Generating Doxyrest documentation"
91
94
)
@@ -98,58 +101,58 @@ function(_setup_doxyrest)
98
101
endfunction ()
99
102
100
103
function (_setup_sphinx )
104
+ set (GENERATE_RST_OUTPUT_DIR
105
+ ${CMAKE_CURRENT_SOURCE_DIR} /docfiles/dpctl
106
+ )
101
107
set (SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR} )
102
108
set (SPHINX_OUTPUT_DIR ${DOC_OUTPUT_DIR} /docs )
103
109
set (SPHINX_INDEX_FILE ${SPHINX_OUTPUT_DIR} /index.html )
104
110
set (SPHINX_CONF_IN ${SPHINX_SOURCE} /conf.in )
105
111
set (SPHINX_CONF_OUT ${SPHINX_SOURCE} /conf.py )
106
- # Only regenerate Sphinx when:
107
- # - Doxygen has rerun
108
- # - Our doc files have been updated
109
- # - The Sphinx config has been updated
112
+ set (DPCTL_PYAPI_RST_FILE ${GENERATE_RST_OUTPUT_DIR} /dpctl_pyapi.rst )
113
+
110
114
if (DPCTL_ENABLE_DOXYREST )
111
- add_custom_command (
112
- OUTPUT ${SPHINX_INDEX_FILE}
113
- COMMAND
114
- ${SPHINX_EXECUTABLE} -b html
115
- ${SPHINX_SOURCE}
116
- ${SPHINX_OUTPUT_DIR}
117
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
118
- DEPENDS
119
- # Other docs files that can be edited manually
120
- ${CMAKE_CURRENT_SOURCE_DIR} /index.rst
121
- ${DOXYGEN_INDEX_FILE}
122
- MAIN_DEPENDENCY ${SPHINX_CONF_OUT} ${SPHINX_CONF_IN}
123
- COMMENT "Generating Sphinx documentation"
124
- )
125
- # Target to generate Sphinx
126
- add_custom_target (
127
- Sphinx
128
- ALL
129
- DEPENDS Doxyrest ${SPHINX_INDEX_FILE}
130
- )
115
+ set (DEPEND_ON_DOXYREST "Doxyrest" )
131
116
else ()
132
117
configure_file (${INDEX_NO_DOXYREST_IN} ${INDEX_OUT} @ONLY )
133
- add_custom_command (
134
- OUTPUT ${SPHINX_INDEX_FILE}
135
- COMMAND
136
- ${SPHINX_EXECUTABLE} -b html
137
- ${SPHINX_SOURCE}
138
- ${SPHINX_OUTPUT_DIR}
139
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
140
- DEPENDS
141
- # Other docs files that can be edited manually
142
- ${CMAKE_CURRENT_SOURCE_DIR} /index.rst
143
- MAIN_DEPENDENCY ${SPHINX_CONF_OUT} ${SPHINX_CONF_IN}
144
- COMMENT "Generating Sphinx documentation"
145
- )
146
- # Target to generate Sphinx
147
- add_custom_target (
148
- Sphinx
149
- ALL
150
- DEPENDS ${SPHINX_INDEX_FILE}
151
- )
152
118
endif ()
119
+
120
+ configure_file (
121
+ "${CMAKE_CURRENT_SOURCE_DIR} /generate_rst.py"
122
+ ${CMAKE_CURRENT_BINARY_DIR}
123
+ )
124
+ # A custom command to generate the Python API rst files
125
+ add_custom_command (
126
+ OUTPUT ${DPCTL_PYAPI_RST_FILE}
127
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${GENERATE_RST_OUTPUT_DIR}
128
+ COMMAND
129
+ "${Python_EXECUTABLE} "
130
+ "${CMAKE_CURRENT_BINARY_DIR} /generate_rst.py"
131
+ --dir "${GENERATE_RST_OUTPUT_DIR} "
132
+ --module "dpctl"
133
+ COMMENT "Generating RST files for Python API of dpctl"
134
+ )
135
+ add_custom_command (
136
+ OUTPUT ${SPHINX_INDEX_FILE}
137
+ COMMAND
138
+ ${SPHINX_EXECUTABLE} -b html
139
+ ${SPHINX_SOURCE}
140
+ ${SPHINX_OUTPUT_DIR}
141
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
142
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /index.rst
143
+ MAIN_DEPENDENCY ${SPHINX_CONF_OUT} ${SPHINX_CONF_IN}
144
+ COMMENT "Generating Sphinx documentation"
145
+ )
146
+ # Target to generate Sphinx. Note that the order of the dependencies is
147
+ # important, we want the rst files to generate prior to sphinx build.
148
+ add_custom_target (
149
+ Sphinx
150
+ ALL
151
+ DEPENDS
152
+ ${DEPEND_ON_DOXYREST}
153
+ ${DPCTL_PYAPI_RST_FILE}
154
+ ${SPHINX_INDEX_FILE}
155
+ )
153
156
# Create a conf.py by replacing variables inside @@ with the current values
154
157
configure_file (${SPHINX_CONF_IN} ${SPHINX_CONF_OUT} @ONLY )
155
158
endfunction ()
@@ -185,6 +188,8 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
185
188
find_package (Git )
186
189
find_package (Sphinx REQUIRED )
187
190
find_package (Doxygen REQUIRED )
191
+ find_package (Python REQUIRED )
192
+
188
193
if (DPCTL_ENABLE_DOXYREST )
189
194
find_package (Lua REQUIRED )
190
195
find_package (Doxyrest REQUIRED )
@@ -208,3 +213,11 @@ if(DPCTL_ENABLE_DOXYREST)
208
213
_setup_doxyrest ()
209
214
endif ()
210
215
_setup_sphinx ()
216
+
217
+ set_property (
218
+ DIRECTORY
219
+ PROPERTY
220
+ ADDITIONAL_CLEAN_FILES
221
+ "${CMAKE_CURRENT_SOURCE_DIR} /docfiles/dpctl"
222
+ "${CMAKE_CURRENT_SOURCE_DIR} /docfiles/libsyclinterface"
223
+ )
0 commit comments