summaryrefslogtreecommitdiff
path: root/doc/doxygen/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'doc/doxygen/meson.build')
-rw-r--r--doc/doxygen/meson.build105
1 files changed, 105 insertions, 0 deletions
diff --git a/doc/doxygen/meson.build b/doc/doxygen/meson.build
new file mode 100644
index 0000000..c39b282
--- /dev/null
+++ b/doc/doxygen/meson.build
@@ -0,0 +1,105 @@
+# 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.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',
+])
+
+extra_client_files = [
+ 'mainpage.dox',
+ wayland_client_protocol_h,
+]
+
+extra_server_files = [
+ 'mainpage.dox',
+ wayland_server_protocol_h,
+]
+
+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,
+ },
+}
+
+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
+ 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=doc/doxygen/@0@.stamp'.format(t_name),
+ 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
+custom_target(
+ 'man-pages-3',
+ command: [
+ gen_doxygen,
+ '--builddir=@OUTDIR@',
+ '--output-format=man3',
+ '--stamp=doc/doxygen/man3.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')),
+)