meson: Build and install man pages
authorArnaud Rebillout <arnaud.rebillout@collabora.com>
Mon, 1 Oct 2018 05:57:12 +0000 (12:57 +0700)
committerArun Raghavan <arun@arunraghavan.net>
Thu, 4 Oct 2018 03:14:18 +0000 (08:44 +0530)
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
man/meson.build [new file with mode: 0644]
meson.build
src/utils/meson.build

diff --git a/man/meson.build b/man/meson.build
new file mode 100644 (file)
index 0000000..10e49ce
--- /dev/null
@@ -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
index b3aa49f..3eaff24 100644 (file)
@@ -297,4 +297,5 @@ endif
 # Now generate config.h from everything above
 configure_file(output : 'config.h', configuration : cdata)
 
+subdir('man')
 subdir('src')
index 840fc60..638d8e2 100644 (file)
@@ -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,