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
|
doxygen = find_program('doxygen', required: true)
python = import('python').find_installation()
sphinx_build = find_program('sphinx-build', required: true)
# Check required Python modules
required_python_modules = ['breathe', 'sphinxcontrib.bibtex', 'sphinx_tabs.tabs']
foreach module : required_python_modules
if run_command([python, '-c', 'import ' + module], check: false).returncode() != 0
error('Python module `' + module + '` not found. Skipping c/c++ documentation')
endif
endforeach
subdir('c')
subdir('cpp')
conf_data = configuration_data()
conf_data.set('bitwuzla_python_dir', join_paths(meson.project_build_root(), 'src', 'api', 'python'))
conf_data.set('current_source_dir', meson.current_source_dir())
conf_data.set('current_build_dir', meson.current_build_dir())
conf_data.set('version', meson.project_version())
conf_py = configure_file(input: 'conf.py.in',
output: 'conf.py',
configuration: conf_data)
depends = [docs_doxygen_c, docs_doxygen_cpp]
depend_files = ['index.rst']
if get_option('python')
depends += [bitwuzla_py_ext]
depend_files += ['python/api.rst', 'python/interface.rst']
endif
docs_usage = custom_target('cli-usage',
build_by_default: true,
build_always_stale: true,
capture: true,
output: 'cli_usage.txt',
command: [bitwuzla_bin, '-h'],
depends: bitwuzla_bin,
)
depends += [docs_usage]
docs_html = custom_target('docs-html',
# build_by_default: true,
build_always_stale: true,
command: [sphinx_build, '-b', 'html',
# Tell breathe where to find the Doxygen output
'-Dbreathe_projects.Bitwuzla_c=' + docs_doxygen_c.full_path(),
'-Dbreathe_projects.Bitwuzla_cpp=' + docs_doxygen_cpp.full_path(),
'-Dbreathe_projects.std=' + docs_doxygen_cpp.full_path(),
# Tell sphinx where to find conf.py
'-c', meson.current_build_dir(),
meson.current_source_dir(), meson.current_build_dir()
],
output: '.',
depends: depends,
depend_files: depend_files
)
jekyll_fix = files('jekyll_fix.py')
docs = custom_target('docs',
build_by_default: true,
build_always_stale: true,
command: [python, jekyll_fix, meson.current_build_dir()],
depends: docs_html,
output: 'jekyll-fix-fake-output'
)
|