Skip to content

Commit b1a74d7

Browse files
committed
doc: CMakeLists.txt: do not require sphinx
There are several doc-related build targets that do not require sphinx, e.g. one might want to simply generate the Doxygen docs (Doxygen remaining a hard dependency), so do not require sphinx to be present and, instead, conditionally add the associated targets when sphinx is present. Signed-off-by: Benjamin Cabé <[email protected]>
1 parent 61a9d6a commit b1a74d7

File tree

1 file changed

+101
-93
lines changed

1 file changed

+101
-93
lines changed

doc/CMakeLists.txt

Lines changed: 101 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ find_package(Doxygen REQUIRED dot)
3232

3333
find_program(SPHINXBUILD sphinx-build)
3434
if(NOT SPHINXBUILD)
35-
message(FATAL_ERROR "The 'sphinx-build' command was not found")
35+
message(WARNING "The 'sphinx-build' command was not found; Sphinx-based targets will not be available.")
3636
endif()
3737
find_program(SPHINXAUTOBUILD sphinx-autobuild)
3838

@@ -187,90 +187,96 @@ if(HW_FEATURES_VENDOR_FILTER)
187187
list(APPEND SPHINXOPTS "-D" "zephyr_hw_features_vendor_filter=${vendor_filter}")
188188
endif()
189189

190-
add_doc_target(
191-
html
192-
COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_HTML_DIR}
193-
${SPHINXBUILD}
194-
-b html
195-
-c ${DOCS_CFG_DIR}
196-
-d ${DOCS_DOCTREE_DIR}
197-
-w ${DOCS_BUILD_DIR}/html.log
198-
${SPHINX_TAGS_ARGS}
199-
${SPHINXOPTS}
200-
${SPHINXOPTS_EXTRA}
201-
${DOCS_SRC_DIR}
202-
${DOCS_HTML_DIR}
203-
USES_TERMINAL
204-
COMMENT "Running Sphinx HTML build..."
205-
)
190+
if(SPHINXBUILD)
191+
add_doc_target(
192+
html
193+
COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_HTML_DIR}
194+
${SPHINXBUILD}
195+
-b html
196+
-c ${DOCS_CFG_DIR}
197+
-d ${DOCS_DOCTREE_DIR}
198+
-w ${DOCS_BUILD_DIR}/html.log
199+
${SPHINX_TAGS_ARGS}
200+
${SPHINXOPTS}
201+
${SPHINXOPTS_EXTRA}
202+
${DOCS_SRC_DIR}
203+
${DOCS_HTML_DIR}
204+
USES_TERMINAL
205+
COMMENT "Running Sphinx HTML build..."
206+
)
206207

207-
set_target_properties(
208-
html html-nodeps
209-
PROPERTIES
210-
ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_HTML_DIR};${DOCS_DOCTREE_DIR}"
211-
)
208+
set_target_properties(
209+
html html-nodeps
210+
PROPERTIES
211+
ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_HTML_DIR};${DOCS_DOCTREE_DIR}"
212+
)
212213

213-
add_dependencies(html devicetree)
214+
add_dependencies(html devicetree)
215+
endif()
214216

215217
#-------------------------------------------------------------------------------
216218
# html-live
217219

218-
add_doc_target(
219-
html-live
220-
COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_HTML_DIR}
221-
${SPHINXAUTOBUILD}
222-
--watch ${DOCS_CFG_DIR}
223-
--ignore ${DOCS_BUILD_DIR}
224-
-b html
225-
-c ${DOCS_CFG_DIR}
226-
-d ${DOCS_DOCTREE_DIR}
227-
-w ${DOCS_BUILD_DIR}/html.log
228-
${SPHINX_TAGS_ARGS}
229-
${SPHINXOPTS}
230-
${SPHINXOPTS_EXTRA}
231-
${DOCS_SRC_DIR}
232-
${DOCS_HTML_DIR}
233-
USES_TERMINAL
234-
COMMENT "Running Sphinx HTML autobuild..."
235-
)
220+
if(SPHINXBUILD)
221+
add_doc_target(
222+
html-live
223+
COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_HTML_DIR}
224+
${SPHINXAUTOBUILD}
225+
--watch ${DOCS_CFG_DIR}
226+
--ignore ${DOCS_BUILD_DIR}
227+
-b html
228+
-c ${DOCS_CFG_DIR}
229+
-d ${DOCS_DOCTREE_DIR}
230+
-w ${DOCS_BUILD_DIR}/html.log
231+
${SPHINX_TAGS_ARGS}
232+
${SPHINXOPTS}
233+
${SPHINXOPTS_EXTRA}
234+
${DOCS_SRC_DIR}
235+
${DOCS_HTML_DIR}
236+
USES_TERMINAL
237+
COMMENT "Running Sphinx HTML autobuild..."
238+
)
236239

237-
set_target_properties(
238-
html-live html-live-nodeps
239-
PROPERTIES
240-
ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_HTML_DIR};${DOCS_DOCTREE_DIR}"
241-
)
240+
set_target_properties(
241+
html-live html-live-nodeps
242+
PROPERTIES
243+
ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_HTML_DIR};${DOCS_DOCTREE_DIR}"
244+
)
242245

