[gom] build: Add support for building with Meson



commit d1646225e1e5fb49621220122b5ac9ee27e0263c
Author: Mathieu Bridon <bochecha daitauha fr>
Date:   Tue Mar 7 23:07:40 2017 +0100

    build: Add support for building with Meson
    
    https://bugzilla.gnome.org/show_bug.cgi?id=779732

 bindings/meson.build        |    1 +
 bindings/python/meson.build |   33 +++++++++++++++++++++++++
 doc/meson.build             |   18 +++++++++++++
 gom/meson.build             |   56 +++++++++++++++++++++++++++++++++++++++++++
 meson.build                 |   44 +++++++++++++++++++++++++++++++++
 meson_options.txt           |    2 +
 tests/meson.build           |   45 ++++++++++++++++++++++++++++++++++
 7 files changed, 199 insertions(+), 0 deletions(-)
---
diff --git a/bindings/meson.build b/bindings/meson.build
new file mode 100644
index 0000000..4d5f338
--- /dev/null
+++ b/bindings/meson.build
@@ -0,0 +1 @@
+subdir('python')
diff --git a/bindings/python/meson.build b/bindings/python/meson.build
new file mode 100644
index 0000000..9c9f6ba
--- /dev/null
+++ b/bindings/python/meson.build
@@ -0,0 +1,33 @@
+python3 = find_program('python3')
+
+get_overridedir = '''
+import os
+import sysconfig
+
+libdir = sysconfig.get_config_var('LIBDIR')
+
+if not libdir:
+  libdir = '/usr/lib'
+
+try:
+  import gi
+  overridedir = gi._overridesdir
+except ImportError:
+  purelibdir = sysconfig.get_path('purelib')
+  overridedir = os.path.join(purelibdir, 'gi', 'overrides')
+
+if overridedir.startswith(libdir): # Should always be True..
+  overridedir = overridedir[len(libdir) + 1:]
+
+print(overridedir)
+'''
+
+ret = run_command([python3, '-c', get_overridedir])
+
+if ret.returncode() != 0
+  error('Failed to determine pygobject overridedir')
+else
+  pygobject_override_dir = join_paths(get_option('libdir'), ret.stdout().strip())
+endif
+
+install_data('gi/overrides/Gom.py', install_dir: pygobject_override_dir)
diff --git a/doc/meson.build b/doc/meson.build
new file mode 100644
index 0000000..de4aa62
--- /dev/null
+++ b/doc/meson.build
@@ -0,0 +1,18 @@
+vdata = configuration_data()
+vdata.set('VERSION', meson.project_version())
+version_xml = configure_file(
+  input: 'version.xml.in',
+  output: 'version.xml',
+  configuration : vdata)
+
+
+gnome.gtkdoc('gom',
+  main_sgml: 'gom-docs.sgml',
+  src_dir: [
+    join_paths(meson.source_root(), 'gom'),
+    join_paths(meson.build_root(), 'gom'),
+  ],
+  dependencies: libgom_dep,
+  gobject_typesfile: 'gom.types',
+  scan_args: ['--rebuild-types'],
+  install: true)
diff --git a/gom/meson.build b/gom/meson.build
new file mode 100644
index 0000000..90e1e7d
--- /dev/null
+++ b/gom/meson.build
@@ -0,0 +1,56 @@
+gom_sources = [
+  'gom-adapter.c',
+  'gom-command-builder.c',
+  'gom-command.c',
+  'gom-cursor.c',
+  'gom-error.c',
+  'gom-filter.c',
+  'gom-repository.c',
+  'gom-resource.c',
+  'gom-resource-group.c',
+  'gom-sorting.c',
+]
+
+gom_headers = [
+  'gom.h',
+  'gom-adapter.h',
+  'gom-command-builder.h',
+  'gom-command.h',
+  'gom-cursor.h',
+  'gom-error.h',
+  'gom-filter.h',
+  'gom-repository.h',
+  'gom-resource-group.h',
+  'gom-resource.h',
+  'gom-autocleanups.h',
+  'gom-sorting.h',
+]
+
+gom_private_headers = [
+  'gom-resource-priv.h',
+]
+
+install_headers(gom_headers,
+  subdir: '@0@/@1@'.format(lib_name, meson.project_name()))
+
+libgom = shared_library(lib_name,
+  sources: gom_sources + gom_private_headers,
+  install: true,
+  soversion: soversion,
+  version: lt_version,
+  dependencies: [gio_dep, glib_dep, gobject_dep, sqlite3_dep])
+
+libgom_dep = declare_dependency(
+  dependencies: [gio_dep, glib_dep, gobject_dep, sqlite3_dep],
+  include_directories: include_directories('..'),
+  link_with: libgom)
+
+if enable_gir
+  gom_gir = gnome.generate_gir(libgom,
+    sources: gom_headers + gom_sources,
+    namespace: 'Gom', nsversion: lib_version,
+    identifier_prefix: 'Gom', symbol_prefix: 'gom',
+    dependencies: [gio_dep, gobject_dep],
+    includes: ['Gio-2.0', 'GObject-2.0'],
+    install: true)
+endif
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..3d22d38
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,44 @@
+project('gom', 'c',
+  version: '0.3.2',
+  license: 'LGPL-2.1+',
+  meson_version: '0.38.1')
+
+version = meson.project_version().split('.')
+soversion = 0
+current = 1
+age = 0
+lib_version = '@0@.@1@'.format(1, 0)
+lib_name = '@0@-@1@'.format(meson.project_name(), lib_version)
+lt_version = '@0@.@1@.@2@'.format(soversion, current, age)
+
+gnome = import('gnome')
+pkgconfig = import('pkgconfig')
+
+enable_gir = get_option('enable-introspection')
+enable_gtkdoc = get_option('enable-gtk-doc')
+
+gio_dep = dependency('gio-2.0', version: '>= 2.36')
+glib_dep = dependency('glib-2.0', version: '>= 2.36')
+gobject_dep = dependency('gobject-2.0', version: '>= 2.36')
+sqlite3_dep = dependency('sqlite3', version: '>= 3.7')
+gdkpixbuf_dep = dependency('gdk-pixbuf-2.0')
+
+subdir('gom')
+subdir('tests')
+
+if enable_gir
+  subdir('bindings')
+endif
+
+if enable_gtkdoc
+  subdir('doc')
+endif
+
+pkgconfig.generate(
+  name: meson.project_name(),
+  description: 'GObject Data Mapper',
+  version: meson.project_version(),
+  filebase: lib_name,
+  libraries: [libgom],
+  requires: 'gobject-2.0',
+  subdirs: lib_name)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..506ef16
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,2 @@
+option('enable-gtk-doc', type: 'boolean', value: false, description: 'Enable generating the API reference')
+option('enable-introspection', type: 'boolean', value: true, description: 'Enable GObject Introspection')
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..6e419f3
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,45 @@
+test_adapter = executable('test-gom-adapter', 'test-gom-adapter.c',
+  dependencies: [libgom_dep])
+test('test-gom-adapter', test_adapter)
+
+test_constraints = executable('test-gom-constraints', 'test-gom-constraints.c',
+  dependencies: [libgom_dep])
+test('test-gom-constraints', test_constraints)
+
+test_find = executable('test-gom-find', 'test-gom-find.c',
+  c_args: '-DDB="@0@/grl-bookmarks.db"'.format(meson.current_source_dir()),
+  dependencies: [libgom_dep])
+test('test-gom-find', test_find)
+
+test_find_specific = executable('test-gom-find-specific', 'test-gom-find-specific.c',
+  dependencies: [libgom_dep])
+test('test-gom-find-specific', test_find_specific)
+
+test_insert = executable('test-gom-insert', 'test-gom-insert.c',
+  dependencies: [libgom_dep])
+test('test-gom-insert', test_insert)
+
+test_migration = executable('test-gom-migration', 'test-gom-migration.c',
+  dependencies: [libgom_dep])
+test('test-gom-migration', test_migration)
+
+test_repository = executable('test-gom-repository', 'test-gom-repository.c',
+  dependencies: [libgom_dep])
+test('test-gom-repository', test_repository)
+
+test_sorting = executable('test-gom-sorting', 'test-gom-sorting.c',
+  dependencies: [libgom_dep])
+test('test-gom-sorting', test_sorting)
+
+test_stress = executable('test-gom-stress', 'test-gom-stress.c',
+  dependencies: [libgom_dep])
+test('test-gom-stress', test_stress, timeout: 300)
+
+test_transform = executable('test-gom-transform', 'test-gom-transform.c',
+  c_args: '-DIMAGE="@0@/gnome.png"'.format(meson.current_source_dir()),
+  dependencies: [libgom_dep, gdkpixbuf_dep])
+test('test-gom-transform', test_transform)
+
+test_update = executable('test-gom-update', 'test-gom-update.c',
+  dependencies: [libgom_dep])
+test('test-gom-update', test_update)


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