summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels De Graef <nielsdegraef@gmail.com>2017-08-25 15:41:05 +0200
committerNiels De Graef <Niels.DeGraef@barco.com>2018-06-16 11:13:16 +0200
commitb745b59af9a28a58acec033fceaff022ec4c818d (patch)
tree44532c75fcb3b91819b2fe0b718b804049b7e7bf
parent600e2d42e6097502ec0c42ab257d08fc0ca7933a (diff)
downloadfolks-wip/nielsdg/meson.tar.gz
Add support for the Meson build systemwip/nielsdg/meson
-rw-r--r--backends/bluez/meson.build40
-rw-r--r--backends/dummy/lib/meson.build44
-rw-r--r--backends/dummy/meson.build33
-rw-r--r--backends/eds/lib/meson.build46
-rw-r--r--backends/eds/meson.build36
-rw-r--r--backends/key-file/meson.build31
-rw-r--r--backends/libsocialweb/lib/meson.build42
-rw-r--r--backends/libsocialweb/meson.build34
-rw-r--r--backends/meson.build39
-rw-r--r--backends/ofono/meson.build34
-rw-r--r--backends/telepathy/lib/meson.build85
-rw-r--r--backends/telepathy/meson.build36
-rw-r--r--backends/tracker/lib/meson.build44
-rw-r--r--backends/tracker/meson.build35
-rw-r--r--docs/meson.build32
-rw-r--r--folks/meson.build111
-rw-r--r--meson.build155
-rw-r--r--meson_options.txt16
-rw-r--r--meson_post_install.py15
-rw-r--r--po/meson.build3
-rw-r--r--tests/bluez/meson.build36
-rw-r--r--tests/dummy/meson.build24
-rw-r--r--tests/eds/meson.build75
-rw-r--r--tests/key-file/meson.build30
-rw-r--r--tests/lib/bluez/meson.build15
-rw-r--r--tests/lib/dummy/meson.build19
-rw-r--r--tests/lib/eds/meson.build21
-rw-r--r--tests/lib/key-file/meson.build15
-rw-r--r--tests/lib/libsocialweb/meson.build15
-rw-r--r--tests/lib/meson.build75
-rw-r--r--tests/lib/tracker/meson.build15
-rw-r--r--tests/libsocialweb/meson.build22
-rw-r--r--tests/meson.build47
-rw-r--r--tests/tracker/meson.build78
-rw-r--r--tools/inspect/meson.build41
-rw-r--r--tools/meson.build32
36 files changed, 1471 insertions, 0 deletions
diff --git a/backends/bluez/meson.build b/backends/bluez/meson.build
new file mode 100644
index 00000000..448d87c5
--- /dev/null
+++ b/backends/bluez/meson.build
@@ -0,0 +1,40 @@
+folks_bluez_backend_name = 'bluez'
+
+folks_bluez_backend_sources = [
+ 'bluez-backend-factory.vala',
+ 'bluez-backend.vala',
+ 'bluez-persona-store.vala',
+ 'bluez-persona.vala',
+ 'org-bluez-obex-client.vala',
+ 'org-bluez.vala',
+]
+
+folks_bluez_backend_deps = [
+ backend_deps,
+ libebook,
+ libm,
+]
+
+folks_bluez_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_bluez_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_bluez_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_bluez_backend_name),
+]
+
+folks_bluez_backend = library(folks_bluez_backend_name,
+ folks_bluez_backend_sources,
+ dependencies: folks_bluez_backend_deps,
+ vala_args: folks_bluez_backend_vala_flags,
+ c_args: folks_bluez_backend_c_flags,
+ link_with: libfolks_internal,
+)
+
+folks_bluez_backend_dep = declare_dependency(
+ link_with: folks_bluez_backend,
+ include_directories: include_directories('.'),
+)
diff --git a/backends/dummy/lib/meson.build b/backends/dummy/lib/meson.build
new file mode 100644
index 00000000..e4ae1085
--- /dev/null
+++ b/backends/dummy/lib/meson.build
@@ -0,0 +1,44 @@
+folks_dummy_backend_name = 'folks-dummy'
+
+folks_dummy_backend_sources = [
+ 'dummy-backend.vala',
+ 'dummy-full-persona.vala',
+ 'dummy-persona-store.vala',
+ 'dummy-persona.vala',
+]
+
+folks_dummy_backend_deps = [
+ backend_deps,
+]
+
+folks_dummy_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_dummy_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_dummy_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_dummy_backend_name),
+]
+
+folks_dummy_backend = library(folks_dummy_backend_name,
+ folks_dummy_backend_sources,
+ dependencies: folks_dummy_backend_deps,
+ vala_args: folks_dummy_backend_vala_flags,
+ c_args: folks_dummy_backend_c_flags,
+ link_with: libfolks_internal,
+)
+
+folks_dummy_backend_dep = declare_dependency(
+ link_with: folks_dummy_backend,
+ include_directories: include_directories('.'),
+)
+
+# Pkg-config file
+configure_file(
+ input: 'folks-dummy.pc.in',
+ output: 'folks-dummy.pc',
+ configuration: pkg_conf,
+ install_dir: pkg_install_dir,
+)
diff --git a/backends/dummy/meson.build b/backends/dummy/meson.build
new file mode 100644
index 00000000..bfd016c5
--- /dev/null
+++ b/backends/dummy/meson.build
@@ -0,0 +1,33 @@
+# Backend library
+subdir('lib')
+
+# Backend itself
+dummy_backend_name = 'dummy'
+
+dummy_backend_sources = [
+ 'dummy-backend-factory.vala',
+]
+
+dummy_backend_deps = [
+ backend_deps,
+ folks_dummy_backend_dep,
+]
+
+dummy_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+dummy_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(dummy_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(dummy_backend_name),
+]
+
+dummy_backend = library(dummy_backend_name,
+ dummy_backend_sources,
+ dependencies: dummy_backend_deps,
+ vala_args: dummy_backend_vala_flags,
+ c_args: dummy_backend_c_flags,
+ link_with: libfolks_internal,
+)
diff --git a/backends/eds/lib/meson.build b/backends/eds/lib/meson.build
new file mode 100644
index 00000000..7d87ecc7
--- /dev/null
+++ b/backends/eds/lib/meson.build
@@ -0,0 +1,46 @@
+folks_eds_backend_name = 'folks-eds'
+
+folks_eds_backend_sources = [
+ 'edsf-persona-store.vala',
+ 'edsf-persona.vala',
+]
+
+folks_eds_backend_deps = [
+ backend_deps,
+ libebook,
+ libebook_contacts,
+ libedataserver,
+ libxml,
+]
+
+folks_eds_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_eds_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_eds_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_eds_backend_name),
+]
+
+folks_eds_backend = library(folks_eds_backend_name,
+ folks_eds_backend_sources,
+ dependencies: folks_eds_backend_deps,
+ vala_args: folks_eds_backend_vala_flags,
+ c_args: folks_eds_backend_c_flags,
+ link_with: libfolks_internal,
+)
+
+folks_eds_backend_dep = declare_dependency(
+ link_with: folks_eds_backend,
+ include_directories: include_directories('.'),
+)
+
+# Pkg-config file
+configure_file(
+ input: 'folks-eds.pc.in',
+ output: 'folks-eds.pc',
+ configuration: pkg_conf,
+ install_dir: pkg_install_dir,
+)
diff --git a/backends/eds/meson.build b/backends/eds/meson.build
new file mode 100644
index 00000000..5254a426
--- /dev/null
+++ b/backends/eds/meson.build
@@ -0,0 +1,36 @@
+# Backend library
+subdir('lib')
+
+# Backend itself
+folks_eds_backend_name = 'eds'
+
+folks_eds_backend_sources = [
+ 'eds-backend-factory.vala',
+ 'eds-backend.vala',
+]
+
+folks_eds_backend_deps = [
+ backend_deps,
+ libebook,
+ libedataserver,
+ folks_eds_backend_dep,
+]
+
+folks_eds_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_eds_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_eds_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_eds_backend_name),
+]
+
+folks_eds_backend = library('eds',
+ folks_eds_backend_sources,
+ dependencies: folks_eds_backend_deps,
+ vala_args: folks_eds_backend_vala_flags,
+ c_args: folks_eds_backend_c_flags,
+ link_with: libfolks_internal,
+)
diff --git a/backends/key-file/meson.build b/backends/key-file/meson.build
new file mode 100644
index 00000000..3df18c9a
--- /dev/null
+++ b/backends/key-file/meson.build
@@ -0,0 +1,31 @@
+folks_keyfile_backend_name = 'key-file'
+
+folks_keyfile_backend_sources = [
+ 'kf-backend-factory.vala',
+ 'kf-backend.vala',
+ 'kf-persona-store.vala',
+ 'kf-persona.vala',
+]
+
+folks_keyfile_backend_deps = [
+ backend_deps,
+]
+
+folks_keyfile_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_keyfile_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_keyfile_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_keyfile_backend_name),
+]
+
+folks_keyfile_backend = library(folks_keyfile_backend_name,
+ folks_keyfile_backend_sources,
+ dependencies: folks_keyfile_backend_deps,
+ vala_args: folks_keyfile_backend_vala_flags,
+ c_args: folks_keyfile_backend_c_flags,
+ link_with: libfolks_internal,
+)
diff --git a/backends/libsocialweb/lib/meson.build b/backends/libsocialweb/lib/meson.build
new file mode 100644
index 00000000..a0cb216e
--- /dev/null
+++ b/backends/libsocialweb/lib/meson.build
@@ -0,0 +1,42 @@
+folks_libsocialweb_backend_name = 'folks-libsocialweb'
+
+folks_libsocialweb_backend_sources = [
+ 'swf-persona-store.vala',
+ 'swf-persona.vala',
+]
+
+folks_libsocialweb_backend_deps = [
+ backend_deps,
+]
+
+folks_libsocialweb_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_libsocialweb_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_libsocialweb_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_libsocialweb_backend_name),
+]
+
+folks_libsocialweb_backend = library(folks_libsocialweb_backend_name,
+ folks_libsocialweb_backend_sources,
+ dependencies: folks_libsocialweb_backend_deps,
+ vala_args: folks_libsocialweb_backend_vala_flags,
+ c_args: folks_libsocialweb_backend_c_flags,
+ link_with: libfolks_internal,
+)
+
+folks_libsocialweb_backend_dep = declare_dependency(
+ link_with: folks_libsocialweb_backend,
+ include_directories: include_directories('.'),
+)
+
+# Pkg-config file
+configure_file(
+ input: 'folks-libsocialweb.pc.in',
+ output: 'folks-libsocialweb.pc',
+ configuration: pkg_conf,
+ install_dir: pkg_install_dir,
+)
diff --git a/backends/libsocialweb/meson.build b/backends/libsocialweb/meson.build
new file mode 100644
index 00000000..939c36b9
--- /dev/null
+++ b/backends/libsocialweb/meson.build
@@ -0,0 +1,34 @@
+# Backend library
+subdir('lib')
+
+# Backend itself
+libsocialweb_backend_name = 'libsocialweb'
+
+libsocialweb_backend_sources = [
+ 'sw-backend-factory.vala',
+ 'sw-backend.vala',
+]
+
+libsocialweb_backend_deps = [
+ backend_deps,
+ folks_libsocialweb_backend_dep,
+]
+
+libsocialweb_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+libsocialweb_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(libsocialweb_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(libsocialweb_backend_name),
+]
+
+libsocialweb_backend = library(libsocialweb_backend_name,
+ libsocialweb_backend_sources,
+ dependencies: libsocialweb_backend_deps,
+ vala_args: libsocialweb_backend_vala_flags,
+ c_args: libsocialweb_backend_c_flags,
+ link_with: libfolks_internal,
+)
diff --git a/backends/meson.build b/backends/meson.build
new file mode 100644
index 00000000..889324a5
--- /dev/null
+++ b/backends/meson.build
@@ -0,0 +1,39 @@
+# Common dependencies
+backend_deps = [
+ libfolks_dep,
+ gobject,
+ gee,
+ gio
+]
+
+# Common flags
+backend_vala_flags = [
+]
+
+# A subdirectory for each type of backend
+subdir('dummy')
+subdir('key-file')
+
+if telepathy_backend_enabled
+ subdir('telepathy')
+endif
+
+if libsocialweb_backend_enabled
+ subdir('libsocialweb')
+endif
+
+if tracker_backend_enabled
+ subdir('tracker')
+endif
+
+if eds_backend_enabled
+ subdir('eds')
+endif
+
+if ofono_backend_enabled
+ subdir('ofono')
+endif
+
+if bluez_backend_enabled
+ subdir('bluez')
+endif
diff --git a/backends/ofono/meson.build b/backends/ofono/meson.build
new file mode 100644
index 00000000..9d951860
--- /dev/null
+++ b/backends/ofono/meson.build
@@ -0,0 +1,34 @@
+folks_ofono_backend_name = 'ofono'
+
+folks_ofono_backend_sources = [
+ 'ofono-backend-factory.vala',
+ 'ofono-backend.vala',
+ 'ofono-persona-store.vala',
+ 'ofono-persona.vala',
+ 'org-ofono.vala',
+]
+
+folks_ofono_backend_deps = [
+ backend_deps,
+ libebook,
+ libedataserver,
+]
+
+folks_ofono_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_ofono_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_ofono_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_ofono_backend_name),
+]
+
+folks_ofono_backend = library(folks_ofono_backend_name,
+ folks_ofono_backend_sources,
+ dependencies: folks_ofono_backend_deps,
+ vala_args: folks_ofono_backend_vala_flags,
+ c_args: folks_ofono_backend_c_flags,
+ link_with: libfolks_internal,
+)
diff --git a/backends/telepathy/lib/meson.build b/backends/telepathy/lib/meson.build
new file mode 100644
index 00000000..e83b3e91
--- /dev/null
+++ b/backends/telepathy/lib/meson.build
@@ -0,0 +1,85 @@
+# Low-level library
+tp_lowlevel_sources = [
+ 'tp-lowlevel.c',
+]
+
+tp_lowlevel_deps = [
+ gio,
+ gobject,
+ telepathy_glib,
+]
+
+tp_lowlevel = library('tp-lowlevel',
+ sources: tp_lowlevel_sources,
+ dependencies: tp_lowlevel_deps,
+)
+
+tp_lowlevel_gir = gnome.generate_gir(tp_lowlevel,
+ sources: [ 'tp-lowlevel.h' ],
+ includes: [ 'GObject-2.0', 'TelepathyGLib-0.12' ],
+ nsversion: api_version, # XXX check this
+ namespace: 'TpLowlevel',
+ identifier_prefix: 'FolksTpLowlevel',
+ extra_args: [
+ '--c-include=tp-lowlevel.h',
+ ],
+)
+
+tp_lowlevel_vapi = gnome.generate_vapi('tp-lowlevel',
+ sources: tp_lowlevel_gir.get(0),
+ packages: [ 'gio-2.0', 'telepathy-glib' ],
+)
+
+# Actual backend library
+folks_telepathy_backend_name = 'folks-telepathy'
+
+folks_telepathy_backend_sources = [
+ 'tpf-logger.vala',
+ 'tpf-persona-store-cache.vala',
+ 'tpf-persona-store.vala',
+ 'tpf-persona.vala',
+]
+
+if zeitgeist_enabled
+ folks_telepathy_backend_sources += 'tp-zeitgeist.vala'
+else
+ folks_telepathy_backend_sources += 'tp-zeitgeist-dummy.vala'
+endif
+
+folks_telepathy_backend_deps = [
+ backend_deps,
+ telepathy_glib,
+ tp_lowlevel_vapi,
+]
+
+folks_telepathy_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_telepathy_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_telepathy_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_telepathy_backend_name),
+]
+
+folks_telepathy_backend = library(folks_telepathy_backend_name,
+ folks_telepathy_backend_sources,
+ dependencies: folks_telepathy_backend_deps,
+ vala_args: folks_telepathy_backend_vala_flags,
+ c_args: folks_telepathy_backend_c_flags,
+ link_with: libfolks_internal,
+)
+
+folks_telepathy_backend_dep = declare_dependency(
+ link_with: folks_telepathy_backend,
+ include_directories: include_directories('.'),
+)
+
+# Pkg-config file
+configure_file(
+ input: 'folks-telepathy.pc.in',
+ output: 'folks-telepathy.pc',
+ configuration: pkg_conf,
+ install_dir: pkg_install_dir,
+)
diff --git a/backends/telepathy/meson.build b/backends/telepathy/meson.build
new file mode 100644
index 00000000..ef95176e
--- /dev/null
+++ b/backends/telepathy/meson.build
@@ -0,0 +1,36 @@
+# Backend library
+subdir('lib')
+
+# Backend itself
+telepathy_backend_name = 'telepathy'
+
+telepathy_backend_sources = [
+ 'tp-backend-factory.vala',
+ 'tp-backend.vala',
+]
+
+telepathy_backend_deps = [
+ backend_deps,
+ telepathy_glib,
+ tp_lowlevel_vapi,
+ folks_telepathy_backend_dep,
+]
+
+telepathy_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+telepathy_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(telepathy_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(telepathy_backend_name),
+]
+
+telepathy_backend = library(telepathy_backend_name,
+ telepathy_backend_sources,
+ dependencies: telepathy_backend_deps,
+ vala_args: telepathy_backend_vala_flags,
+ c_args: telepathy_backend_c_flags,
+ link_with: libfolks_internal,
+)
diff --git a/backends/tracker/lib/meson.build b/backends/tracker/lib/meson.build
new file mode 100644
index 00000000..64612fe8
--- /dev/null
+++ b/backends/tracker/lib/meson.build
@@ -0,0 +1,44 @@
+folks_tracker_backend_name = 'folks-tracker'
+
+folks_tracker_backend_sources = [
+ 'trf-persona-store.vala',
+ 'trf-persona.vala',
+ 'trf-util.vala',
+]
+
+folks_tracker_backend_deps = [
+ backend_deps,
+ tracker_sparql,
+]
+
+folks_tracker_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+folks_tracker_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(folks_tracker_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(folks_tracker_backend_name),
+]
+
+folks_tracker_backend = library(folks_tracker_backend_name,
+ folks_tracker_backend_sources,
+ dependencies: folks_tracker_backend_deps,
+ vala_args: folks_tracker_backend_vala_flags,
+ c_args: folks_tracker_backend_c_flags,
+ link_with: libfolks_internal,
+)
+
+folks_tracker_backend_dep = declare_dependency(
+ link_with: folks_tracker_backend,
+ include_directories: include_directories('.'),
+)
+
+# Pkg-config file
+configure_file(
+ input: 'folks-tracker.pc.in',
+ output: 'folks-tracker.pc',
+ configuration: pkg_conf,
+ install_dir: pkg_install_dir,
+)
diff --git a/backends/tracker/meson.build b/backends/tracker/meson.build
new file mode 100644
index 00000000..c1ba1ebf
--- /dev/null
+++ b/backends/tracker/meson.build
@@ -0,0 +1,35 @@
+# Backend library
+subdir('lib')
+
+# Backend itself
+tracker_backend_name = 'tracker'
+
+tracker_backend_sources = [
+ 'tr-backend-factory.vala',
+ 'tr-backend.vala',
+]
+
+tracker_backend_deps = [
+ backend_deps,
+ tracker_sparql,
+ folks_tracker_backend_dep,
+]
+
+tracker_backend_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+tracker_backend_c_flags = [
+ '-include', 'config.h',
+ '-DBACKEND_NAME="@0@"'.format(tracker_backend_name),
+ '-DG_LOG_DOMAIN="@0@"'.format(tracker_backend_name),
+]
+
+tracker_backend = library(tracker_backend_name,
+ tracker_backend_sources,
+ dependencies: tracker_backend_deps,
+ vala_args: tracker_backend_vala_flags,
+ c_args: tracker_backend_c_flags,
+ link_with: libfolks_internal,
+)
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644
index 00000000..2e5c23e5
--- /dev/null
+++ b/docs/meson.build
@@ -0,0 +1,32 @@
+# Specify some common flags
+docs_common_valadoc_flags = [
+ '--force',
+ '--package-version', # XXX
+ '--no-protected',
+ '--driver', # XXX
+]
+
+
+# Now build the documentation for each library
+custom_target ('valadocs',
+ input : libfolks_sources,
+ # output : outdir, XXX
+ command : [ valadoc,
+ docs_common_valadoc_flags,
+ '-o', 'folks',
+ '--doclet=devhelp',
+ '--pkg=gmodule-2.0',
+ '--pkg=gio-2.0',
+ '--pkg=gee-0.8',
+ '--pkg=folks-internal',
+ '--pkg=folks-generics',
+ '--pkg=build-conf',
+ '--wiki=@0@'.format(join_paths(meson.current_source_dir(), 'wiki')),
+ '@INPUT@',
+ ],
+ install : true,
+ install_dir : join_paths(get_option('datadir'), 'devhelp', 'books')
+)
+
+# TODO also a gtk-doc doclet
+# TODO the other libraries
diff --git a/folks/meson.build b/folks/meson.build
new file mode 100644
index 00000000..01a3dc69
--- /dev/null
+++ b/folks/meson.build
@@ -0,0 +1,111 @@
+# Internal library
+libfolks_internal_sources = [
+ 'internal.vala',
+ 'small-set.c',
+]
+
+libfolks_internal_deps = [
+ gobject,
+ gio,
+ gee,
+ posix,
+]
+
+libfolks_internal = library('folks-internal',
+ libfolks_internal_sources,
+ include_directories: include_directories('..'),
+ dependencies: libfolks_internal_deps,
+)
+
+# Core library
+libfolks_sources = [
+ 'abstract-field-details.vala',
+ 'alias-details.vala',
+ 'anti-linkable.vala',
+ 'avatar-cache.vala',
+ 'avatar-details.vala',
+ 'backend-store.vala',
+ 'backend.vala',
+ 'birthday-details.vala',
+ 'debug.vala',
+ 'email-details.vala',
+ 'extended-info.vala',
+ 'favourite-details.vala',
+ 'folks-namespace.vala',
+ 'gender-details.vala',
+ 'group-details.vala',
+ 'im-details.vala',
+ 'individual-aggregator.vala',
+ 'individual.vala',
+ 'interaction-details.vala',
+ 'local-id-details.vala',
+ 'location-details.vala',
+ 'name-details.vala',
+ 'note-details.vala',
+ 'object-cache.vala',
+ 'persona-store.vala',
+ 'persona.vala',
+ 'phone-details.vala',
+ 'postal-address-details.vala',
+ 'potential-match.vala',
+ 'presence-details.vala',
+ 'query.vala',
+ 'role-details.vala',
+ 'search-view.vala',
+ 'simple-query.vala',
+ 'types.vala',
+ 'url-details.vala',
+ 'utils.vala',
+ 'web-service-details.vala',
+]
+
+libfolks_deps = [
+ gobject,
+ gmodule,
+ gio,
+ gee,
+]
+
+libfolks_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--pkg', 'build-conf',
+]
+
+libfolks_c_flags = [
+ '-include', 'config.h',
+ '-DG_LOG_DOMAIN="folks"',
+]
+
+libfolks_lib = library('folks',
+ libfolks_sources,
+ dependencies: libfolks_deps,
+ include_directories: config_h_dir,
+ link_with: libfolks_internal,
+ vala_args: libfolks_vala_flags,
+ c_args: libfolks_c_flags,
+ vala_gir: 'Folks-@0@.gir'.format(api_version),
+)
+
+libfolks_dep = declare_dependency(
+ link_with: libfolks_lib,
+ dependencies: libfolks_deps,
+ include_directories: include_directories('.', '..')
+)
+
+# GSettings
+gschema_file = configure_file(
+ input: 'org.freedesktop.folks.gschema.xml.in',
+ output: 'org.freedesktop.folks.gschema.xml',
+ configuration: conf
+)
+install_data(gschema_file,
+ install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas'),
+)
+
+# Pkg-config file
+configure_file(
+ input: 'folks.pc.in',
+ output: 'folks.pc',
+ configuration: pkg_conf,
+ install_dir: pkg_install_dir,
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 00000000..aa42f4a7
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,155 @@
+project('folks', [ 'vala', 'c' ],
+ version: '0.11.5.0',
+ license: 'LGPL2.1+', # XXX is this ok?
+ meson_version: '>= 0.37',
+)
+
+gnome = import('gnome')
+i18n = import('i18n')
+
+# Add our custom VAPI dir
+# XXX there is not yet a custom VAPI dir :(
+add_project_arguments(
+ ['--vapidir', join_paths(meson.source_root(), 'folks')],
+ language: 'vala'
+)
+
+# Versions
+api_version = '0.6'
+
+# Some variables
+backend_dir = join_paths(meson.source_root(), 'backends')
+config_h_dir = include_directories('.')
+locale_dir = join_paths(get_option('prefix'), get_option('localedir'))
+pkg_install_dir = join_paths(get_option('libdir'), 'pkgconfig')
+installed_tests_dir = join_paths(get_option('libexecdir'), 'installed-tests', 'folks') # XXX check that final folder (see InstalledTests on the wiki)
+installed_tests_meta_dir = join_paths(get_option('datadir'), 'installed-tests', 'folks') # XXX check that final folder (see InstalledTests on the wiki)
+po_dir = join_paths(meson.source_root(), 'po')
+
+# Options (see meson_option.txt for more info)
+bluez_backend_enabled = get_option('enable-bluez-backend')
+docs_enabled = get_option('enable-docs')
+eds_backend_enabled = get_option('enable-eds-backend')
+installed_tests_enabled = get_option('enable-installed-tests')
+libsocialweb_backend_enabled = get_option('enable-libsocialweb-backend')
+modular_tests_enabled = get_option('enable-modular-tests')
+ofono_backend_enabled = get_option('enable-ofono-backend')
+telepathy_backend_enabled = get_option('enable-telepathy-backend')
+tracker_backend_enabled = get_option('enable-tracker-backend')
+zeitgeist_enabled = get_option('enable-zeitgeist')
+import_tool_enabled = get_option('enable-import-tool')
+inspect_tool_enabled = get_option('enable-inspect-tool')
+
+# Dependencies
+min_glib_version = '2.40.0'
+min_eds_version = '3.13.90'
+
+valac = meson.get_compiler('vala')
+cc = meson.get_compiler('c')
+
+# FIXME: get rid of the next 2 when our dependencies stop using dbus-1 (GNOME#696177)
+dbus_1 = dependency('dbus-1')
+dbus_glib = dependency('dbus-glib-1')
+gee = dependency('gee-0.8')
+gio = dependency('gio-2.0')
+glib = dependency('glib-2.0', version: '>=' + min_glib_version)
+gmodule = dependency('gmodule-2.0')
+gobject = dependency('gobject-2.0', version: '>=' + min_glib_version)
+libm = cc.find_library('m')
+posix = valac.find_library('posix')
+readline = declare_dependency(
+ dependencies: [
+ cc.find_library('readline'),
+ valac.find_library('readline'),
+ ]
+)
+
+if docs_enabled
+ valadoc = find_program('valadoc')
+endif
+
+if zeitgeist_enabled
+ zeitgeist = dependency('zeitgeist-2.0')
+endif
+
+if telepathy_backend_enabled
+ telepathy_glib = dependency('telepathy-glib', version: '>= 0.19.9')
+ #XXX check for zeitgeist
+endif
+
+if tracker_backend_enabled
+ # XXX what the hell does configure.ac do?
+ tracker_sparql = dependency('tracker-sparql', version: '>= 0.16')
+endif
+
+if eds_backend_enabled
+ libebook = dependency('libebook-1.2', version: '>=' + min_eds_version)
+ libebook_contacts = dependency('libebook-contacts-1.2', version: '>=' + min_eds_version)
+ libedataserver = dependency('libedataserver-1.2', version: '>=' + min_eds_version)
+ libxml = dependency('libxml-2.0')
+endif
+
+if ofono_backend_enabled
+ libebook = dependency('libebook-1.2', version: '>=' + min_eds_version)
+endif
+
+if bluez_backend_enabled
+ libebook = dependency('libebook-1.2', version: '>=' + min_eds_version)
+ # Needed for the BlueZ tests
+ python3 = find_program('python3')
+ #XXX
+endif
+
+if libsocialweb_backend_enabled
+endif
+
+if import_tool_enabled
+ libxml = dependency('libxml-2.0')
+endif
+
+
+# Configuration
+conf = configuration_data()
+conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
+conf.set_quoted('LOCALE_DIR', locale_dir)
+conf.set_quoted('PACKAGE_NAME', meson.project_name())
+conf.set_quoted('PACKAGE_STRING', meson.project_name())
+conf.set_quoted('PACKAGE_VERSION', meson.project_version())
+conf.set_quoted('ABS_TOP_SRCDIR', meson.source_root())
+conf.set_quoted('ABS_TOP_BUILDDIR', meson.build_root())
+conf.set_quoted('INSTALLED_TESTS_DIR', installed_tests_dir)
+conf.set_quoted('INSTALLED_TESTS_META_DIR', installed_tests_meta_dir)
+conf.set_quoted('BACKEND_DIR', backend_dir)
+conf.set10('HAVE_BLUEZ', bluez_backend_enabled)
+conf.set10('HAVE_EDS', eds_backend_enabled)
+conf.set10('HAVE_LIBSOCIALWEB', libsocialweb_backend_enabled)
+conf.set10('HAVE_OFONO', ofono_backend_enabled)
+conf.set10('HAVE_TELEPATHY', telepathy_backend_enabled)
+conf.set10('HAVE_TRACKER', tracker_backend_enabled)
+configure_file(output: 'config.h', configuration: conf)
+
+# Configuration for pc.in files
+pkg_conf = configuration_data()
+pkg_conf.set('prefix', get_option('prefix'))
+pkg_conf.set('exec_prefix', '${prefix}')
+pkg_conf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
+pkg_conf.set('bindir', '${prefix}/@0@'.format(get_option('bindir')))
+pkg_conf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
+pkg_conf.set('datarootdir', '${prefix}/@0@'.format(get_option('datadir')))
+pkg_conf.set('datadir', '${datarootdir}')
+pkg_conf.set('VERSION', meson.project_version())
+
+# Post-install scripts
+meson.add_install_script('meson_post_install.py')
+
+# Subfolders
+subdir('folks')
+subdir('backends')
+subdir('tools')
+subdir('po')
+# if modular_tests_enabled
+ subdir('tests')
+# endif
+if docs_enabled
+ subdir('docs')
+endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 00000000..deb56fbb
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,16 @@
+# Backends
+option('enable-bluez-backend', type: 'boolean', value: true, description: 'build the Bluez backend')
+option('enable-eds-backend', type: 'boolean', value: true, description: 'build the EDS backend')
+option('enable-libsocialweb-backend', type: 'boolean', value: false, description: 'build the libsocialweb backend')
+option('enable-ofono-backend', type: 'boolean', value: true, description: 'build the oFono backend')
+option('enable-telepathy-backend', type: 'boolean', value: true, description: 'build the Telepathy backend')
+option('enable-tracker-backend', type: 'boolean', value: false, description: 'build the Tracker backend')
+option('enable-zeitgeist', type: 'boolean', value: false, description: 'build Zeitgeist support in the Telepathy backend')
+# Tools
+option('enable-import-tool', type: 'boolean', value: true, description: 'Enable building the meta-contact import tool')
+option('enable-inspect-tool', type: 'boolean', value: true, description: 'Enable building the data inspection tool')
+# Test options
+option('enable-modular-tests', type: 'boolean', value: true, description: 'Enable build of test programs')
+option('enable-installed-tests', type: 'boolean', value: false, description: 'Install test programs')
+# Docs
+option('enable-docs', type: 'boolean', value: false, description: 'Enable documentation generation')
diff --git a/meson_post_install.py b/meson_post_install.py
new file mode 100644
index 00000000..bf320a9d
--- /dev/null
+++ b/meson_post_install.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+
+import os
+import subprocess
+
+install_prefix = os.environ['MESON_INSTALL_PREFIX']
+icondir = os.path.join(install_prefix, 'share', 'icons', 'hicolor')
+schemadir = os.path.join(install_prefix, 'share', 'glib-2.0', 'schemas')
+
+if not os.environ.get('DESTDIR'):
+ print('Update icon cache...')
+ subprocess.call(['gtk-update-icon-cache', '-f', '-t', icondir])
+
+ print('Compiling gsettings schemas...')
+ subprocess.call(['glib-compile-schemas', schemadir])
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 00000000..f904cde4
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,3 @@
+i18n.gettext(meson.project_name(),
+ preset: 'glib'
+)
diff --git a/tests/bluez/meson.build b/tests/bluez/meson.build
new file mode 100644
index 00000000..44b54db6
--- /dev/null
+++ b/tests/bluez/meson.build
@@ -0,0 +1,36 @@
+# in order from least to most complex
+bluez_tests = [
+ 'device-properties',
+ 'individual-retrieval',
+ 'vcard-parsing',
+]
+
+bluez_tests_deps = [
+ gobject,
+ gio,
+ gee,
+ libebook,
+ libedataserver,
+ libfolks_dep,
+ libfolks_test_dep,
+ libbluez_test_dep,
+ folks_test_dbus,
+ folks_bluez_backend_dep,
+]
+
+bluez_tests_vala_flags = [
+ '--pkg', 'folks-generics',
+ '--debug',
+]
+
+foreach _test: bluez_tests
+
+ test_executable = executable('bluez-'+_test,
+ '@0@.vala'.format(_test),
+ dependencies: bluez_tests_deps,
+ vala_args: bluez_tests_vala_flags,
+ link_with: libfolks_internal,
+ )
+
+ test('[Bluez backend] @0@'.format(_test), test_executable)
+endforeach
diff --git a/tests/dummy/meson.build b/tests/dummy/meson.build
new file mode 100644
index 00000000..0b1c2d9b
--- /dev/null
+++ b/tests/dummy/meson.build
@@ -0,0 +1,24 @@
+# in order from least to most complex
+dummy_tests = [
+ 'individual-retrieval',
+ 'add-persona',
+ 'linkable-properties',
+ 'search-view',
+]
+
+dummy_tests_deps = [
+ common_test_deps,
+ dummy_test_lib_dep,
+ folks_dummy_backend_dep,
+]
+
+
+foreach _test: dummy_tests
+ test_executable = executable('dummy-'+_test,
+ '@0@.vala'.format(_test),
+ dependencies: dummy_tests_deps,
+ vala_args: common_test_vala_flags,
+ )
+
+ test('[Dummy backend] @0@'.format(_test), test_executable)
+endforeach
diff --git a/tests/eds/meson.build b/tests/eds/meson.build
new file mode 100644
index 00000000..00b7731c
--- /dev/null
+++ b/tests/eds/meson.build
@@ -0,0 +1,75 @@
+eds_tests_deps = [
+ gobject,
+ posix,
+ libebook,
+ libedataserver,
+ libxml,
+ libfolks_dep,
+ libfolks_test_dep,
+ libeds_test_dep,
+ folks_test_dbus,
+ folks_eds_backend_dep,
+]
+
+eds_tests_vala_flags = [
+ '--debug',
+]
+
+
+# First we make the test helpers
+helpers = [
+ 'helper-create-many-contacts',
+ 'helper-delete-contacts',
+ 'helper-prepare-aggregator',
+]
+
+foreach helper: helpers
+ executable(helper,
+ '@0@.vala'.format(helper),
+ dependencies: eds_tests_deps,
+ vala_args: eds_tests_vala_flags,
+ )
+endforeach
+
+# in order from least to most complex
+eds_tests = [
+ 'persona-store-tests',
+ 'individual-retrieval',
+ 'phone-details',
+ 'email-details',
+ 'name-details',
+ 'removing-contacts',
+ 'updating-phones',
+ 'updating-contacts',
+ 'avatar-details',
+ 'add-persona',
+ 'im-details',
+ 'postal-address-details',
+ 'remove-persona',
+ 'set-emails',
+ 'set-im-addresses',
+ 'link-personas',
+ 'add-contacts-stress-test',
+ 'set-properties',
+ 'set-properties-race',
+ 'linkable-properties',
+ 'link-personas-diff-stores',
+ 'store-removed',
+ 'anti-linking',
+ 'enable-disable-stores',
+ 'perf',
+ 'extended-info',
+]
+
+foreach _test: eds_tests
+
+ test_executable = executable('eds-'+_test,
+ '@0@.vala'.format(_test),
+ dependencies: eds_tests_deps,
+ vala_args: eds_tests_vala_flags,
+ )
+
+ test('[EDS backend] @0@'.format(_test), test_executable,
+ is_parallel: false, # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=709119
+ )
+endforeach
diff --git a/tests/key-file/meson.build b/tests/key-file/meson.build
new file mode 100644
index 00000000..57b4a335
--- /dev/null
+++ b/tests/key-file/meson.build
@@ -0,0 +1,30 @@
+# in order from least to most complex
+keyfile_tests = [
+ 'individual-retrieval',
+]
+
+keyfile_tests_deps = [
+ gobject,
+ gio,
+ gee,
+ libfolks_dep,
+ libfolks_test_dep,
+ libkeyfile_test_dep,
+ folks_test_dbus,
+ #folks_keyfile_backend_dep,
+]
+
+keyfile_tests_vala_flags = [
+ '--debug',
+]
+
+foreach _test: keyfile_tests
+
+ test_executable = executable('key-file-'+_test,
+ '@0@.vala'.format(_test),
+ dependencies: keyfile_tests_deps,
+ vala_args: keyfile_tests_vala_flags,
+ )
+
+ test('[Key-file backend] @0@'.format(_test), test_executable)
+endforeach
diff --git a/tests/lib/bluez/meson.build b/tests/lib/bluez/meson.build
new file mode 100644
index 00000000..3b23a185
--- /dev/null
+++ b/tests/lib/bluez/meson.build
@@ -0,0 +1,15 @@
+libbluez_test_sources = [
+ 'test-case.vala',
+ 'backend.vala',
+]
+
+libbluez_test = library('bluez-test',
+ libbluez_test_sources,
+ dependencies: common_test_lib_deps,
+ vala_args: common_test_lib_flags,
+)
+
+libbluez_test_dep = declare_dependency(
+ link_with: libbluez_test,
+ include_directories: include_directories('.'),
+)
diff --git a/tests/lib/dummy/meson.build b/tests/lib/dummy/meson.build
new file mode 100644
index 00000000..ffcfeaad
--- /dev/null
+++ b/tests/lib/dummy/meson.build
@@ -0,0 +1,19 @@
+dummy_test_lib_sources = [
+ 'test-case.vala',
+]
+
+dummy_test_lib_deps = [
+ common_test_lib_deps,
+ folks_dummy_backend_dep,
+]
+
+dummy_test_lib = library('dummy-test',
+ dummy_test_lib_sources,
+ dependencies: dummy_test_lib_deps,
+ vala_args: common_test_lib_flags,
+)
+
+dummy_test_lib_dep = declare_dependency(
+ link_with: dummy_test_lib,
+ include_directories: include_directories('.'),
+)
diff --git a/tests/lib/eds/meson.build b/tests/lib/eds/meson.build
new file mode 100644
index 00000000..ef356892
--- /dev/null
+++ b/tests/lib/eds/meson.build
@@ -0,0 +1,21 @@
+libeds_test_sources = [
+ 'backend.vala',
+ 'test-case.vala',
+]
+
+libeds_test_deps = [
+ common_test_lib_deps,
+ libebook,
+ folks_eds_backend_dep,
+]
+
+libeds_test = library('eds-test',
+ libeds_test_sources,
+ dependencies: libeds_test_deps,
+ vala_args: common_test_lib_flags,
+)
+
+libeds_test_dep = declare_dependency(
+ link_with: libeds_test,
+ include_directories: include_directories('.'),
+)
diff --git a/tests/lib/key-file/meson.build b/tests/lib/key-file/meson.build
new file mode 100644
index 00000000..740b50d8
--- /dev/null
+++ b/tests/lib/key-file/meson.build
@@ -0,0 +1,15 @@
+libkeyfile_test_sources = [
+ 'backend.vala',
+ 'test-case.vala',
+]
+
+libkeyfile_test = library('keyfile-test',
+ libkeyfile_test_sources,
+ dependencies: common_test_lib_deps,
+ vala_args: common_test_lib_flags,
+)
+
+libkeyfile_test_dep = declare_dependency(
+ link_with: libkeyfile_test,
+ include_directories: include_directories('.'),
+)
diff --git a/tests/lib/libsocialweb/meson.build b/tests/lib/libsocialweb/meson.build
new file mode 100644
index 00000000..796a3966
--- /dev/null
+++ b/tests/lib/libsocialweb/meson.build
@@ -0,0 +1,15 @@
+libsocialweb_test_lib_sources = [
+ 'test-case.vala',
+ 'backend.vala',
+]
+
+libsocialweb_test_lib = library('libsocialweb-test-lib',
+ libsocialweb_test_lib_sources,
+ dependencies: common_test_lib_deps,
+ vala_args: common_test_lib_flags,
+)
+
+libsocialweb_test_lib_dep = declare_dependency(
+ link_with: libsocialweb_test_lib,
+ include_directories: include_directories('.'),
+)
diff --git a/tests/lib/meson.build b/tests/lib/meson.build
new file mode 100644
index 00000000..198155f2
--- /dev/null
+++ b/tests/lib/meson.build
@@ -0,0 +1,75 @@
+# The library that is used by the libraries tests
+libfolks_test_sources = [
+ 'disconnection-queue.vala',
+ 'gtestdbus.c',
+ 'haze-remove-directory.c',
+ 'org-freedesktop-dbus-mock.vala',
+ 'test-case-helper.c',
+ 'test-case.vala',
+ 'test-utils.vala',
+]
+
+libfolks_test_deps = [
+ gobject,
+ gio,
+ gee,
+ dbus_glib,
+ libfolks_dep,
+ folks_test_dbus,
+ posix,
+]
+
+libfolks_test_vala_flags = [
+ '--debug',
+ '--pkg', 'build-conf',
+ '-h', 'folks-test-internal.h',
+]
+
+libfolks_test = library('folks-test',
+ libfolks_test_sources,
+ dependencies: libfolks_test_deps,
+ vala_args: libfolks_test_vala_flags,
+)
+
+libfolks_test_dep = declare_dependency(
+ link_with: libfolks_test,
+ include_directories: include_directories('.'),
+)
+
+# Common variables
+common_test_lib_deps = [
+ gobject,
+ libfolks_dep,
+ libfolks_test_dep,
+ folks_test_dbus,
+]
+
+common_test_lib_flags = [
+ '--debug',
+]
+
+# Subdirs
+subdir('dummy')
+subdir('key-file')
+
+if bluez_backend_enabled
+ subdir('bluez')
+endif
+
+# XXX
+# if telepathy_backend_enabled
+# subdir('telepathy/contactlist')
+# subdir('telepathy')
+# endif
+
+if libsocialweb_backend_enabled
+ subdir('libsocialweb')
+endif
+
+if eds_backend_enabled
+ subdir('eds')
+endif
+
+if tracker_backend_enabled
+ subdir('tracker')
+endif
diff --git a/tests/lib/tracker/meson.build b/tests/lib/tracker/meson.build
new file mode 100644
index 00000000..39d021a5
--- /dev/null
+++ b/tests/lib/tracker/meson.build
@@ -0,0 +1,15 @@
+tracker_test_lib_sources = [
+ 'test-case.vala',
+ 'backend.vala',
+]
+
+tracker_test_lib = library('tracker-test-lib',
+ tracker_test_lib_sources,
+ dependencies: common_test_lib_deps,
+ vala_args: common_test_lib_flags,
+)
+
+tracker_test_lib_dep = declare_dependency(
+ link_with: tracker_test_lib,
+ include_directories: include_directories('.'),
+)
diff --git a/tests/libsocialweb/meson.build b/tests/libsocialweb/meson.build
new file mode 100644
index 00000000..4f35c3a3
--- /dev/null
+++ b/tests/libsocialweb/meson.build
@@ -0,0 +1,22 @@
+# in order from least to most complex
+libsocialweb_tests = [
+ 'dummy-lsw',
+ 'aggregation',
+]
+
+libsocialweb_tests_deps = [
+ common_test_deps,
+ libsocialweb_test_lib_dep,
+ folks_libsocialweb_backend_dep,
+]
+
+
+foreach _test: libsocialweb_tests
+ test_executable = executable('libsocialweb-'+_test,
+ '@0@.vala'.format(_test),
+ dependencies: libsocialweb_tests_deps,
+ vala_args: common_test_vala_flags,
+ )
+
+ test('[Libsocialweb backend] @0@'.format(_test), test_executable)
+endforeach
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 00000000..0a992e62
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,47 @@
+# A VAPI for common dbus tests
+folks_test_dbus = valac.find_library('folks-test-dbus',
+ dirs: join_paths(meson.current_source_dir(), 'lib')
+)
+
+# Test data
+# subdir('data')
+# subdir('tools') XXX what needs to happen here?
+
+# Libraries for the tests
+subdir('lib')
+
+# Common variables
+common_test_deps = [
+ libfolks_dep,
+ libfolks_test_dep,
+ folks_test_dbus,
+]
+
+common_test_vala_flags = [
+ '--debug',
+]
+
+# The tests, grouped in a dir by backend
+subdir('dummy')
+subdir('key-file')
+
+if bluez_backend_enabled
+ subdir('bluez')
+endif
+
+# if telepathy_backend_enabled
+# subdir('folks')
+# subdir('telepathy')
+# endif
+
+if libsocialweb_backend_enabled
+ subdir('libsocialweb')
+endif
+
+if eds_backend_enabled
+ subdir('eds')
+endif
+
+if tracker_backend_enabled
+ subdir('tracker')
+endif
diff --git a/tests/tracker/meson.build b/tests/tracker/meson.build
new file mode 100644
index 00000000..cd9f0d02
--- /dev/null
+++ b/tests/tracker/meson.build
@@ -0,0 +1,78 @@
+# in order from least to most complex
+tracker_tests = [
+ 'individual-retrieval',
+ 'name-details-interface',
+ 'avatar-details-interface',
+ 'im-details-interface',
+ 'phone-details-interface',
+ 'email-details-interface',
+ 'url-details-interface',
+ 'favourite-details-interface',
+ 'fullname-updates',
+ 'add-contact',
+ 'default-contact',
+ 'remove-contact',
+ 'nickname-updates',
+ 'family-name-updates',
+ 'given-name-updates',
+ 'additional-names-updates',
+ 'prefix-name-updates',
+ 'suffix-name-updates',
+ 'website-updates',
+ 'favourite-updates',
+ 'emails-updates',
+ 'phones-updates',
+ 'imaddresses-updates',
+ 'role-details-interface',
+ 'birthday-details-interface',
+ 'birthday-updates',
+ 'note-details-interface',
+ 'gender-details-interface',
+ 'postal-address-details-interface',
+ 'avatar-updates',
+ 'add-persona',
+ 'remove-persona',
+ 'set-nickname',
+ 'set-favourite',
+ 'set-phones',
+ 'set-emails',
+ 'set-avatar',
+ 'set-structured-name',
+ 'set-full-name',
+ 'set-urls',
+ 'set-im-addresses',
+ 'set-postal-addresses',
+ 'set-roles',
+ 'set-notes',
+ 'set-birthday',
+ 'set-gender',
+ 'link-personas',
+ 'duplicated-emails',
+ 'duplicated-phones',
+ 'link-personas-via-local-ids',
+ 'match-im-addresses',
+ 'match-email-addresses',
+ 'match-known-emails',
+ 'match-phone-number',
+ 'match-name',
+ 'match-all',
+ 'set-duplicate-email',
+ 'set-null-avatar',
+]
+
+tracker_tests_deps = [
+ common_test_deps,
+ tracker_test_lib_dep,
+ folks_tracker_backend_dep,
+]
+
+
+foreach _test: tracker_tests
+ test_executable = executable('tracker-'+_test,
+ '@0@.vala'.format(_test),
+ dependencies: tracker_tests_deps,
+ vala_args: common_test_vala_flags,
+ )
+
+ test('[Tracker backend] @0@'.format(_test), test_executable)
+endforeach
diff --git a/tools/inspect/meson.build b/tools/inspect/meson.build
new file mode 100644
index 00000000..cd34960a
--- /dev/null
+++ b/tools/inspect/meson.build
@@ -0,0 +1,41 @@
+folks_inspect_sources = [
+ 'command-backends.vala',
+ 'command-debug.vala',
+ 'command-help.vala',
+ 'command-individuals.vala',
+ 'command-linking.vala',
+ 'command-persona-stores.vala',
+ 'command-personas.vala',
+ 'command-quit.vala',
+ 'command-search.vala',
+ 'command-set.vala',
+ 'command-signals.vala',
+ 'inspect.vala',
+ 'signal-manager.vala',
+ 'utils.vala',
+]
+
+folks_inspect_deps = [
+ gobject,
+ libfolks_dep,
+ posix,
+ readline,
+ gio,
+ gee,
+]
+
+folks_inspect_vala_flags = [
+ '--pkg', 'build-conf',
+]
+
+folks_inspect_c_flags = [
+ '-include', 'config.h',
+]
+
+folks_inspect = executable('folks-inspect',
+ folks_inspect_sources,
+ dependencies: folks_inspect_deps,
+ vala_args: folks_inspect_vala_flags,
+ c_args: folks_inspect_c_flags,
+ include_directories: config_h_dir,
+)
diff --git a/tools/meson.build b/tools/meson.build
new file mode 100644
index 00000000..c49eeabe
--- /dev/null
+++ b/tools/meson.build
@@ -0,0 +1,32 @@
+# folks-inspect
+subdir('inspect')
+
+# folks-import
+folks_import_sources = [
+ 'import.vala',
+ 'import-pidgin.vala',
+]
+
+folks_import_deps = [
+ gee,
+ gobject,
+ glib,
+ libfolks_dep,
+ libxml,
+]
+
+folks_import_vala_flags = [
+ '--pkg', 'build-conf',
+]
+
+folks_import_c_flags = [
+ '-include', 'config.h',
+]
+
+folks_import = executable('folks-import',
+ folks_import_sources,
+ dependencies: folks_import_deps,
+ vala_args: folks_import_vala_flags,
+ c_args: folks_import_c_flags,
+ include_directories: config_h_dir,
+)