meson: introduce a "docs" alias to compile documentation only

Meson does not currently provide a target to compile documentation,
only. Instead, users needs to compile the whole project, which may be
way more than they really intend to do.

Introduce a new "docs" alias to plug this gap. This alias can be invoked
e.g. with `meson compile docs`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2025-09-11 11:16:06 +02:00
committed by Junio C Hamano
parent c44beea485
commit 197f0d0f39
6 changed files with 19 additions and 12 deletions

View File

@@ -29,7 +29,7 @@ howto_index = custom_target(
output: 'howto-index.adoc', output: 'howto-index.adoc',
) )
custom_target( doc_targets += custom_target(
command: asciidoc_html_options, command: asciidoc_html_options,
input: howto_index, input: howto_index,
output: 'howto-index.html', output: 'howto-index.html',
@@ -51,7 +51,7 @@ foreach howto : howto_sources
capture: true, capture: true,
) )
custom_target( doc_targets += custom_target(
command: asciidoc_html_options, command: asciidoc_html_options,
input: howto_stripped, input: howto_stripped,
output: fs.stem(howto_stripped.full_path()) + '.html', output: fs.stem(howto_stripped.full_path()) + '.html',

View File

@@ -375,7 +375,7 @@ foreach manpage, category : manpages
output: fs.stem(manpage) + '.xml', output: fs.stem(manpage) + '.xml',
) )
custom_target( doc_targets += custom_target(
command: [ command: [
xmlto, xmlto,
'-m', '@INPUT0@', '-m', '@INPUT0@',
@@ -398,7 +398,7 @@ foreach manpage, category : manpages
endif endif
if get_option('docs').contains('html') if get_option('docs').contains('html')
custom_target( doc_targets += custom_target(
command: asciidoc_common_options + [ command: asciidoc_common_options + [
'--backend=' + asciidoc_html, '--backend=' + asciidoc_html,
'--doctype=manpage', '--doctype=manpage',
@@ -450,7 +450,7 @@ if get_option('docs').contains('html')
depends: documentation_deps, depends: documentation_deps,
) )
custom_target( doc_targets += custom_target(
command: [ command: [
xsltproc, xsltproc,
'--xinclude', '--xinclude',
@@ -479,7 +479,7 @@ if get_option('docs').contains('html')
] ]
foreach article : articles foreach article : articles
custom_target( doc_targets += custom_target(
command: asciidoc_common_options + [ command: asciidoc_common_options + [
'--backend=' + asciidoc_html, '--backend=' + asciidoc_html,
'--out-file=@OUTPUT@', '--out-file=@OUTPUT@',

View File

@@ -46,7 +46,7 @@ api_index = custom_target(
output: 'api-index.adoc', output: 'api-index.adoc',
) )
custom_target( doc_targets += custom_target(
command: asciidoc_html_options, command: asciidoc_html_options,
input: api_index, input: api_index,
output: 'api-index.html', output: 'api-index.html',
@@ -56,7 +56,7 @@ custom_target(
) )
foreach article : api_docs + articles foreach article : api_docs + articles
custom_target( doc_targets += custom_target(
command: asciidoc_html_options, command: asciidoc_html_options,
input: article, input: article,
output: fs.stem(article) + '.html', output: fs.stem(article) + '.html',

View File

@@ -20,7 +20,7 @@ if get_option('docs').contains('man')
output: 'git-contacts.xml', output: 'git-contacts.xml',
) )
custom_target( doc_targets += custom_target(
command: [ command: [
xmlto, xmlto,
'-m', '@INPUT@', '-m', '@INPUT@',
@@ -39,7 +39,7 @@ if get_option('docs').contains('man')
endif endif
if get_option('docs').contains('html') if get_option('docs').contains('html')
custom_target( doc_targets += custom_target(
command: asciidoc_common_options + [ command: asciidoc_common_options + [
'--backend=' + asciidoc_html, '--backend=' + asciidoc_html,
'--doctype=manpage', '--doctype=manpage',

View File

@@ -38,7 +38,7 @@ if get_option('docs').contains('man')
output: 'git-subtree.xml', output: 'git-subtree.xml',
) )
custom_target( doc_targets += custom_target(
command: [ command: [
xmlto, xmlto,
'-m', '@INPUT@', '-m', '@INPUT@',
@@ -57,7 +57,7 @@ if get_option('docs').contains('man')
endif endif
if get_option('docs').contains('html') if get_option('docs').contains('html')
custom_target( doc_targets += custom_target(
command: asciidoc_common_options + [ command: asciidoc_common_options + [
'--backend=' + asciidoc_html, '--backend=' + asciidoc_html,
'--doctype=manpage', '--doctype=manpage',

View File

@@ -2099,11 +2099,18 @@ endif
subdir('bin-wrappers') subdir('bin-wrappers')
if get_option('docs') != [] if get_option('docs') != []
doc_targets = []
subdir('Documentation') subdir('Documentation')
endif endif
subdir('contrib') subdir('contrib')
# Note that the target is intentionally configured after including the
# 'contrib' directory, as some tool there also have their own manpages.
if get_option('docs') != []
alias_target('docs', doc_targets)
endif
exclude_from_check_headers = [ exclude_from_check_headers = [
'compat/', 'compat/',
'unicode-width.h', 'unicode-width.h',