meson: Add bash completion support
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 4 Apr 2017 18:25:52 +0000 (14:25 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 4 Apr 2017 18:46:48 +0000 (14:46 -0400)
data/bash-completion/helpers/meson.build [new file with mode: 0644]
data/meson.build [new file with mode: 0644]
libs/gst/helpers/meson.build
meson.build

diff --git a/data/bash-completion/helpers/meson.build b/data/bash-completion/helpers/meson.build
new file mode 100644 (file)
index 0000000..0a7ed7b
--- /dev/null
@@ -0,0 +1,9 @@
+bash_helper_conf = configuration_data()
+bash_helper_conf.set('GST_COMPLETION_HELPER_INSTALLED',
+    '@0@/@1@/gst-completion-helper'.format(prefix, helpers_install_dir))
+bash_helper_conf.set('GST_API_VERSION', apiversion)
+
+configure_file(input : 'gst.in',
+    output : 'gst',
+    install_dir : bash_helpers_dir,
+    configuration : bash_helper_conf)
diff --git a/data/meson.build b/data/meson.build
new file mode 100644 (file)
index 0000000..c9130e0
--- /dev/null
@@ -0,0 +1,5 @@
+if (bashcomp_found)
+  subdir('bash-completion/helpers')
+  install_data('bash-completion/completions/gst-launch-1.0', install_dir : bash_completions_dir)
+  install_data('bash-completion/completions/gst-inspect-1.0', install_dir : bash_completions_dir)
+endif
index be1a18d..fcba589 100644 (file)
@@ -10,5 +10,15 @@ gst_plugin_scanner = executable('gst-plugin-scanner',
 
 gst_scanner_dir = meson.current_build_dir()
 
+if bashcomp_found
+  gst_completion_helper = executable('gst-completion-helper',
+    'gst-completion-helper.c',
+    c_args : gst_c_args,
+    include_directories : [configinc],
+    dependencies : [gobject_dep, glib_dep, gst_dep],
+    install_dir : helpers_install_dir,
+    install: true,
+  )
+endif
+
 # FIXME: gst-ptp-helper
-# FIXME: gst-completion-helper
index e7d219b..a756792 100644 (file)
@@ -27,7 +27,7 @@ prefix = get_option('prefix')
 libtype = get_option('library_format')
 
 libexecdir = get_option('libexecdir')
-helpers_install_dir = libexecdir + '/gstreamer-1.0/'
+helpers_install_dir = join_paths(libexecdir, 'gstreamer-1.0')
 
 cc = meson.get_compiler('c')
 
@@ -375,6 +375,41 @@ if not py3.found()
   py3 = find_program('python')
 endif
 
+bashcomp_dep = dependency('bash-completion', version : '>= 2.0', required : false)
+
+bashcomp_found = bashcomp_dep.found()
+bash_completions_dir = ''
+bash_helpers_dir = ''
+
+if bashcomp_found
+  # get_pkgconfig_variable() won't let us set the prefix
+  pkgconfig = find_program('pkg-config')
+
+  runcmd = run_command(pkgconfig,
+      '--define-variable=prefix="."',
+      '--variable=completionsdir',
+      'bash-completion')
+
+  if (runcmd.returncode() == 0)
+    bash_completions_dir = runcmd.stdout().strip()
+  else
+    message('Found bash-completion but the .pc file did not set \'completionsdir\'.')
+    bashcomp_found = false
+  endif
+
+  runcmd = run_command(pkgconfig,
+      '--define-variable=prefix="."',
+      '--variable=helpersdir',
+      'bash-completion')
+
+  if (runcmd.returncode() == 0)
+    bash_helpers_dir = runcmd.stdout().strip()
+  else
+    message('Found bash-completion, but the .pc file did not set \'helpersdir\'.')
+    bashcomp_found = false
+  endif
+endif
+
 subdir('gst')
 subdir('libs')
 subdir('plugins')
@@ -382,6 +417,7 @@ subdir('tools')
 subdir('pkgconfig')
 subdir('tests')
 subdir('po')
+subdir('data')
 
 if build_machine.system() == 'windows'
   message('Disabling gtk-doc while building on Windows')