255 lines
7.1 KiB
Meson
255 lines
7.1 KiB
Meson
|
docs = []
|
||
|
alldocs = []
|
||
|
doc_generated = []
|
||
|
|
||
|
xmllint = find_program(get_option('XMLLINT'), native: true, required: false)
|
||
|
|
||
|
|
||
|
version_sgml = configure_file(
|
||
|
input: 'version.sgml.in',
|
||
|
output: 'version.sgml',
|
||
|
configuration: cdata,
|
||
|
)
|
||
|
configure_files += version_sgml
|
||
|
|
||
|
doc_generated += custom_target('features-supported.sgml',
|
||
|
input: files(
|
||
|
'../../../src/backend/catalog/sql_feature_packages.txt',
|
||
|
'../../../src/backend/catalog/sql_features.txt',
|
||
|
),
|
||
|
output: 'features-supported.sgml',
|
||
|
command: [perl, files('mk_feature_tables.pl'), 'YES', '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
install: false,
|
||
|
capture: true,
|
||
|
)
|
||
|
|
||
|
doc_generated += custom_target('features-unsupported.sgml',
|
||
|
input: files(
|
||
|
'../../../src/backend/catalog/sql_feature_packages.txt',
|
||
|
'../../../src/backend/catalog/sql_features.txt',
|
||
|
),
|
||
|
output: 'features-unsupported.sgml',
|
||
|
command: [perl, files('mk_feature_tables.pl'), 'NO', '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
install: false,
|
||
|
capture: true,
|
||
|
)
|
||
|
|
||
|
doc_generated += custom_target('errcodes-table.sgml',
|
||
|
input: files(
|
||
|
'../../../src/backend/utils/errcodes.txt'),
|
||
|
output: 'errcodes-table.sgml',
|
||
|
command: [perl, files('generate-errcodes-table.pl'), '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
install: false,
|
||
|
capture: true,
|
||
|
)
|
||
|
|
||
|
# FIXME: this actually has further inputs, adding depfile support to
|
||
|
# generate-keywords-table.pl is probably the best way to address that
|
||
|
# robustly.
|
||
|
doc_generated += custom_target('keywords-table.sgml',
|
||
|
input: files(
|
||
|
'../../../src/include/parser/kwlist.h'),
|
||
|
output: 'keywords-table.sgml',
|
||
|
command: [perl, files('generate-keywords-table.pl'), '@CURRENT_SOURCE_DIR@'],
|
||
|
build_by_default: false,
|
||
|
install: false,
|
||
|
capture: true,
|
||
|
)
|
||
|
|
||
|
# For everything else we need at least xmllint
|
||
|
if not xmllint.found()
|
||
|
subdir_done()
|
||
|
endif
|
||
|
|
||
|
pandoc = find_program('pandoc', native: true, required: false)
|
||
|
xsltproc = find_program(get_option('XSLTPROC'), native: true, required: false)
|
||
|
fop = find_program('fop', native: true, required: false)
|
||
|
|
||
|
# Run validation only once, common to all subsequent targets. While
|
||
|
# we're at it, also resolve all entities (that is, copy all included
|
||
|
# files into one big file). This helps tools that don't understand
|
||
|
# vpath builds (such as dbtoepub).
|
||
|
postgres_full_xml = custom_target('postgres-full.xml',
|
||
|
input: 'postgres.sgml',
|
||
|
output: 'postgres-full.xml',
|
||
|
command: [xmllint, '--noent', '--valid', '--path', '@OUTDIR@', '-o', '@OUTPUT@', '@INPUT@'],
|
||
|
depends: doc_generated,
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
docs += postgres_full_xml
|
||
|
alldocs += postgres_full_xml
|
||
|
|
||
|
|
||
|
#
|
||
|
# Full documentation as html, text
|
||
|
#
|
||
|
if xsltproc.found()
|
||
|
xsltproc_flags = [
|
||
|
'--stringparam', 'pg.version', pg_version,
|
||
|
'--param', 'website.stylesheet', '1'
|
||
|
]
|
||
|
|
||
|
|
||
|
# FIXME: Should use a wrapper around xsltproc --load-trace to compute a
|
||
|
# depfile
|
||
|
html = custom_target('html',
|
||
|
input: ['stylesheet.xsl', postgres_full_xml],
|
||
|
output: 'html',
|
||
|
depends: doc_generated,
|
||
|
command: [xsltproc, '-o', '@OUTDIR@/', xsltproc_flags, '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
alldocs += html
|
||
|
|
||
|
# build multi-page html docs as part of docs target
|
||
|
docs += html
|
||
|
|
||
|
html_help = custom_target('html_help',
|
||
|
input: ['stylesheet-hh.xsl', postgres_full_xml],
|
||
|
output: 'htmlhelp',
|
||
|
depends: doc_generated,
|
||
|
command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTDIR@/', xsltproc_flags, '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
alldocs += html_help
|
||
|
|
||
|
|
||
|
# single-page HTML
|
||
|
postgres_html = custom_target('postgres.html',
|
||
|
input: ['stylesheet-html-nochunk.xsl', postgres_full_xml],
|
||
|
output: 'postgres.html',
|
||
|
depends: doc_generated,
|
||
|
command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTPUT@', xsltproc_flags, '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
alldocs += postgres_html
|
||
|
|
||
|
# single-page text
|
||
|
if pandoc.found()
|
||
|
postgres_txt = custom_target('postgres.txt',
|
||
|
input: [postgres_html],
|
||
|
output: 'postgres.txt',
|
||
|
depends: doc_generated,
|
||
|
command: [pandoc, '-t', 'plain', '-o', '@OUTPUT@', '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
alldocs += postgres_txt
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
|
||
|
#
|
||
|
# INSTALL in html, text
|
||
|
#
|
||
|
if xsltproc.found()
|
||
|
install_xml = custom_target('INSTALL.xml',
|
||
|
input: ['standalone-profile.xsl', 'standalone-install.xml'],
|
||
|
output: 'INSTALL.xml',
|
||
|
depends: doc_generated + [postgres_full_xml],
|
||
|
command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTPUT@', xsltproc_flags, '--xinclude', '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
install_html = custom_target('INSTALL.html',
|
||
|
input: ['stylesheet-text.xsl', install_xml],
|
||
|
output: 'INSTALL.html',
|
||
|
command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTPUT@', xsltproc_flags, '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
alldocs += install_html
|
||
|
|
||
|
if pandoc.found()
|
||
|
# XXX: Makefile does an iconv translit here, but unclear why?
|
||
|
install = custom_target('INSTALL',
|
||
|
input: [install_html],
|
||
|
output: 'INSTALL',
|
||
|
command: [pandoc, '-t', 'plain', '-o', '@OUTPUT@', '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
alldocs += install
|
||
|
endif
|
||
|
|
||
|
endif
|
||
|
|
||
|
|
||
|
#
|
||
|
# Man pages
|
||
|
#
|
||
|
if xsltproc.found()
|
||
|
# FIXME: implement / consider sqlmansectnum logic
|
||
|
man = custom_target('man',
|
||
|
input: ['stylesheet-man.xsl', postgres_full_xml],
|
||
|
output: ['man1', 'man3', 'man7'],
|
||
|
depends: doc_generated,
|
||
|
command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTDIR@/', xsltproc_flags, '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
|
||
|
# build by default as part of docs target
|
||
|
docs += man
|
||
|
endif
|
||
|
|
||
|
|
||
|
#
|
||
|
# Full documentation as PDF
|
||
|
#
|
||
|
if fop.found() and xsltproc.found()
|
||
|
xsltproc_fo_flags = xsltproc_flags + ['--stringparam', 'img.src.path', meson.current_source_dir() + '/']
|
||
|
|
||
|
foreach format, detail: {'A4': 'A4', 'US': 'USletter'}
|
||
|
postgres_x_fo_f = 'postgres-@0@.fo'.format(format)
|
||
|
postgres_x_pdf_f = 'postgres-@0@.pdf'.format(format)
|
||
|
|
||
|
postgres_x_fo = custom_target(postgres_x_fo_f,
|
||
|
input: ['stylesheet-fo.xsl', postgres_full_xml],
|
||
|
output: [postgres_x_fo_f],
|
||
|
depends: doc_generated,
|
||
|
command: [xsltproc, '--path', '@OUTDIR@/', xsltproc_fo_flags,
|
||
|
'--stringparam', 'paper.type', detail,
|
||
|
'-o', '@OUTPUT@', '@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
|
||
|
postgres_x_pdf = custom_target(postgres_x_pdf_f,
|
||
|
input: [postgres_x_fo],
|
||
|
output: [postgres_x_pdf_f],
|
||
|
command: [fop, '-fo', '@INPUT@', '-pdf', '@OUTPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
alldocs += postgres_x_pdf
|
||
|
endforeach
|
||
|
endif
|
||
|
|
||
|
|
||
|
#
|
||
|
# epub
|
||
|
#
|
||
|
|
||
|
# This was previously implemented using dbtoepub - but that doesn't seem to
|
||
|
# support running in build != source directory (i.e. VPATH builds already
|
||
|
# weren't supported).
|
||
|
if pandoc.found() and xsltproc.found()
|
||
|
postgres_epub = custom_target('postgres.epub',
|
||
|
input: postgres_full_xml,
|
||
|
output: 'postgres.epub',
|
||
|
command: [pandoc, '-f', 'docbook', '-t', 'epub', '-o', '@OUTPUT@', '--resource-path=@CURRENT_SOURCE_DIR@',
|
||
|
'@INPUT@'],
|
||
|
build_by_default: false,
|
||
|
)
|
||
|
alldocs += postgres_epub
|
||
|
endif
|
||
|
|
||
|
if docs.length() == 0
|
||
|
run_target('docs', command: [missing, 'xsltproc'])
|
||
|
else
|
||
|
alias_target('docs', docs)
|
||
|
endif
|
||
|
|
||
|
if alldocs.length() == 0
|
||
|
run_target('alldocs', command: [missing, 'xsltproc'])
|
||
|
else
|
||
|
alias_target('alldocs', alldocs)
|
||
|
endif
|