summaryrefslogtreecommitdiff
path: root/doc/doxygen/meson.build
blob: 611262064a46e28662f39e59d3bde90aa683b090 (plain)
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
117
# Here be dragons

dot_gv = {
	'wayland-architecture': files('dot/wayland-architecture.gv'),
	'x-architecture': files('dot/x-architecture.gv'),
}

# This is a workaround for Meson's custom_target() directive, which
# currently does not support outputs pointing to a sub-directory
# XXX: try turning these into maps, so they can be indexed with picture name
dot_png = []
dot_map = []

doxygen_conf = configuration_data()
doxygen_conf.set('VERSION', meson.project_version())
doxygen_conf.set('top_builddir', meson.project_build_root())
wayland_doxygen = configure_file(
	input: 'wayland.doxygen.in',
	output: 'wayland.doxygen',
	configuration: doxygen_conf,
)

shared_files = files([
	'../../src/wayland-util.h',
])

client_files = files([
	'../../src/wayland-client.c',
	'../../src/wayland-client.h',
	'../../src/wayland-client-core.h',
])

server_files = files([
	'../../src/event-loop.c',
	'../../src/wayland-server.c',
	'../../src/wayland-server.h',
	'../../src/wayland-server-core.h',
	'../../src/wayland-shm.c',
])

cursor_files = files([
	'../../cursor/wayland-cursor.c',
	'../../cursor/wayland-cursor.h',
])

extra_client_files = [
	'mainpage.dox',
	wayland_client_protocol_h,
]

extra_server_files = [
	'mainpage.dox',
	wayland_server_protocol_h,
]

extra_cursor_files = [
	'mainpage.dox',
]

gen_doxygen = find_program('gen-doxygen.py')

subdir('xml')

formats = {
	'html': {
		'Client': shared_files + client_files + extra_client_files,
		'Server': shared_files + server_files + extra_server_files,
		'Cursor': shared_files + cursor_files + extra_cursor_files,
	},
}

foreach f_name, sections: formats
	foreach s_name, s_files: sections
		t_name = '@0@-@1@-doc'.format(f_name, s_name)

		# We do not really need an output file, but Meson
		# will complain if one is not set, so we use a
		# dummy 'stamp' file
		stamp = join_paths(meson.current_build_dir(), '@0@.stamp'.format(t_name))
		custom_target(
			t_name,
			command: [
				gen_doxygen,
				# XXX pass doxygen path as argument
				'--builddir=@OUTDIR@',
				'--section=@0@'.format(s_name),
				'--output-format=@0@'.format(f_name),
				'--stamp=@0@'.format(stamp),
				wayland_doxygen,
				'@INPUT@',
			],
			input: s_files,
			output: '@0@.stamp'.format(t_name),
			depends: [dot_png, dot_map],
			build_by_default: true,
		)
	endforeach
endforeach

man_files = shared_files + server_files + client_files + cursor_files
stamp = join_paths(meson.current_build_dir(), 'man3.stamp')
custom_target(
	'man-pages-3',
	command: [
		gen_doxygen,
		'--builddir=@OUTDIR@',
		'--output-format=man3',
		'--stamp=@0@'.format(stamp),
		wayland_doxygen,
		'@INPUT@',
	],
	input: man_files,
	output: 'man3',
	build_by_default: true,
	install: true,
	install_dir: join_paths(get_option('prefix'), get_option('mandir')),
)