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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
# Copyright 2021-2022 David Robillard <d@drobilla.net>
# SPDX-License-Identifier: 0BSD OR ISC
docdir = get_option('datadir') / 'doc'
#############
# Reference #
#############
# Find required programs
doxygen = find_program('doxygen', required: get_option('docs'))
sphinx_build = find_program('sphinx-build', required: get_option('docs'))
# Find sphinxygen or fall back to subproject
sphinxygen = disabler()
if doxygen.found() and sphinx_build.found()
sphinxygen = find_program('sphinxygen', required: false)
if not sphinxygen.found()
subproject('sphinxygen')
sphinxygen = find_program('sphinxygen', required: get_option('docs'))
endif
endif
# Build documentation if all required tools are found
build_docs = doxygen.found() and sphinxygen.found() and sphinx_build.found()
if build_docs
# Warn if the "official" theme isn't present
pymod = import('python')
doc_modules = ['sphinx_lv2_theme']
py = pymod.find_installation('python3', modules: doc_modules, required: false)
if not py.found()
warning('Missing sphinx_lv2_theme module, falling back to alabaster')
endif
# Configure conf.py for Sphinx
conf_config = configuration_data()
conf_config.set('SRATOM_SRCDIR', sratom_src_root)
conf_config.set('SRATOM_TITLE', get_option('title'))
conf_config.set('SRATOM_VERSION', meson.project_version())
conf_py = configure_file(
configuration: conf_config,
input: files('conf.py.in'),
output: 'conf.py',
)
# Copy hand-written documentation files
rst_sources = files('index.rst', 'overview.rst')
sphinx_input = []
foreach f : rst_sources
sphinx_input += [
configure_file(copy: true, input: f, output: '@PLAINNAME@'),
]
endforeach
# Generate reference documentation input with Doxygen and Sphinxygen
subdir('xml')
subdir('api')
# Build strict Sphinx flags, with termination on warnings if werror=true
sphinx_in_dir = meson.current_build_dir()
sphinx_flags = ['-E', '-a', '-q']
if get_option('werror')
sphinx_flags += ['-W']
endif
# Run Sphinx to generate final documentation for each format
sphinx_build_command = [sphinx_build] + sphinx_flags
foreach format : ['html', 'singlehtml']
if not get_option(format).disabled()
subdir(format)
endif
endforeach
endif
if not meson.is_subproject()
summary('Documentation', build_docs, bool_yn: true, section: 'Components')
endif
|