mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2026-02-20 01:40:52 -05:00
It turns out that changes in the building environment, the version of Doxygen being a prime suspect, can break the validation. Invalid DocBook XML does lead to likely broken documentation, but perhaps it is better than failing to build or having to disable documentation completely. CI turns DocBook validation on, because the CI environment is stable and known, and we do want to catch mistakes in hand-written DocBook files. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
121 lines
3.1 KiB
Meson
121 lines
3.1 KiB
Meson
proto_to_docboox_xsl = files('xsl/protocol-to-docbook.xsl')
|
|
proto_iface_to_docboox_xsl = files('xsl/protocol-interfaces-to-docbook.xsl')
|
|
merge_mapcoords_xsl = files('xsl/merge-mapcoords.xsl')
|
|
to_publican_xsl = files('xsl/doxygen-to-publican.xsl')
|
|
|
|
publican_inputs = []
|
|
publican_image_maps = []
|
|
|
|
foreach src : files([
|
|
'Wayland.xml', # must be first in publican_inputs
|
|
'Wayland.ent',
|
|
'Book_Info.xml',
|
|
'Author_Group.xml',
|
|
'Foreword.xml',
|
|
'Protocol.xml',
|
|
'Xwayland.xml',
|
|
'Compositors.xml',
|
|
'Content_Updates.xml',
|
|
'Color.xml',
|
|
'Client.xml',
|
|
'Server.xml',
|
|
'Message_XML.xml',
|
|
])
|
|
name = fs.name(src)
|
|
publican_inputs += fs.copyfile(name)
|
|
endforeach
|
|
|
|
publican_inputs += custom_target(
|
|
'ProtocolSpec.xml',
|
|
command: [ xsltproc, '-o', '@OUTPUT@', proto_to_docboox_xsl, '@INPUT@' ],
|
|
input: wayland_protocol_xml,
|
|
output: 'ProtocolSpec.xml'
|
|
)
|
|
|
|
publican_inputs += custom_target(
|
|
'ProtocolInterfaces.xml',
|
|
command: [ xsltproc, '-o', '@OUTPUT@', proto_iface_to_docboox_xsl, '@INPUT@' ],
|
|
input: wayland_protocol_xml,
|
|
output: 'ProtocolInterfaces.xml'
|
|
)
|
|
|
|
# Doxygen generates a myriad of files, and offers an XSLT
|
|
# to combine them all into one. This does the combining.
|
|
# The result is still Doxygen XML.
|
|
ClientAPI_combined = custom_target(
|
|
'ClientAPI-combine-doxygen-files',
|
|
command: [ xsltproc, '-o', '@OUTPUT@', '@INPUT@' ],
|
|
input: [ doxygen_Client_combine_xslt, doxygen_Client_index_xml ],
|
|
output: 'ClientAPI-combined.xml'
|
|
)
|
|
|
|
# This converts Doxygen XML to DocBook XML.
|
|
publican_inputs += custom_target(
|
|
'ClientAPI-doxygen-to-docbook',
|
|
command: [ xsltproc, '-o', '@OUTPUT@', '--stringparam', 'which', 'Client', to_publican_xsl, '@INPUT@' ],
|
|
input: ClientAPI_combined,
|
|
output: 'ClientAPI.xml'
|
|
)
|
|
|
|
ServerAPI_combined = custom_target(
|
|
'ServerAPI-combine-doxygen-files',
|
|
command: [ xsltproc, '-o', '@OUTPUT@', '@INPUT@' ],
|
|
input: [ doxygen_Server_combine_xslt, doxygen_Server_index_xml ],
|
|
output: 'ServerAPI-combined.xml'
|
|
)
|
|
|
|
publican_inputs += custom_target(
|
|
'ServerAPI-doxygen-to-docbook',
|
|
command: [ xsltproc, '-o', '@OUTPUT@', '--stringparam', 'which', 'Server', to_publican_xsl, '@INPUT@' ],
|
|
input: ServerAPI_combined,
|
|
output: 'ServerAPI.xml'
|
|
)
|
|
|
|
subdir('html/css')
|
|
subdir('html/images')
|
|
|
|
foreach src : files([
|
|
'Architecture.xml',
|
|
'Introduction.xml'
|
|
])
|
|
name = fs.name(src)
|
|
publican_inputs += custom_target(
|
|
name,
|
|
command: [
|
|
xsltproc,
|
|
'-o', '@OUTPUT@',
|
|
'--stringparam', 'basedir', meson.current_build_dir() / 'html',
|
|
merge_mapcoords_xsl,
|
|
'@INPUT@',
|
|
],
|
|
input: src,
|
|
output: [name],
|
|
depends: publican_image_maps,
|
|
)
|
|
endforeach
|
|
|
|
skip_validation = '--skip-validation'
|
|
if get_option('docbook_validation')
|
|
skip_validation = []
|
|
endif
|
|
|
|
custom_target(
|
|
'Wayland-docbook-html',
|
|
command: [
|
|
xmlto,
|
|
skip_validation,
|
|
'--stringparam', 'chunker.output.encoding=UTF-8',
|
|
'--stringparam', 'chunk.section.depth=0',
|
|
'--stringparam', 'toc.section.depth=1',
|
|
'--stringparam', 'generate.consistent.ids=1',
|
|
'--stringparam', 'html.stylesheet=css/default.css',
|
|
'-o', '@OUTPUT@',
|
|
'html',
|
|
'@INPUT0@'
|
|
],
|
|
input: publican_inputs,
|
|
output: 'html',
|
|
build_by_default: true,
|
|
install: true,
|
|
install_dir: publican_install_prefix,
|
|
)
|