aboutsummaryrefslogtreecommitdiffstats
path: root/doc/publican/meson.build
blob: 9704f29adbed86b851e9ddee9777dbc90705ed2a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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',
	'Preface.xml',
	'Revision_History.xml',
	'Protocol.xml',
	'Xwayland.xml',
	'Compositors.xml',
	'Color.xml',
	'Client.xml',
	'Server.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

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,
)