mirror of
https://github.com/mesonbuild/meson.git
synced 2026-06-24 08:48:03 +00:00
The script internally has a timeout of 60s, so the default of 30 on the meson side is too aggressive. Crank it up to 65.
152 lines
4.1 KiB
Meson
152 lines
4.1 KiB
Meson
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,
|
|
devhelp_activate: true,
|
|
devhelp_online: 'https://mesonbuild.com/',
|
|
)
|
|
|
|
run_target('upload',
|
|
command: [hotdoc_prog, 'run',
|
|
'--conf-file', documentation.config_path(),
|
|
'--git-upload',
|
|
'-vv',
|
|
],
|
|
depends: documentation,
|
|
)
|
|
|
|
test('validate_links', find_program('./validatelinks.py'), args: meson.current_source_dir() / 'markdown' / 'Users.md', timeout: 65)
|