[rygel] build: Add man_pages build options



commit 5a54c5bb1c9609b7bffe6b3e05f934030e4e990e
Author: Jens Georg <mail jensge org>
Date:   Sat Dec 26 18:40:51 2020 +0100

    build: Add man_pages build options
    
    Check if xsltproc runs succesfully and fail otherwise
    
    Fixes #192

 doc/man/meson.build | 98 ++++++++++++++++++++++++++++++++---------------------
 doc/meson.build     |  5 ++-
 meson_options.txt   |  1 +
 3 files changed, 64 insertions(+), 40 deletions(-)
---
diff --git a/doc/man/meson.build b/doc/man/meson.build
index ef3fcfbf..4c92eab2 100644
--- a/doc/man/meson.build
+++ b/doc/man/meson.build
@@ -1,43 +1,63 @@
 xsltproc = find_program('xsltproc', required: false)
 
 if xsltproc.found()
-  xlstproc_flags = [
-    '--nonet',
-    '--stringparam', 'man.output.quietly', '1',
-    '--stringparam', 'funcsynopsis.style', 'ansi',
-    '--stringparam', 'man.authors.section.enabled', '1',
-    '--stringparam', 'man.copyright.section.enabled', '1',
-  ]
-
-  xsltproc_args = [
-    xsltproc,
-    xlstproc_flags,
-    '-o', '@OUTPUT@',
-    'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
-    '@INPUT@',
-  ]
-
-  man_input_files = [
-    'rygel.xml',
-    'rygel.conf.xml'
-  ]
-
-  man_output_files = [
-    'rygel.1',
-    'rygel.conf.5'
-  ]
-
-  custom_target('man 1 pages',
-                input: 'rygel.xml',
-                output: 'rygel.1',
-                command: xsltproc_args,
-                install: true,
-                install_dir: join_paths(get_option('mandir'), 'man1'))
-
-  custom_target('man 5 pages',
-                input: 'rygel.conf.xml',
-                output: 'rygel.conf.5',
-                command: xsltproc_args,
-                install: true,
-                install_dir: join_paths(get_option('mandir'), 'man5'))
+    stylesheet = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl'
+
+    xlstproc_flags = [
+        '--nonet',
+        '--stringparam', 'man.output.quietly', '1',
+        '--stringparam', 'funcsynopsis.style', 'ansi',
+        '--stringparam', 'man.authors.section.enabled', '1',
+        '--stringparam', 'man.copyright.section.enabled', '1',
+    ]
+
+    xsltproc_args = [
+        xsltproc,
+        xlstproc_flags,
+        '-o', '@OUTPUT@',
+        stylesheet,
+        '@INPUT@',
+    ]
+
+    man_input_files = [
+        'rygel.xml',
+        'rygel.conf.xml'
+    ]
+
+    man_output_files = [
+        'rygel.1',
+        'rygel.conf.5'
+    ]
+
+    r = run_command(
+        [
+            xsltproc,
+            xlstproc_flags,
+            '-o', '/dev/null',
+            stylesheet,
+            'rygel.xml'
+        ]
+    )
+
+    if (r.returncode() == 0)
+        custom_target(
+            'man 1 pages',
+            input: 'rygel.xml',
+            output: 'rygel.1',
+            command: xsltproc_args,
+            install: true,
+            install_dir: join_paths(get_option('mandir'), 'man1')
+        )
+
+        custom_target(
+            'man 5 pages',
+            input: 'rygel.conf.xml',
+            output: 'rygel.conf.5',
+            command: xsltproc_args,
+            install: true,
+            install_dir: join_paths(get_option('mandir'), 'man5')
+        )
+    else
+        error('Cannot bulid man pages, failed to run xsltproc')
+    endif
 endif
diff --git a/doc/meson.build b/doc/meson.build
index 41c733e5..91c08fae 100644
--- a/doc/meson.build
+++ b/doc/meson.build
@@ -1,2 +1,5 @@
-subdir('man')
+if get_option('man_pages')
+    subdir('man')
+endif
+
 subdir('reference')
diff --git a/meson_options.txt b/meson_options.txt
index cb604c4e..c60ff1a9 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,6 @@
 option('uninstalled', type: 'boolean', value: 'false', description: 'Run Rygel from build directory only')
 option('api-docs', type: 'boolean', value: 'false', description: 'Build the API documentation')
+option('man_pages', type: 'boolean', value: 'true', description: 'Build the man pages')
 option('systemd-user-units-dir', type : 'string', value : 'auto', description : 'Where to install the 
systemd user unit (use special values "auto" or "none", or pass a path')
 option('plugins', type : 'array', choices : ['external', 'gst-launch', 'lms', 'media-export', 'mpris', 
'playbin', 'ruih', 'tracker', 'tracker3'])
 option('engines', type : 'array', choices : ['simple', 'gstreamer'])


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]