243-
add_dependencies(html-live devicetree)
246+
add_dependencies(html-live devicetree)
247+
endif()
244248
#-------------------------------------------------------------------------------
245249
# pdf
246250

247-
add_doc_target(
248-
latex
249-
COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_LATEX_DIR}
250-
${SPHINXBUILD}
251-
-b latex
252-
-c ${DOCS_CFG_DIR}
253-
-d ${DOCS_DOCTREE_DIR}
254-
-w ${DOCS_BUILD_DIR}/latex.log
255-
${SPHINX_TAGS_ARGS}
256-
-t convertimages
257-
${SPHINXOPTS}
258-
${SPHINXOPTS_EXTRA}
259-
${DOCS_SRC_DIR}
260-
${DOCS_LATEX_DIR}
261-
USES_TERMINAL
262-
COMMENT "Running Sphinx LaTeX build..."
263-
)
251+
if(SPHINXBUILD)
252+
add_doc_target(
253+
latex
254+
COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_LATEX_DIR}
255+
${SPHINXBUILD}
256+
-b latex
257+
-c ${DOCS_CFG_DIR}
258+
-d ${DOCS_DOCTREE_DIR}
259+
-w ${DOCS_BUILD_DIR}/latex.log
260+
${SPHINX_TAGS_ARGS}
261+
-t convertimages
262+
${SPHINXOPTS}
263+
${SPHINXOPTS_EXTRA}
264+
${DOCS_SRC_DIR}
265+
${DOCS_LATEX_DIR}
266+
USES_TERMINAL
267+
COMMENT "Running Sphinx LaTeX build..."
268+
)
264269

265-
set_target_properties(
266-
latex latex-nodeps
267-
PROPERTIES
268-
ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_LATEX_DIR};${DOCS_DOCTREE_DIR}"
269-
)
270+
set_target_properties(
271+
latex latex-nodeps
272+
PROPERTIES
273+
ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_LATEX_DIR};${DOCS_DOCTREE_DIR}"
274+
)
270275

271-
add_dependencies(latex devicetree)
276+
add_dependencies(latex devicetree)
277+
endif()
272278

273-
if(LATEX_PDFLATEX_FOUND AND LATEXMK)
279+
if(SPHINXBUILD AND LATEX_PDFLATEX_FOUND AND LATEXMK)
274280
if(WIN32)
275281
set(PDF_BUILD_COMMAND "make.bat")
276282
else()
@@ -296,30 +302,32 @@ endif()
296302
#-------------------------------------------------------------------------------
297303
# linkcheck
298304

299-
add_doc_target(
300-
linkcheck
301-
COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_LINKCHECK_DIR}
302-
${SPHINXBUILD}
303-
-b linkcheck
304-
-c ${DOCS_CFG_DIR}
305-
-d ${DOCS_DOCTREE_DIR}
306-
-w ${DOCS_BUILD_DIR}/linkcheck.log
307-
${SPHINX_TAGS_ARGS}
308-
${SPHINXOPTS}
309-
${SPHINXOPTS_EXTRA}
310-
${DOCS_SRC_DIR}
311-
${DOCS_LINKCHECK_DIR}
312-
USES_TERMINAL
313-
COMMENT "Running Sphinx link check..."
314-
)
305+
if(SPHINXBUILD)
306+
add_doc_target(
307+
linkcheck
308+
COMMAND ${CMAKE_COMMAND} -E env ${SPHINX_ENV} OUTPUT_DIR=${DOCS_LINKCHECK_DIR}
309+
${SPHINXBUILD}
310+
-b linkcheck
311+
-c ${DOCS_CFG_DIR}
312+
-d ${DOCS_DOCTREE_DIR}
313+
-w ${DOCS_BUILD_DIR}/linkcheck.log
314+
${SPHINX_TAGS_ARGS}
315+
${SPHINXOPTS}
316+
${SPHINXOPTS_EXTRA}
317+
${DOCS_SRC_DIR}
318+
${DOCS_LINKCHECK_DIR}
319+
USES_TERMINAL
320+
COMMENT "Running Sphinx link check..."
321+
)
315322

316-
set_target_properties(
317-
linkcheck linkcheck-nodeps
318-
PROPERTIES
319-
ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_LINKCHECK_DIR};${DOCS_DOCTREE_DIR}"
320-
)
323+
set_target_properties(
324+
linkcheck linkcheck-nodeps
325+
PROPERTIES
326+
ADDITIONAL_CLEAN_FILES "${DOCS_SRC_DIR};${DOCS_LINKCHECK_DIR};${DOCS_DOCTREE_DIR}"
327+
)
321328

322-
add_dependencies(linkcheck devicetree)
329+
add_dependencies(linkcheck devicetree)
330+
endif()
323331

324332
#-------------------------------------------------------------------------------
325333
# others

0 commit comments

Comments
 (0)