2019-06-14 12:41:02 +03:00
|
|
|
sphinx = find_program('sphinx-build', required: true)
|
|
|
|
doxygen = find_program('doxygen', required: true)
|
2022-06-28 11:47:18 +03:00
|
|
|
dot = find_program('dot', required: true)
|
2019-06-14 12:41:02 +03:00
|
|
|
breathe = find_program('breathe-apidoc', required: true)
|
|
|
|
|
|
|
|
sphinx_c = run_command(sphinx, '--version')
|
|
|
|
breathe_c = run_command(breathe, '--version')
|
|
|
|
doxygen_c = run_command(doxygen, '--version')
|
|
|
|
|
|
|
|
sphinx_v = sphinx_c.stdout().split(' ')[1].strip()
|
|
|
|
breathe_v = breathe_c.stdout().split(' ')[2].strip()
|
|
|
|
doxygen_v = doxygen_c.stdout().strip()
|
|
|
|
|
|
|
|
if sphinx_v.version_compare('< 2.1.0')
|
|
|
|
error('Use at least sphinx version 2.1.0, found ' + sphinx_v)
|
|
|
|
endif
|
|
|
|
|
|
|
|
if breathe_v.version_compare('< 4.11')
|
|
|
|
error('Use at least breathe version 4.11, found ' + breathe_v)
|
|
|
|
endif
|
|
|
|
|
|
|
|
if doxygen_v.version_compare('< 1.8')
|
|
|
|
error('Use at least doxygen version 1.8, found ' + doxygen_v)
|
|
|
|
endif
|
|
|
|
|
|
|
|
doxygen_database = meson.current_build_dir() + '/doxygen_doc'
|
|
|
|
|
|
|
|
# modify the sphinx configuration and the breathe doxygen XML database
|
|
|
|
# to point where its being generated by doxygen
|
|
|
|
sphinx_conf_data = configuration_data()
|
|
|
|
sphinx_conf_data.set('BUILD_ROOT', doxygen_database)
|
|
|
|
sphinx_conf_data.set('VERSION', meson.project_version())
|
|
|
|
sphinx_conf = configure_file(
|
|
|
|
input: 'conf.py.in',
|
|
|
|
output: 'conf.py',
|
|
|
|
configuration: sphinx_conf_data
|
|
|
|
)
|
|
|
|
|
|
|
|
doxy_conf_data = configuration_data()
|
|
|
|
doxy_conf_data.set('SRC_ROOT', meson.source_root())
|
|
|
|
doxy_conf_data.set('OUTPUT_DIR', doxygen_database)
|
|
|
|
doxygen_conf_weston = configure_file(
|
|
|
|
input: 'doxygen.ini.in',
|
|
|
|
output: 'doxygen.ini',
|
|
|
|
configuration: doxy_conf_data
|
|
|
|
)
|
|
|
|
|
|
|
|
script_data = configuration_data()
|
|
|
|
script_data.set('SRCDIR', meson.current_build_dir())
|
|
|
|
script_data.set('OUTDIR', meson.current_build_dir() + '/doc')
|
2020-12-09 17:27:14 +03:00
|
|
|
|
|
|
|
# Set a different directory for doctrees to avoid installing them
|
|
|
|
script_data.set('DOCTREES_DIR', meson.current_build_dir() + '/doctrees')
|
|
|
|
|
2019-06-14 12:41:02 +03:00
|
|
|
script_data.set('DOXYGEN_CONF', meson.current_build_dir() + '/doxygen.ini')
|
|
|
|
script_data.set('DOXYGEN_CMD', doxygen.path())
|
|
|
|
script_data.set('SPHINX_CMD', sphinx.path())
|
|
|
|
script_doxy_sphinx = configure_file(
|
|
|
|
input: 'run_doxygen_sphinx.sh.in',
|
|
|
|
output: 'run_doxygen_sphinx.sh',
|
|
|
|
configuration: script_data
|
|
|
|
)
|
|
|
|
|
|
|
|
# copy everything to build_dir, if you plan on adding other files in the top
|
|
|
|
# rootdir of sourcedir, please add them here as well, otherwise use 'toc/'s
|
|
|
|
# meson.build file
|
|
|
|
sphinx_files = ['index.rst']
|
|
|
|
foreach file : sphinx_files
|
|
|
|
configure_file(input: file, output: file, copy: true)
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
# and those in toc
|
|
|
|
subdir('toc')
|
|
|
|
|
|
|
|
sphinx_doc = custom_target(
|
|
|
|
'weston-doc-breathe',
|
|
|
|
command: script_doxy_sphinx,
|
|
|
|
output: 'doc',
|
|
|
|
build_by_default: true,
|
|
|
|
)
|
|
|
|
|
|
|
|
# we need this because we will have a stale 'doc' directory
|
|
|
|
# and this forces it to be rebuilt
|
|
|
|
docs = run_target(
|
|
|
|
'docs',
|
|
|
|
command: script_doxy_sphinx,
|
|
|
|
)
|
|
|
|
|
|
|
|
install_subdir(
|
|
|
|
sphinx_doc.full_path(),
|
|
|
|
install_dir: join_paths(dir_data, 'doc', 'weston'),
|
2020-12-09 17:27:14 +03:00
|
|
|
exclude_files: '.buildinfo',
|
2019-06-14 12:41:02 +03:00
|
|
|
strip_directory: true,
|
|
|
|
)
|