|
|
|
project('Meson documentation', version: '1.0')
|
|
|
|
|
|
|
|
yaml_modname = get_option('unsafe_yaml') ? 'yaml' : 'strictyaml'
|
|
|
|
py = import('python').find_installation('python3', modules: [yaml_modname], required: false)
|
|
|
|
if not py.found()
|
|
|
|
error(f'Cannot build documentation without yaml support')
|
|
|
|
endif
|
|
|
|
|
|
|
|
cur_bdir = meson.current_build_dir()
|
|
|
|
|
|
|
|
sitemap = files('sitemap.txt')
|
|
|
|
|
|
|
|
yaml_loader = get_option('unsafe_yaml') ? 'fastyaml' : 'yaml'
|
|
|
|
genrefman = find_program('./genrefman.py')
|
|
|
|
refman_binary = custom_target(
|
|
|
|
'gen_refman_bin',
|
|
|
|
input: sitemap,
|
|
|
|
output: 'reference_manual.bin',
|
|
|
|
depfile: 'reman_dep.d',
|
|
|
|
command: [
|
|
|
|
genrefman,
|
|
|
|
'-l', yaml_loader,
|
|
|
|
'-g', 'pickle',
|
|
|
|
'-o', '@OUTPUT@',
|
|
|
|
'--depfile', '@DEPFILE@',
|
|
|
|
'--force-color',
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
refman_json = custom_target(
|
|
|
|
'gen_refman_json',
|
|
|
|
build_by_default: true,
|
|
|
|
input: refman_binary,
|
|
|
|
output: 'reference_manual.json',
|
|
|
|
command: [
|
|
|
|
genrefman,
|
|
|
|
'-l', 'pickle',
|
|
|
|
'-g', 'json',
|
|
|
|
'-i', '@INPUT@',
|
|
|
|
'-o', '@OUTPUT@',
|
|
|
|
'--force-color',
|
|
|
|
],
|
|
|
|
)
|
|
|
|
test('validate_docs', find_program('./jsonvalidator.py'), args: [refman_json])
|
|
|
|
|
|
|
|
refman_man = custom_target(
|
|
|
|
'gen_refman_man',
|
|
|
|
build_by_default: true,
|
|
|
|
input: refman_binary,
|
|
|
|
output: 'meson-reference.3',
|
|
|
|
command: [
|
|
|
|
genrefman,
|
|
|
|
'-l', 'pickle',
|
|
|
|
'-g', 'man',
|
|
|
|
'-i', '@INPUT@',
|
|
|
|
'-o', '@OUTPUT@',
|
|
|
|
'--force-color',
|
|
|
|
'--no-modules',
|
|
|
|
],
|
|
|
|
install: true,
|
|
|
|
install_dir: get_option('mandir') / 'man3',
|
|
|
|
)
|
|
|
|
|
|
|
|
# Everything past here is HTML resources.
|
|
|
|
if not get_option('html')
|
|
|
|
subdir_done()
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Only the script knows which files are being generated
|
|
|
|
docs_gen = custom_target(
|
|
|
|
'gen_docs',
|
|
|
|
input: files('markdown/index.md'),
|
|
|
|
output: 'gen_docs.stamp',
|
|
|
|
command: [
|
|
|
|
files('../tools/regenerate_docs.py'),
|
|
|
|
'--output-dir', cur_bdir,
|
|
|
|
'--dummy-output-file', '@OUTPUT@',
|
|
|
|
],
|
|
|
|
build_by_default: true,
|
|
|
|
install: false,
|
|
|
|
)
|
|
|
|
|
|
|
|
refman_md = custom_target(
|
|
|
|
'gen_refman_md',
|
|
|
|
input: refman_binary,
|
|
|
|
output: ['configured_sitemap.txt', 'refman_links.json'],
|
|
|
|
command: [
|
|
|
|
genrefman,
|
|
|
|
'-l', 'pickle',
|
|
|
|
'-g', 'md',
|
|
|
|
'-s', sitemap,
|
|
|
|
'-i', '@INPUT@',
|
|
|
|
'-o', '@OUTPUT0@',
|
|
|
|
'--link-defs', '@OUTPUT1@',
|
|
|
|
'--force-color',
|
|
|
|
'--no-modules',
|
|
|
|
],
|
|
|
|
)
|
|
|
|
sitemap = refman_md[0]
|
|
|
|
|
|
|
|
genrelnotes = custom_target(
|
|
|
|
output: ['sitemap-genrelnotes.txt'],
|
|
|
|
build_always_stale: true,
|
|
|
|
command: [find_program('genrelnotes.py'),
|
|
|
|
'--input-sitemap', sitemap,
|
|
|
|
'--output-sitemap', '@OUTPUT0@',
|
|
|
|
'--output-dir', meson.current_build_dir(),
|
|
|
|
'--source-dir', meson.current_source_dir(),
|
|
|
|
]
|
|
|
|
)
|
|
|
|
sitemap = genrelnotes[0]
|
|
|
|
|
|
|
|
hotdoc_prog = find_program('hotdoc', version: '>=0.13.7')
|
|
|
|
py = import('python').find_installation('python3', modules: ['chevron'], required: false)
|
|
|
|
if not py.found()
|
|
|
|
error('Building the HTML docs requires the chevron module to render generated markdown pages')
|
|
|
|
endif
|
|
|
|
|
|
|
|
hotdoc = import('hotdoc')
|
|
|
|
documentation = hotdoc.generate_doc(meson.project_name(),
|
|
|
|
project_version: meson.project_version(),
|
|
|
|
sitemap: sitemap,
|
|
|
|
build_by_default: true,
|
|
|
|
depends: docs_gen,
|
|
|
|
index: 'markdown/index.md',
|
|
|
|
install: false,
|
|
|
|
extra_assets: ['images/'],
|
|
|
|
include_paths: ['markdown', cur_bdir],
|
|
|
|
default_license: 'CC-BY-SAv4.0',
|
|
|
|
html_extra_theme: join_paths('theme', 'extra'),
|
|
|
|
git_upload_repository: 'git@github.com:mesonbuild/mesonbuild.github.io.git',
|
|
|
|
edit_on_github_repository: 'https://github.com/mesonbuild/meson',
|
|
|
|
syntax_highlighting_activate: true,
|
|
|
|
keep_markup_in_code_blocks: true,
|
|
|
|
extra_extension: meson.current_source_dir() / 'extensions' / 'refman_links.py',
|
|
|
|
refman_data_file: refman_md[1],
|
|
|
|
fatal_warnings: true,
|
|
|
|
)
|
|
|
|
|
|
|
|
run_target('upload',
|
|
|
|
command: [hotdoc_prog, 'run',
|
|
|
|
'--conf-file', documentation.config_path(),
|
|
|
|
'--git-upload',
|
|
|
|
'-vv',
|
|
|
|
],
|
|
|
|
depends: documentation,
|
|
|
|
)
|