[libgnome-volume-control/meson] Add support for building with meson



commit 01e1fde6e5cc416d4fe7b1d8a7afb97455210e3a
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu May 25 18:22:34 2017 +0200

    Add support for building with meson
    
    Allow the module to be included as a meson subproject() in addition
    to the existing autotools support. Based heavily on the meson
    support in https://git.gnome.org/browse/libgd.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=783207

 config.h.meson    |    3 +
 meson.build       |  147 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 meson_options.txt |   35 +++++++++++++
 3 files changed, 185 insertions(+), 0 deletions(-)
---
diff --git a/config.h.meson b/config.h.meson
new file mode 100644
index 0000000..0363db6
--- /dev/null
+++ b/config.h.meson
@@ -0,0 +1,3 @@
+#mesondefine GETTEXT_PACKAGE
+#mesondefine PACKAGE_VERSION
+#mesondefine HAVE_ALSA
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..7433f6e
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,147 @@
+project('gvc', 'c',
+  meson_version: '>= 0.38.0',
+  default_options: ['static=true']
+)
+
+if not meson.is_subproject()
+  error('This project is only intended to be used as a subproject!')
+endif
+
+gnome = import('gnome')
+
+pkglibdir = get_option('pkglibdir')
+pkgdatadir = get_option('pkgdatadir')
+
+alsa = dependency('alsa', required: false)
+gio = dependency('gio-2.0')
+gobject = dependency('gobject-2.0')
+libpulse = dependency('libpulse', version: '>= 2.0')
+libpulse_glib = dependency('libpulse-mainloop-glib')
+
+cdata = configuration_data()
+cdata.set_quoted('GETTEXT_PACKAGE', get_option('package-name'))
+cdata.set_quoted('PACKAGE_VERSION', get_option('package-version'))
+cdata.set10('HAVE_ALSA', alsa.found())
+
+config = configure_file(
+  input: 'config.h.meson',
+  output: 'config.h',
+  configuration: cdata
+)
+
+libgvc_inc = include_directories('.')
+
+libgvc_gir_sources = [
+  'gvc-mixer-card.h',
+  'gvc-mixer-card.c',
+  'gvc-mixer-stream.h',
+  'gvc-mixer-stream.c',
+  'gvc-channel-map.h',
+  'gvc-channel-map.c',
+  'gvc-mixer-ui-device.h',
+  'gvc-mixer-ui-device.c',
+  'gvc-mixer-sink.h',
+  'gvc-mixer-sink.c',
+  'gvc-mixer-source.h',
+  'gvc-mixer-source.c',
+  'gvc-mixer-sink-input.h',
+  'gvc-mixer-sink-input.c',
+  'gvc-mixer-source-output.h',
+  'gvc-mixer-source-output.c',
+  'gvc-mixer-event-role.h',
+  'gvc-mixer-event-role.c',
+  'gvc-mixer-control.h',
+  'gvc-mixer-control.c'
+]
+
+libgvc_no_gir_sources = [
+  'gvc-mixer-card-private.h',
+  'gvc-mixer-stream-private.h',
+  'gvc-channel-map-private.h',
+  'gvc-mixer-control-private.h',
+  'gvc-pulseaudio-fake.h'
+]
+
+libgvc_deps = [
+  alsa,
+  gio,
+  gobject,
+  libpulse,
+  libpulse_glib
+]
+
+static = get_option('static')
+with_introspection = get_option('with-introspection')
+
+if static and with_introspection
+  error('Currently meson requires a shared library for building girs.')
+endif
+
+c_args = ['-DG_LOG_DOMAIN="Gvc"']
+
+if with_introspection
+  c_args += '-DWITH_INTROSPECTION'
+endif
+
+if static
+  libgvc_static = static_library('gvc',
+    sources: libgvc_gir_sources + libgvc_no_gir_sources,
+    include_directories: libgvc_inc,
+    dependencies: libgvc_deps,
+    c_args: c_args
+  )
+
+  libgvc = libgvc_static
+else
+  if pkglibdir == ''
+    error('Installing shared library, but pkglibdir is unset!')
+  endif
+
+  libgvc_shared = shared_library('gvc',
+    sources: libgvc_gir_sources + libgvc_no_gir_sources,
+    include_directories: libgvc_inc,
+    dependencies: libgvc_deps,
+    c_args: c_args,
+    install_rpath: pkgdatadir,
+    install_dir: pkglibdir,
+    install: true
+  )
+
+  libgvc = libgvc_shared
+endif
+
+if with_introspection
+  if pkgdatadir == ''
+    error('Installing introspection, but pkgdatadir is unset!')
+  elif (pkglibdir == '')
+    error('Installing introspection, but pkglibdir is unset!')
+  endif
+
+  libgvc_gir = gnome.generate_gir(libgvc,
+    sources: libgvc_gir_sources,
+    nsversion: '1.0',
+    namespace: 'Gvc',
+    includes: ['Gio-2.0', 'GObject-2.0'],
+    extra_args: ['-DWITH_INTROSPECTION', '--quiet'],
+    install_dir_gir: pkgdatadir,
+    install_dir_typelib: pkglibdir,
+    install: true
+  )
+endif
+
+if alsa.found()
+  executable('test-audio-device-selection',
+    sources: 'test-audio-device-selection.c',
+    link_with: libgvc,
+    dependencies: libgvc_deps,
+    c_args: c_args
+  )
+endif
+
+libgvc_dep = declare_dependency(
+  link_with: libgvc,
+  include_directories: libgvc_inc,
+  dependencies: libgvc_deps,
+  compile_args: c_args,
+  sources: libgvc_gir_sources + libgvc_no_gir_sources
+)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..aa802b6
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,35 @@
+option('package-name',
+  type: 'string',
+  value: '',
+  description: 'The value for the GETTEXT_PACKAGE define.'
+)
+
+option('package-version',
+  type: 'string',
+  value: '',
+  description: 'The value for the PACKAGE_VERSION define.'
+)
+
+option('pkglibdir',
+  type: 'string',
+  value: '',
+  description: 'The private directory the shared library/typelib will be installed into.'
+)
+
+option('pkgdatadir',
+  type: 'string',
+  value: '',
+  description: 'The private directory the gir file will be installed into.'
+)
+
+option('static',
+  type: 'boolean',
+  value: false,
+  description: 'Build as a static library.'
+)
+
+option('with-introspection',
+  type: 'boolean',
+  value: false,
+  description: 'Build gobject-introspection support'
+)


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