The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
3.9 KiB
147 lines
3.9 KiB
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, |
|
)
|
|
|