1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-11 20:28:21 +03:00

meson: add docs, docs_pdf options

Detect and report if the tools necessary to build documentation are available
during configure. This is represented as two new options 'docs' and
'docs_pdf', both defaulting to 'auto'.

This should also fix a meson error about the installdocs target, when none of
the doc tools are found.

Reviewed-by: Justin Pryzby <pryzby@telsasoft.com>
Discussion: https://postgr.es/m/20230325201414.sh7c6xlut2fpunnv@awork3.anarazel.de
Discussion: https://postgr.es/m/ZB8331v5IhUA/pNu@telsasoft.com
This commit is contained in:
Andres Freund
2023-04-04 21:29:39 -07:00
parent 0ba827ecfc
commit ef07d351a1
4 changed files with 86 additions and 16 deletions

View File

@ -2893,6 +2893,39 @@ ninja install
</variablelist>
</sect3>
<sect3 id="meson-options-docs">
<title>Documentation</title>
<para>
See <xref linkend="docguide-toolsets"/> for the tools needed for building
the documentation.
</para>
<variablelist>
<varlistentry id="configure-docs-meson">
<term><option>-Ddocs={ auto | enabled | disabled }</option></term>
<listitem>
<para>
Enables building the documentation in <acronym>HTML</acronym> and
<acronym>man</acronym> format. It defaults to auto.
</para>
</listitem>
</varlistentry>
<varlistentry id="configure-docs-pdf-meson">
<term><option>-Ddocs_pdf={ auto | enabled | disabled }</option></term>
<listitem>
<para>
Enables building the documentation in <acronym>PDF</acronym>
format. It defaults to auto.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="meson-options-misc">
<title>Miscellaneous</title>

View File

@ -5,9 +5,6 @@ installdocs = []
alldocs = []
doc_generated = []
xmllint_bin = find_program(get_option('XMLLINT'), native: true, required: false)
version_sgml = configure_file(
input: 'version.sgml.in',
output: 'version.sgml',
@ -68,8 +65,6 @@ if not xmllint_bin.found()
endif
pandoc = find_program('pandoc', native: true, required: false)
xsltproc_bin = find_program(get_option('XSLTPROC'), native: true, required: false)
fop = find_program('fop', native: true, required: false)
xmltools_wrapper = [
python, files('xmltools_dep_wrapper'),
@ -117,7 +112,7 @@ endif
#
# Full documentation as html, text
#
if xsltproc_bin.found()
if docs_dep.found()
html = custom_target('html',
input: ['stylesheet.xsl', postgres_full_xml],
output: 'html',
@ -167,7 +162,7 @@ endif
#
# INSTALL in html, text
#
if xsltproc_bin.found()
if docs_dep.found()
# Depend on postgres_full_xml, so validity errors are raised in one place,
# and so dependencies don't need to be re-specified.
install_xml = custom_target('INSTALL.xml',
@ -204,7 +199,7 @@ endif
#
# Man pages
#
if xsltproc_bin.found()
if docs_dep.found()
# FIXME: implement / consider sqlmansectnum logic
man = custom_target('man',
input: ['stylesheet-man.xsl', postgres_full_xml],
@ -233,7 +228,7 @@ endif
#
# Full documentation as PDF
#
if fop.found() and xsltproc_bin.found()
if docs_pdf_dep.found()
xsltproc_fo_flags = xsltproc_flags + [
'--stringparam', 'img.src.path', meson.current_source_dir() + '/'
]
@ -291,7 +286,7 @@ db2x_xsltproc = find_program('db2x_xsltproc', native: true, required: false)
db2x_texixml = find_program('db2x_texixml', native: true, required: false)
makeinfo = find_program('makeinfo', native: true, required: false)
if db2x_texixml.found() and db2x_xsltproc.found() and makeinfo.found()
if xsltproc_bin.found() and db2x_texixml.found() and db2x_xsltproc.found() and makeinfo.found()
postgres_texixml = custom_target('postgres.texixml',
output: 'postgres.texixml',
command: [db2x_xsltproc, '-s', 'texi',
@ -315,15 +310,11 @@ if db2x_texixml.found() and db2x_xsltproc.found() and makeinfo.found()
endif
if docs.length() == 0
run_target('docs', command: [missing, 'xsltproc'])
else
if docs_dep.found()
alias_target('docs', docs)
alias_target('install-docs', installdocs)
endif
if alldocs.length() == 0
run_target('alldocs', command: [missing, 'xsltproc'])
else
if alldocs.length() != 0
alias_target('alldocs', alldocs)
endif