From 7f05b835df248fe1da10219b6faf7e29e18c4d7b Mon Sep 17 00:00:00 2001 From: Arnaud Rebillout Date: Mon, 1 Oct 2018 12:57:12 +0700 Subject: [PATCH] meson: Build and install man pages Signed-off-by: Arnaud Rebillout --- man/meson.build | 82 +++++++++++++++++++++++++++++++++++++++++++ meson.build | 1 + src/utils/meson.build | 5 --- 3 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 man/meson.build diff --git a/man/meson.build b/man/meson.build new file mode 100644 index 000000000..10e49ce91 --- /dev/null +++ b/man/meson.build @@ -0,0 +1,82 @@ +# TODO How are symlinks installed by meson? +# We might need meson.add_install_script() + +# man page name, section, [aliases] +manpages = [ + ['default.pa', '5'], + ['pacat', '1', ['paplay', 'parec', 'parecord', 'pamon']], + ['pacmd', '1'], + ['pactl', '1'], + ['padsp', '1'], + ['pasuspender', '1'], + ['pax11publish', '1'], + ['pulse-cli-syntax', '5'], + ['pulse-client.conf', '5'], + ['pulse-daemon.conf','5'], + ['pulseaudio', '1'], + ['start-pulseaudio-x11', '1'], +] + +# FIXME: Add esdcompat if HAVE_ESOUND +#manpages += ['esdcompat', '1'], + +# FIXME: This should be conditional +want_man = true + +man_data = configuration_data() +man_data.set('PACKAGE_URL', 'http://pulseaudio.org/') +man_data.set('PACKAGE_BUGREPORT', 'pulseaudio-discuss (at) lists (dot) freedesktop (dot) org') +man_data.set('PA_DEFAULT_CONFIG_DIR', cdata.get_unquoted('PA_DEFAULT_CONFIG_DIR')) + +perl = find_program('perl', required: want_man == true) +xmltoman_cmd = [perl, join_paths(meson.current_source_dir(), 'xmltoman')] +xmllint = find_program('xmllint', required: want_man == true) + +foreach tuple : manpages + stem = tuple[0] + section = tuple[1] + aliases = tuple.get(2, []) + + man = stem + '.' + section + xmlin = man + '.xml.in' + xml = man + '.xml' + + xml_file = configure_file( + input : xmlin, + output : xml, + configuration : man_data, + ) + + mandirn = join_paths(get_option('mandir'), 'man' + section) + + custom_target( + man + '-target', + input : xml_file, + output : man, + capture : true, + command : xmltoman_cmd + ['@INPUT@'], + install : want_man, + install_dir : mandirn, + ) + + foreach alias : aliases + link = custom_target( + alias, + output : alias, + command : ['ln', '-fs', man, '@OUTPUT@'], + install : want_man, + install_dir : mandirn, + ) + endforeach + + if xmllint.found() + test( + 'Validate xml file ' + xml, + xmllint, + args : [ + '--noout', '--valid', + '--path', meson.current_source_dir(), + join_paths(meson.current_build_dir(), xml)] + ) + endif +endforeach diff --git a/meson.build b/meson.build index b3aa49f02..3eaff24a4 100644 --- a/meson.build +++ b/meson.build @@ -297,4 +297,5 @@ endif # Now generate config.h from everything above configure_file(output : 'config.h', configuration : cdata) +subdir('man') subdir('src') diff --git a/src/utils/meson.build b/src/utils/meson.build index 840fc6068..638d8e2f1 100644 --- a/src/utils/meson.build +++ b/src/utils/meson.build @@ -2,7 +2,6 @@ pacat_sources = [ 'pacat.c', ] -# FIXME: man pages executable('pacat', pacat_sources, install: true, @@ -16,7 +15,6 @@ pactl_sources = [ 'pactl.c', ] -# FIXME: man pages executable('pactl', pactl_sources, install: true, @@ -30,7 +28,6 @@ pasuspender_sources = [ 'pasuspender.c', ] -# FIXME: man pages executable('pasuspender', pasuspender_sources, install: true, @@ -43,7 +40,6 @@ pacmd_sources = [ 'pacmd.c', ] -# FIXME: man pages executable('pacmd', pacmd_sources, install: true, @@ -56,7 +52,6 @@ pax11publish_sources = [ 'pax11publish.c', ] -# FIXME: man pages executable('pax11publish', pax11publish_sources, install: true,