[tracker/wip/sam/meson: 3/3] WIP: Meson build instructions for Tracker



commit 9aafe46118812ca3b453ac7d2198545ad8f42c17
Author: Sam Thursfield <ssssam gmail com>
Date:   Sun Mar 27 14:31:41 2016 +0100

    WIP: Meson build instructions for Tracker
    
    See <http://mesonbuild.com/> for information about Meson.
    
    These build instructions are incomplete right now, but a lot of stuff is
    working already. Try the 'test' target.

 .gitignore                                    |    1 +
 config.h.meson.in                             |  447 ++++++++++++++++++++++++
 docs/manpages/meson.build                     |   25 ++
 docs/meson.build                              |    3 +
 docs/reference/libtracker-control/meson.build |    9 +
 docs/reference/libtracker-miner/meson.build   |    9 +
 docs/reference/libtracker-sparql/meson.build  |    9 +
 docs/reference/meson.build                    |    4 +
 docs/reference/ontology/meson.build           |   31 ++
 docs/tools/meson.build                        |   18 +
 examples/libtracker-miner/meson.build         |    7 +
 examples/libtracker-sparql/meson.build        |    7 +
 examples/meson.build                          |    2 +
 meson.build                                   |  448 +++++++++++++++++++++++++
 meson_options.txt                             |   24 ++
 po/meson.build                                |    6 +
 src/gvdb/meson.build                          |   14 +
 src/libtracker-bus/meson.build                |   24 ++
 src/libtracker-common/meson.build             |   46 +++
 src/libtracker-control/meson.build            |   11 +
 src/libtracker-data/meson.build               |   64 ++++
 src/libtracker-direct/meson.build             |   25 ++
 src/libtracker-extract/meson.build            |   45 +++
 src/libtracker-fts/meson.build                |   23 ++
 src/libtracker-miner/meson.build              |   70 ++++
 src/libtracker-remote/meson.build             |   28 ++
 src/libtracker-sparql-backend/meson.build     |    9 +
 src/libtracker-sparql/meson.build             |   45 +++
 src/meson.build                               |   39 +++
 src/miners/fs/meson.build                     |   29 ++
 src/miners/meson.build                        |    4 +
 src/miners/rss/meson.build                    |   15 +
 src/tracker-needle/meson.build                |   20 ++
 src/tracker/meson.build                       |   34 ++
 tests/common/meson.build                      |   15 +
 tests/functional-tests/ipc/meson.build        |   53 +++
 tests/functional-tests/meson.build            |   41 +++
 tests/gvdb/meson.build                        |    7 +
 tests/libtracker-common/meson.build           |   61 ++++
 tests/libtracker-data/meson.build             |   51 +++
 tests/libtracker-extract/meson.build          |   60 ++++
 tests/libtracker-fts/meson.build              |   13 +
 tests/libtracker-miner/meson.build            |   69 ++++
 tests/libtracker-sparql/meson.build           |   19 +
 tests/meson.build                             |   26 ++
 tests/tracker-steroids/meson.build            |    7 +
 utils/meson.build                             |    3 +
 utils/mtp/meson.build                         |    2 +
 utils/ontology/meson.build                    |    7 +
 utils/tracker-resdump/meson.build             |    2 +
 50 files changed, 2031 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index a3b31cb..f7c26f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@
 .deps
 .libs
 config.*
+!config.h.meson.in
 ABOUT-NLS
 aclocal.m4
 autom4te.cache
diff --git a/config.h.meson.in b/config.h.meson.in
new file mode 100644
index 0000000..146aca7
--- /dev/null
+++ b/config.h.meson.in
@@ -0,0 +1,447 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Extras added manually */
+#mesondefine LOCALEDIR
+#mesondefine SHAREDIR
+#mesondefine TRACKER_MINERS_DIR
+#mesondefine TRACKER_UI_DIR
+
+/* Define if we disable the journal */
+#mesondefine DISABLE_JOURNAL
+
+/* Include functional tests in the installation */
+#mesondefine DIST_FUNCTIONAL_TESTS
+
+/* Use new evolution-shell API */
+#mesondefine EVOLUTION_SHELL_2_91
+
+/* Use new evolution-shell API */
+#mesondefine EVOLUTION_SHELL_3_2
+
+/* Use new evolution-shell API */
+#mesondefine EVOLUTION_SHELL_3_3_5
+
+/* Define the gettext package to be used */
+#mesondefine GETTEXT_PACKAGE
+
+/* Define that GStreamer Discoverer should be used */
+#mesondefine GSTREAMER_BACKEND_DISCOVERER
+
+/* Define that GUPnP-DLNA should be used */
+#mesondefine GSTREAMER_BACKEND_GUPNP_DLNA
+
+/* Guarantee existence of some metadata */
+#mesondefine GUARANTEE_METADATA
+
+/* Define if we have AbiWord extractor */
+#mesondefine HAVE_ABIWORD
+
+/* Define to 1 if you have the `alarm' function. */
+#mesondefine HAVE_ALARM
+
+/* Define if we should install artwork */
+#mesondefine HAVE_ARTWORK
+
+/* Defined if Sqlite has FTS5 compiled in */
+#mesondefine HAVE_BUILTIN_FTS
+
+/* Define to 1 if you have the declaration of `posix_fadvise', and to 0 if you
+   don't. */
+#mesondefine HAVE_DECL_POSIX_FADVISE
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#mesondefine HAVE_DLFCN_H
+
+/* Define if we have DVI extractor */
+#mesondefine HAVE_DVI
+
+/* Enca language detection aid */
+#mesondefine HAVE_ENCA
+
+/* Define if we have exempi */
+#mesondefine HAVE_EXEMPI
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#mesondefine HAVE_FCNTL_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#mesondefine HAVE_FLOAT_H
+
+/* Define to 1 if you have the `ftruncate' function. */
+#mesondefine HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `getline' function. */
+#mesondefine HAVE_GETLINE
+
+/* Define to 1 if you have the `getpagesize' function. */
+#mesondefine HAVE_GETPAGESIZE
+
+/* Define if we have GStreamer */
+#mesondefine HAVE_GSTREAMER
+
+/* Define if we have HAL */
+#mesondefine HAVE_HAL
+
+/* Define if we have ICON extractor */
+#mesondefine HAVE_ICON
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#mesondefine HAVE_INTTYPES_H
+
+/* Define if we have libav */
+#mesondefine HAVE_LIBAV
+
+/* Define if we have libcue */
+#mesondefine HAVE_LIBCUE
+
+/* Define if we have libcue 2 or up */
+#mesondefine HAVE_LIBCUE2
+
+/* Define if we have libexif */
+#mesondefine HAVE_LIBEXIF
+
+/* Define if we have libflac */
+#mesondefine HAVE_LIBFLAC
+
+/* Define if we have libgif */
+#mesondefine HAVE_LIBGIF
+
+/* Define if we have libgsf */
+#mesondefine HAVE_LIBGSF
+
+/* Define if we have libgxps */
+#mesondefine HAVE_LIBGXPS
+
+/* libicu Unicode support library */
+#mesondefine HAVE_LIBICU
+
+/* ICU language detection aid */
+#mesondefine HAVE_LIBICU_CHARSET_DETECTION
+
+/* Define if we have libiptcdata */
+#mesondefine HAVE_LIBIPTCDATA
+
+/* Define if we have libjpeg */
+#mesondefine HAVE_LIBJPEG
+
+/* Define to 1 if you have the `m' library (-lm). */
+#mesondefine HAVE_LIBM
+
+/* Define if we have libmediaart */
+#mesondefine HAVE_LIBMEDIAART
+
+/* Define if we have libosinfo */
+#mesondefine HAVE_LIBOSINFO
+
+/* Define if we have libpng */
+#mesondefine HAVE_LIBPNG
+
+/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */
+#mesondefine HAVE_LIBSQLITE3
+
+/* Define if we have libstemmer */
+#mesondefine HAVE_LIBSTEMMER
+
+/* Define if we have libtiff */
+#mesondefine HAVE_LIBTIFF
+
+/* libunistring Unicode support library */
+#mesondefine HAVE_LIBUNISTRING
+
+/* Define if we have libvorbis */
+#mesondefine HAVE_LIBVORBIS
+
+/* Define if we have libxml2 */
+#mesondefine HAVE_LIBXML2
+
+/* Define to 1 if you have the <limits.h> header file. */
+#mesondefine HAVE_LIMITS_H
+
+/* Define to 1 if you have the <locale.h> header file. */
+#mesondefine HAVE_LOCALE_H
+
+/* Define if we enable Maemo specific features */
+#mesondefine HAVE_MAEMO
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+   to 0 otherwise. */
+#mesondefine HAVE_MALLOC
+
+/* Define if we have meegotouch */
+#mesondefine HAVE_MEEGOTOUCH
+
+/* Define to 1 if you have the `memchr' function. */
+#mesondefine HAVE_MEMCHR
+
+/* Define to 1 if you have the `memmove' function. */
+#mesondefine HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#mesondefine HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memset' function. */
+#mesondefine HAVE_MEMSET
+
+/* Define to 1 if you have a working `mmap' system call. */
+#mesondefine HAVE_MMAP
+
+/* Define to 1 if you have the `modf' function. */
+#mesondefine HAVE_MODF
+
+/* Define if we have MP3 extractor */
+#mesondefine HAVE_MP3
+
+/* Define to 1 if you have the `munmap' function. */
+#mesondefine HAVE_MUNMAP
+
+/* Define if we have NetworkManager for network status detection */
+#mesondefine HAVE_NETWORK_MANAGER
+
+/* Define if we have poppler-glib */
+#mesondefine HAVE_POPPLER
+
+/* Define to 1 if you have the `posix_fadvise' function. */
+#mesondefine HAVE_POSIX_FADVISE
+
+/* Define if we have PS extractor */
+#mesondefine HAVE_PS
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+   and to 0 otherwise. */
+#mesondefine HAVE_REALLOC
+
+/* Define to 1 if you have the `setlocale' function. */
+#mesondefine HAVE_SETLOCALE
+
+/* Define to 1 if you have the <sqlite3.h> header file. */
+#mesondefine HAVE_SQLITE3_H
+
+/* Define to 1 if you have the `sqrt' function. */
+#mesondefine HAVE_SQRT
+
+/* Define to 1 if you have the `statvfs64' function. */
+#mesondefine HAVE_STATVFS64
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#mesondefine HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#mesondefine HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#mesondefine HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#mesondefine HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strchr' function. */
+#mesondefine HAVE_STRCHR
+
+/* Define to 1 if you have the `strcspn' function. */
+#mesondefine HAVE_STRCSPN
+
+/* Define to 1 if you have the <strings.h> header file. */
+#mesondefine HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#mesondefine HAVE_STRING_H
+
+/* Define to 1 if you have the `strndup' function. */
+#mesondefine HAVE_STRNDUP
+
+/* Define to 1 if you have the `strnlen' function. */
+#mesondefine HAVE_STRNLEN
+
+/* Define to 1 if you have the `strrchr' function. */
+#mesondefine HAVE_STRRCHR
+
+/* Define to 1 if you have the `strstr' function. */
+#mesondefine HAVE_STRSTR
+
+/* Define to 1 if you have the `strtoul' function. */
+#mesondefine HAVE_STRTOUL
+
+/* Define to 1 if you have the `strtoull' function. */
+#mesondefine HAVE_STRTOULL
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#mesondefine HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#mesondefine HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#mesondefine HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/statfs.h> header file. */
+#mesondefine HAVE_SYS_STATFS_H
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#mesondefine HAVE_SYS_STATVFS_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#mesondefine HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#mesondefine HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#mesondefine HAVE_SYS_TYPES_H
+
+/* Define if we have text extractor */
+#mesondefine HAVE_TEXT
+
+/* Define if we have Totem PL parser */
+#mesondefine HAVE_TOTEM_PL_PARSER
+
+/* Define to 0 if tracker FTS is not compiled */
+#mesondefine HAVE_TRACKER_FTS
+
+/* Define to 0 if tracker-needle is not compiled */
+#mesondefine HAVE_TRACKER_NEEDLE
+
+/* Define to 1 if you have the `tzset' function. */
+#mesondefine HAVE_TZSET
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#mesondefine HAVE_UNISTD_H
+
+/* Define if we have GLib unit test framework */
+#mesondefine HAVE_UNIT_TEST
+
+/* Define if we have UPOWER */
+#mesondefine HAVE_UPOWER
+
+/* Define to 1 if you have the `up_client_get_on_low_battery' function. */
+#mesondefine HAVE_UP_CLIENT_GET_ON_LOW_BATTERY
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#mesondefine LT_OBJDIR
+
+/* Define if we are on win32 */
+#mesondefine OS_WIN32
+
+/* Define to the address where bug reports for this package should be sent. */
+#mesondefine PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#mesondefine PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#mesondefine PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#mesondefine PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#mesondefine PACKAGE_URL
+
+/* Define to the version of this package. */
+#mesondefine PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#mesondefine STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#mesondefine TIME_WITH_SYS_TIME
+
+/* Define to the Tracker binary age */
+#mesondefine TRACKER_BINARY_AGE
+
+/* Define to the Tracker interface age */
+#mesondefine TRACKER_INTERFACE_AGE
+
+/* Define to the Tracker major version */
+#mesondefine TRACKER_MAJOR_VERSION
+
+/* Define to the Tracker micro version */
+#mesondefine TRACKER_MICRO_VERSION
+
+/* Define to the Tracker minor version */
+#mesondefine TRACKER_MINOR_VERSION
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Unzip ps.gz files */
+#mesondefine USING_UNZIPPSFILES
+
+/* Define to 1 if on MINIX. */
+#mesondefine _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#mesondefine _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#mesondefine _POSIX_SOURCE
+
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+#mesondefine _UINT32_T
+
+/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+#mesondefine _UINT8_T
+
+/* Defined for compilers not supporting __FUNCTION__ */
+#mesondefine __FUNCTION__
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#mesondefine inline
+#endif
+
+/* Define to the type of a signed integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+#mesondefine int32_t
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+#mesondefine int64_t
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#mesondefine malloc
+
+/* Define to `int' if <sys/types.h> does not define. */
+#mesondefine pid_t
+
+/* Define to rpl_realloc if the replacement function should be used. */
+#mesondefine realloc
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#mesondefine size_t
+
+/* Define to the type of an unsigned integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+#mesondefine uint16_t
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+#mesondefine uint32_t
+
+/* Define to the type of an unsigned integer type of width exactly 8 bits if
+   such a type exists and the standard includes do not define it. */
+#mesondefine uint8_t
diff --git a/docs/manpages/meson.build b/docs/manpages/meson.build
new file mode 100644
index 0000000..50317f7
--- /dev/null
+++ b/docs/manpages/meson.build
@@ -0,0 +1,25 @@
+install_man('tracker-extract.1')
+install_man('tracker-info.1')
+install_man('tracker-miner-fs.1')
+install_man('tracker-daemon.1')
+install_man('tracker-search.1')
+install_man('tracker-sparql.1')
+install_man('tracker-sql.1')
+install_man('tracker-status.1')
+install_man('tracker-store.1')
+install_man('tracker-tag.1')
+install_man('tracker-reset.1')
+install_man('tracker-index.1')
+install_man('tracker-writeback.1')
+
+if have_tracker_miner_rss
+  install_man('tracker-miner-rss.1')
+endif
+
+if have_tracker_needle
+  install_man('tracker-needle.1')
+endif
+
+if have_tracker_preferences
+  install_man('tracker-preferences.1')
+endif
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644
index 0000000..76e5979
--- /dev/null
+++ b/docs/meson.build
@@ -0,0 +1,3 @@
+subdir('tools')
+subdir('manpages')
+subdir('reference')
diff --git a/docs/reference/libtracker-control/meson.build b/docs/reference/libtracker-control/meson.build
new file mode 100644
index 0000000..49f43eb
--- /dev/null
+++ b/docs/reference/libtracker-control/meson.build
@@ -0,0 +1,9 @@
+version_xml = configure_file(input: 'version.xml.in',
+    output: 'version.xml',
+    configuration: conf)
+
+gnome.gtkdoc('libtracker-control',
+    src_dir: '../../../src/libtracker-control',
+    main_sgml: 'libtracker-control-docs.sgml',
+    content_files: version_xml,
+    install: true)
diff --git a/docs/reference/libtracker-miner/meson.build b/docs/reference/libtracker-miner/meson.build
new file mode 100644
index 0000000..489529c
--- /dev/null
+++ b/docs/reference/libtracker-miner/meson.build
@@ -0,0 +1,9 @@
+version_xml = configure_file(input: 'version.xml.in',
+    output: 'version.xml',
+    configuration: conf)
+
+gnome.gtkdoc('libtracker-miner',
+    src_dir: '../../../src/libtracker-miner',
+    main_sgml: 'libtracker-miner-docs.sgml',
+    content_files: ['overview.sgml', version_xml],
+    install: true)
diff --git a/docs/reference/libtracker-sparql/meson.build b/docs/reference/libtracker-sparql/meson.build
new file mode 100644
index 0000000..6da6bc6
--- /dev/null
+++ b/docs/reference/libtracker-sparql/meson.build
@@ -0,0 +1,9 @@
+version_xml = configure_file(input: 'version.xml.in',
+    output: 'version.xml',
+    configuration: conf)
+
+gnome.gtkdoc('libtracker-sparql',
+    src_dir: '../../../src/libtracker-sparql',
+    main_sgml: 'libtracker-sparql-docs.sgml',
+    content_files: ['overview.sgml', 'examples.sgml', version_xml],
+    install: true)
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 0000000..529007b
--- /dev/null
+++ b/docs/reference/meson.build
@@ -0,0 +1,4 @@
+subdir('libtracker-control')
+subdir('libtracker-miner')
+subdir('libtracker-sparql')
+subdir('ontology')
diff --git a/docs/reference/ontology/meson.build b/docs/reference/ontology/meson.build
new file mode 100644
index 0000000..d18ca22
--- /dev/null
+++ b/docs/reference/ontology/meson.build
@@ -0,0 +1,31 @@
+version_xml = configure_file(input: 'version.xml.in',
+    output: 'version.xml',
+    configuration: conf)
+
+
+#for f in `find $ONTOLOGIES_DATA_DIR -name "*.description"` ; do
+#    # ../../src/ontologies/XX-aaa.description -> PREFIX=aaa
+#    TMPNAME=${f%.description}
+#    PREFIX=${TMPNAME#*-}
+#    echo "- Generating $PREFIX documentation"
+#
+#    $TTL2SGML -d $f -o $BUILD_DIR/$PREFIX-ontology.xml \
+#        -e $ONTOLOGIES_INFO_DIR/$PREFIX/explanation.xml
+
+
+gen_doc = meson.source_root() + '/docs/tools/gen-doc.sh'
+generated = custom_target('ontology-doc-generated',
+    output: 'gen-doc.stamp',
+    command: ['false', gen_doc, ttl2sgml, ttlresource2sgml,
+              meson.source_root() + '/src/ontologies',
+              meson.source_root() + '/docs/ontologies',
+              'xml/'],
+    depends: [ttl2sgml, ttlresource2sgml],
+)
+fuckyou = 'nothing'
+
+gnome.gtkdoc('ontology',
+    src_dir: '.',
+    main_sgml: 'ontology-docs.sgml',
+    content_files: [version_xml],
+    install: true)
diff --git a/docs/tools/meson.build b/docs/tools/meson.build
new file mode 100644
index 0000000..cf24f0e
--- /dev/null
+++ b/docs/tools/meson.build
@@ -0,0 +1,18 @@
+# These tools are used for generating the ontologies documentation.
+
+ttl_loader_files = [
+    'ttl_loader.c',
+    'ttl_model.c',
+    'ttl_sgml.c',
+    'qname.c',
+]
+
+ttl2sgml = executable('ttl2sgml',
+    ttl_loader_files, 'ttl2sgml.c',
+    dependencies: [tracker_data_dep, tracker_sparql_dep],
+    c_args: ['-DTRACKER_COMPILATION'])
+
+ttlresource2sgml = executable('ttlresource2sgml',
+    ttl_loader_files, 'ttlresource2sgml.c',
+    dependencies: [tracker_data_dep, tracker_sparql_dep],
+    c_args: ['-DTRACKER_COMPILATION'])
diff --git a/examples/libtracker-miner/meson.build b/examples/libtracker-miner/meson.build
new file mode 100644
index 0000000..d450a9b
--- /dev/null
+++ b/examples/libtracker-miner/meson.build
@@ -0,0 +1,7 @@
+sources = [
+    'tracker-miner-test.c',
+    'tracker-main.c']
+
+executable('tracker-miner-test', sources,
+    dependencies: [tracker_miner_dep]
+)
diff --git a/examples/libtracker-sparql/meson.build b/examples/libtracker-sparql/meson.build
new file mode 100644
index 0000000..17226b9
--- /dev/null
+++ b/examples/libtracker-sparql/meson.build
@@ -0,0 +1,7 @@
+executable('async-connection', 'async-connection.c',
+    dependencies: tracker_sparql_dep
+)
+
+executable('class-signal', 'class-signal.c',
+    dependencies: tracker_sparql_dep
+)
diff --git a/examples/meson.build b/examples/meson.build
new file mode 100644
index 0000000..6ab29f9
--- /dev/null
+++ b/examples/meson.build
@@ -0,0 +1,2 @@
+subdir('libtracker-miner')
+subdir('libtracker-sparql')
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..c4c3466
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,448 @@
+# Experimental, incomplete build instructions for Tracker using
+# Meson: http://www.mesonbuild.com/
+#
+# Requires Meson 0.36.0 or newer.
+#
+# Open questions:
+#   - is the installed version identical to an installed
+#     autotools build?
+#   - does crossbuilding (e.g. in Buildroot) work correctly?
+
+project('tracker', 'c', 'vala', 'cpp', version: '1.11.1')
+
+gnome = import('gnome')
+i18n = import('i18n')
+
+# This is the X.Y used in -llibtracker-FOO-X.Y
+tracker_api_version = '1.0'
+
+glib_required = '2.40.0'
+
+# 3.6.11 for sqlite_backup API
+# 3.6.16 to fix test failures
+# 3.6.17 for shared cache mode with virtual tables
+# 3.7.0 for WAL
+# 3.7.9 for FTS4 content= support
+sqlite_required = '3.7.9'
+
+cairo = dependency('cairo', version: '> 1.0')
+camel = dependency('camel-1.2', version: '> 2.32.0', required: false)
+dbus = dependency('dbus-1', version: '> 1.3.1')
+eds = dependency('evolution-data-server-1.2', version: '> 2.32.0', required: false)
+evo_plugin = dependency('evolution-shell-3.1', required: false)
+evo_shell = dependency('evolution-shell-3.0', version: '> 3.1', required: false)
+exempi = dependency('exempi-2.0', version: '> 2.1.0', required: false)
+flac = dependency('flac', version: '> 1.2.1', required: false)
+gee = dependency('gee-0.8', version: '> 0.3')
+gio = dependency('gio-2.0', version: '>' + glib_required)
+gio_unix = dependency('gio-unix-2.0', version: '>' + glib_required)
+glib = dependency('glib-2.0', version: '>' + glib_required)
+gmodule = dependency('gmodule-2.0', version: '>' + glib_required)
+gobject = dependency('gobject-2.0', version: '>' + glib_required)
+gstreamer = dependency('gstreamer-1.0', version: '> 0.10.31', required: false)
+gstreamer_tag = dependency('gstreamer-tag-1.0', version: '> 0.10.31', required: false)
+gtk3 = dependency('gtk+-3.0', version: '> 3.0.0', required: false)
+gupnp_dlna = dependency('gupnp-dlna-2.0', version: '> 0.9.4', required: false)
+icu_i18n = dependency('icu-i18n', version: '> 4.8.1.1', required: false)
+icu_uc = dependency('icu-uc', version: '> 4.8.1.1', required: false)
+json_glib = dependency('json-glib-1.0', version: '>= 1.0', required: true)
+libemail_utils = dependency('libemail-utils', required: false)
+libemail_engine = dependency('libemail-engine', required: false)
+libexif = dependency('libexif', version: '> 0.6', required: false)
+libgrss = dependency('libgrss', version: '> 0.7', required: false)
+libgsf = dependency('libgsf-1', version: '> 1.14.24', required: false)
+libiptcdata = dependency('libiptcdata', required: false)
+libmediaart = dependency('libmediaart', version: '> 1.9.0', required: false)
+libosinfo = dependency('libosinfo', version: '> 0.2.9', required: false)
+libpng = dependency('libpng', version: '> 0.89', required: false)
+libsoup = dependency('libsoup-2.4', version: '> 2.40', required: true)
+libtiff = dependency('libtiff-4', required: false)
+libxml2 = dependency('libxml-2.0', version: '> 2.6')
+libvorbis = dependency('vorbisfile', version: '> 0.22')
+meegotouch = dependency('meegotouch', version: '> 0.20', required: false)
+network_manager = dependency('libnm-glib', version: '> 0.8', required: false)
+poppler = dependency('poppler-glib', version: '> 0.16.0', required: false)
+sqlite = dependency('sqlite3', version: '>' + sqlite_required)
+taglib = dependency('taglib_c', version: '> 1.6', required: false)
+upower = dependency('libupower-glib', version: '> 0.9.0', required: false)
+zlib = dependency('zlib')
+
+libgif = meson.get_compiler('c').find_library('libgif', required: false)
+libjpeg = meson.get_compiler('c').find_library('libjpeg', required: false)
+libmath = meson.get_compiler('c').find_library('m')
+
+# FIXME: here we work around a quirk todo with Meson and Vala: the 'uuid'
+# pkg-config component corresponds to 'libuuid.vapi', but Meson assumes that
+# .vapi name always matches pkg-config name, and will add `--pkg uuid` to the
+# Vala commandline. By finding 'uuid' using find_library() instead, we get
+# a dependency object back that won't cause any `--pkg` arguments to be added
+# to the Vala commandline, but still works as expected for C code.
+uuid = meson.get_compiler('c').find_library('uuid')
+
+glib_mkenums = find_program('glib-mkenums')
+
+conf = configuration_data()
+
+enable_fts = get_option('fts')
+enable_extract = get_option('extract')
+enable_writeback = get_option('writeback')
+
+##################################################################
+# Check for libtracker-common, make sure libstemmer exists
+##################################################################
+
+have_libstemmer = false
+if get_option('stemmer') != 'no'
+    stemmer = meson.get_compiler('c').find_library('stemmer')
+    if stemmer.found()
+        have_libstemmer = true
+    elif get_option('stemmer') == 'yes'
+        error('stemmer support explicitly requested, but stemmer library couldn\'t be found')
+    endif
+endif
+conf.set('HAVE_LIBSTEMMER', have_libstemmer)
+
+##################################################################
+# Check for tracker-fts, allow disabling FTS support
+##################################################################
+
+if enable_fts
+  sqlite3_builtin_fts5_test = '''
+    #include <sqlite3.h>
+    sqlite3 *db;
+    int rc;
+    rc = sqlite3_open(":memory:", &db);
+    if (rc!=SQLITE_OK) return -1;
+    rc = sqlite3_exec(db, "create table a(text)", 0, 0, 0);
+    if (rc!=SQLITE_OK) return -1;
+    rc = sqlite3_exec(db, "create virtual table t using fts5(content='a',text)", 0, 0, 0);
+    if (rc!=SQLITE_OK) return -1;
+  '''
+
+  sqlite3_has_builtin_fts5 = meson.get_compiler('c').compiles(sqlite3_builtin_fts5_test,
+    name: 'sqlite3 has builtin FTS5 module')
+  conf.set10('HAVE_BUILTIN_FTS', sqlite3_has_builtin_fts5)
+endif
+
+####################################################################
+# bash-completion
+####################################################################
+
+install_bash_completion = false
+if get_option('bash_completion') == 'yes'
+    bash_completion_package = dependency('bash-completion', required: false)
+    if bash_completion_package.found()
+        bash_completion_dir = bash_completion_package.get_variable('completionsdir')
+    else
+        bash_completion_dir = join_paths(get_option('datadir'), 'bash-completion', 'completions')
+    endif
+    install_bash_completion = true
+elif get_option('bash_completion') == 'no'
+    install_bash_completion = false
+    bash_completion_dir = '(disabled)'
+else
+    install_bash_completion = true
+    bash_completion_dir = get_option('bash_completion')
+endif
+
+##################################################################
+# Check for libtracker-common: battery/mains power detection
+#
+# By default, AUTO with this order of preference:
+#  1)  upower
+#  2)  hal
+##################################################################
+
+have_hal = false
+battery_detection_library_name = ''
+
+if upower.found()
+  if get_option('battery_detection') == 'auto' or get_option('battery_detection') == 'upower'
+    battery_detection_library = upower
+    battery_detection_library_name = 'upower'
+    conf.set('HAVE_UPOWER', 1)
+  endif
+elif get_option('battery_detection') == 'upower'
+  error('upower explicitly requested, but upower library was not found')
+endif
+
+if battery_detection_library_name == ''
+  hal = dependency('hal', version: '> 0.5', required: false)
+
+  if hal.found()
+    battery_detection_library = hal
+    battery_detection_library_name = 'hal'
+    conf.set('HAVE_HAL', 1)
+  elif get_option('battery_detection') == 'hal'
+    error('HAL explicitly requested, but not found')
+  else
+    battery_detection_library_name = '(none)'
+  endif
+endif
+
+##################################################################
+# Check for libtracker-data and libtracker-fts: Unicode support
+#
+# By default, AUTO with this order of preference:
+#  1)  libunistring
+#  2)  libicu
+##################################################################
+
+have_libicu = false
+unicode_library_name = ''
+
+if icu_i18n.found() and icu_uc.found()
+  have_libicu = true
+endif
+
+if have_libicu
+  if get_option('unicode_support') == 'auto' or get_option('unicode_support') == 'icu'
+    unicode_library = declare_dependency(
+        dependencies: [icu_uc, icu_i18n]
+    )
+    unicode_library_name = 'icu'
+    conf.set('HAVE_LIBICU', 1)
+  endif
+elif get_option('unicode_support') == 'icu'
+  error('libicu explicitly requested, but icu-i18n and icu-uc libraries were not found')
+endif
+
+if unicode_library_name == ''
+  libunistring = meson.get_compiler('c').find_library('libunistring', required: false)
+
+  if libunistring.found()
+    unicode_library = libunistring
+    unicode_library_name = 'unistring'
+    conf.set('HAVE_LIBUNISTRING', 1)
+  elif get_option('unicode_support') == 'unistring'
+    error('libunistring explicitly requested, but not found')
+  else
+    error('Neither libicu or libunistring were found for Unicode support.')
+  endif
+endif
+
+####################################################################
+# Check for tracker-miner-fs: meegotouch, for MeeGo desktop files
+####################################################################
+
+have_meegotouch = false
+if get_option('meegotouch') != 'no'
+  meegotouch = dependency('meegotouch', version: '>= 0.20', required: false)
+
+  if meegotouch.found()
+    have_meegotouch = true
+  elif get_option('meegotouch') == 'yes'
+    error('meegotouch support explicitly requested, but meegotouch library couldn\'t be found')
+  endif
+endif
+conf.set('HAVE_MEEGOTOUCH', have_meegotouch)
+
+####################################################################
+# This section is for tracker-extract dependencies
+####################################################################
+
+##########################################################################
+# Check for tracker-extract: icu or enca for detecting Cyrillic in MP3s
+#
+# By default, AUTO with this order of preference:
+#  1)  icu
+#  2)  enca
+##########################################################################
+
+charset_library_name = 'none'
+
+if have_libicu
+  if get_option('charset_detection') == 'auto' or get_option('charset_detection') == 'icu'
+    charset_library = declare_dependency(
+       dependencies: [icu_uc, icu_i18n]
+    )
+    conf.set('HAVE_LIBICU_CHARSET_DETECTION', 1)
+    charset_library_name = 'icu'
+  endif
+else
+  if get_option('charset_detection') == 'icu'
+    error('libicu requested for character set detection, but it was not found')
+  endif
+endif
+
+if charset_library_name == 'none' and get_option('charset_library') != 'none'
+  enca = dependency('enca', version: '>= 1.9', required: false)
+
+  if enca.found()
+    conf.set('HAVE_ENCA', 1)
+    charset_library = enca
+    charset_library_name = 'enca'
+  elif get_option('enca') == 'yes'
+    error('enca support explicitly requested, but enca couldn\'t be found')
+  endif
+endif
+
+tracker_major_version = meson.project_version().split('.')[0].to_int()
+tracker_minor_version = meson.project_version().split('.')[1].to_int()
+tracker_micro_version = meson.project_version().split('.')[2].to_int()
+
+conf.set10('DISABLE_JOURNAL', get_option('journal') == false)
+
+conf.set10('HAVE_TRACKER_EXTRACT', enable_extract)
+conf.set10('HAVE_TRACKER_FTS', enable_fts)
+conf.set10('HAVE_TRACKER_WRITEBACK', enable_writeback)
+
+conf.set('HAVE_BUILTIN_FTS', sqlite3_has_builtin_fts5)
+conf.set('HAVE_LIBEXIF', libexif.found())
+conf.set('HAVE_LIBIPTCDATA', libiptcdata.found())
+conf.set('HAVE_LIBMEDIAART', libmediaart.found())
+conf.set('HAVE_NETWORK_MANAGER', network_manager.found())
+
+conf.set('LOCALEDIR', '"@0@/@1@"'.format(get_option('prefix'), get_option('localedir')))
+conf.set('SHAREDIR', '"@0@/@1@"'.format(get_option('prefix'), get_option('datadir')))
+conf.set('TRACKER_MINERS_DIR', '"@0@/@1@/tracker/miners"'.format(get_option('prefix'), 
get_option('datadir')))
+conf.set('TRACKER_UI_DIR', '"@0@/@1@/tracker/"'.format(get_option('prefix'), get_option('datadir')))
+
+conf.set('GETTEXT_PACKAGE', '"tracker"')
+conf.set('PACKAGE_VERSION', '"@0@"'.format(meson.project_version()))
+conf.set('TRACKER_VERSION', '"@0@"'.format(meson.project_version()))
+conf.set('TRACKER_MAJOR_VERSION', tracker_major_version)
+conf.set('TRACKER_MINOR_VERSION', tracker_minor_version)
+conf.set('TRACKER_MICRO_VERSION', tracker_micro_version)
+conf.set('TRACKER_INTERFACE_AGE', 0)
+conf.set('TRACKER_BINARY_AGE', 100 * tracker_minor_version + tracker_micro_version)
+configure_file(input: 'config.h.meson.in',
+               output: 'config.h',
+               configuration: conf)
+
+# Needed for O_NOATIME, and probably other stuff.
+add_global_arguments('-D_GNU_SOURCE', language: 'c')
+
+have_tracker_miner_rss = true
+have_tracker_needle = true
+have_tracker_preferences = true
+
+configinc = include_directories('./')
+srcinc = include_directories('src/')
+
+tracker_extract_modules_dir = '@0@/tracker-@1@/extract-modules'.format(get_option('libdir'), 
tracker_api_version)
+# NOTE: We don't use ${TRACKER_API_VERSION} because other content like
+# the ontology is installed to the same location.
+tracker_extract_rules_dir = '@0@/tracker/extract-rules'.format(get_option('datadir'))
+
+subdir('src')
+
+subdir('docs')
+subdir('examples')
+subdir('utils')
+
+subdir('tests')
+
+subdir('po')
+
+# Make sure we're not using versions of SQLite which cause problems.
+#
+# Avoid versions:
+sqlite_safe = true
+if sqlite.version().version_compare('>= 3.7.10') and sqlite.version().version_compare('<= 3.7.13')
+  # See https://mail.gnome.org/archives/tracker-list/2012-October/msg00028.html
+  sqlite_safe = false
+elif sqlite.version().version_compare('3.8.1')
+  # See https://mail.gnome.org/archives/tracker-list/2013-November/msg00021.html
+  sqlite_safe = false
+elif sqlite.version().version_compare('3.8.4.2')
+  # See https://mail.gnome.org/archives/tracker-list/2014-April/msg00001.html
+  sqlite_safe = false
+endif
+
+summary = [
+    '\nBuild Configuration:',
+    '    Prefix:                                 ' + get_option('prefix'),
+    '    Source code location:                   ' + meson.source_root(),
+    '    Compiler:                               ' + meson.get_compiler('c').get_id(),
+    '\nFeature Support:',
+    '    Battery/mains power detection:          ' + battery_detection_library_name,
+    '    Support for network status detection:   ' + network_manager.found().to_string(),
+    '    Unicode support library:                ' + unicode_library_name,
+    '    Build with Journal support:             ' + get_option('journal').to_string(),
+    '    Build with SQLite FTS support:          @0@ (built-in FTS: @1@)'.format(
+       get_option('fts'), sqlite3_has_builtin_fts5),
+    '    Build with Stemming support:            ' + have_libstemmer.to_string(),
+    '    Cache media art                         ' + libmediaart.found().to_string(),
+    '    Bash completion support:                ' + bash_completion_dir,
+]
+
+message('\n'.join(summary))
+
+
+#Data Miners / Writebacks:
+
+#>---FS (File System):                       $have_tracker_miner_fs (MeeGo support: $have_meegotouch)
+#>---Applications:                           $have_tracker_miner_apps
+#>---RSS:                                    $have_tracker_miner_rss
+#>---User Guides:                            $have_tracker_miner_user_guides
+#>---Email:
+#          Evolution:                            $have_tracker_miner_evolution 
($tracker_miner_evolution_install_dir)
+#          Thunderbird:                          $have_tracker_miner_thunderbird 
($tracker_miner_thunderbird_install_dir)
+#        Bookmarks:
+#          FireFox:                              $have_tracker_miner_firefox 
($tracker_miner_firefox_install_dir)
+
+#        Extract (secondary extraction):         $have_tracker_extract
+#        Writeback (writing changes back):       $have_tracker_writeback"
+
+if enable_extract
+message('Metadata Extractors:\n')
+
+#>---Support PNG:                            $have_libpng
+#>---Support PDF:                            $have_poppler
+#>---Support XPS:                            $have_libgxps
+#>---Support GIF:                            $have_libgif (xmp: $have_exempi)
+#>---Support JPEG:                           $have_libjpeg (xmp: $have_exempi, exif: $have_libexif, iptc: 
$have_libiptcdata)
+#>---Support TIFF:                           $have_libtiff (xmp: $have_exempi, exif: yes, iptc: 
$have_libiptcdata)
+#>---Support Vorbis (ogg/etc):               $have_libvorbis
+#>---Support Flac:                           $have_libflac
+#>---Support MS & Open Office:               $have_libgsf
+#>---Support XML / HTML:                     $have_libxml2
+#>---Support embedded / sidecar XMP:         $have_exempi
+#>---Support generic media formats:          $have_generic_media_handler ($have_generic_media_handler_app) 
(backend: $gstreamer_backend)
+#>---Support cue sheet parsing:              $have_libcue (libcue2.0: $have_libcue2)
+#>---Support playlists (w/ Totem):           $have_playlist
+#>---Support ISO image parsing:              $have_libosinfo
+#>---Support AbiWord document parsing:       $have_abiword
+#>---Support DVI parsing:                    $have_dvi
+#>---Support MP3 parsing:                    $have_mp3
+message('    Support MP3 tag charset detection:      ' + charset_library_name)
+#>---Support PS parsing:                     $have_ps
+#>---Support text parsing:                   $have_text
+#>---Support icon parsing:                   $have_icon"
+endif
+
+if enable_writeback
+message('''
+echo "
+Writeback Formats:
+
+>---Audio files using Taglib:               $have_taglib
+>---XMP:                                    $have_exempi"
+fi
+''')
+endif
+
+message('''
+Applications:
+
+>---Build tracker-preferences:              $have_tracker_preferences
+>---Build tracker-needle:                   $have_tracker_needle
+
+Frameworks / Options:
+
+        Support GNOME's Nautilus                $have_tracker_nautilus_extension 
($tracker_nautilus_extension_install_dir)
+>---Support Maemo                           $enable_maemo
+>---Support libmeegotouch                   $have_meegotouch
+>---Support Guaranteed Metadata             $enable_guarantee_metadata (e.g. guess nie:title from files)
+
+''')
+
+if not sqlite_safe
+  message('''WARNING:
+        SQLite3 version @0@ is not safe. For detail
+        3.7.10 - 3.7.13: https://mail.gnome.org/archives/tracker-list/2012-October/msg00028.html
+        3.8.1:           https://mail.gnome.org/archives/tracker-list/2013-November/msg00021.html
+        3.8.4.2:         https://mail.gnome.org/archives/tracker-list/2014-April/msg00001.html
+  ''').format(sqlite.version())
+endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..cd8dc4a
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,24 @@
+option('extract', type: 'boolean', value: true,
+       description: 'Enable the Tracker metadata extractor')
+option('fts', type: 'boolean', value: true,
+       description: 'Enable the Tracker full-text search feature')
+option('functional_tests', type: 'boolean', value: true,
+       description: 'Enable the Tracker functional test suite')
+option('journal', type: 'boolean', value: true,
+       description: 'Enable database journal backup mechanism')
+option('writeback', type: 'boolean', value: true,
+       description: 'Enable Tracker writeback feature')
+
+option('battery_detection', type: 'combo', choices: ['auto', 'hal', 'upower', 'none'], value: 'auto',
+       description: 'Enable upower or HAL for battery/mains power detection')
+option('charset_detection', type: 'combo', choices: ['auto', 'enca', 'icu', 'none'], value: 'auto',
+       description: 'Enable enca or libicu for charset detection in MP3s')
+option('meegotouch', type: 'combo', choices: ['auto', 'no', 'yes'], value: 'no',
+       description: 'Enable libmeegotouch application extraction')
+option('stemmer', type: 'combo', choices: ['auto', 'no', 'yes'], value: 'no',
+       description: 'Enable stemming words while indexing')
+option('unicode_support', type: 'combo', choices: ['icu', 'unistring', 'auto'], value: 'auto',
+       description: 'Unicode support library to use')
+
+option('bash_completion', type: 'string', default: 'yes',
+       description: 'Directory to install Bash completion files (or "yes" for default directory, "no" to 
disable installation')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..adb5176
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,6 @@
+i18n.gettext('tracker', languages:
+    ['ar', 'as', 'be@latin', 'bg', 'bs', 'ca', 'ca@valencia', 'cs', 'da', 'de',
+     'dz', 'el', 'en_GB', 'eo', 'es', 'et', 'eu', 'fi', 'fr', 'gl', 'he', 'hu',
+     'id', 'it', 'ja', 'ko', 'lt', 'lv', 'mk', 'ml', 'nb', 'nds', 'nl', 'oc',
+     'pa', 'pl', 'pt', 'pt_BR', 'ro', 'ru', 'sk', 'sl', 'sr', 'sr@latin', 'sv',
+     'te', 'tg', 'th', 'tr', 'uk', 'zh_CN', 'zh_HK', 'zh_TW'])
diff --git a/src/gvdb/meson.build b/src/gvdb/meson.build
new file mode 100644
index 0000000..82177dd
--- /dev/null
+++ b/src/gvdb/meson.build
@@ -0,0 +1,14 @@
+gvdb_dependencies = [glib]
+
+libgvdb = static_library('gvdb',
+    'gvdb-builder.c',
+    'gvdb-reader.c',
+    dependencies: gvdb_dependencies,
+    pic: true,
+)
+
+gvdb_dep = declare_dependency(
+    link_with: libgvdb,
+    dependencies: gvdb_dependencies,
+    include_directories: include_directories('..'),
+)
diff --git a/src/libtracker-bus/meson.build b/src/libtracker-bus/meson.build
new file mode 100644
index 0000000..0ec24e5
--- /dev/null
+++ b/src/libtracker-bus/meson.build
@@ -0,0 +1,24 @@
+libtracker_bus = static_library('tracker-bus',
+    'tracker-bus.vala',
+    'tracker-namespace.vala',
+    'tracker-array-cursor.vala',
+    'tracker-bus-fd-cursor.vala',
+    '../libtracker-common/libtracker-common.vapi',
+    dependencies: [tracker_common_dep, tracker_sparql_intermediate_dep],
+    c_args: [
+        '-DNO_LIBDBUS',
+        '-DTRACKER_COMPILATION',
+    ],
+    vala_args: [
+        '--debug',
+        '--pkg', 'posix',
+        # FIXME: Meson has code to add --target-glib automatically, but it
+        # doesn't seem to work here.
+        '--target-glib', glib_required,
+    ],
+)
+
+tracker_sparql_bus_dep = declare_dependency(
+    link_with: libtracker_bus,
+    include_directories: include_directories('.')
+)
diff --git a/src/libtracker-common/meson.build b/src/libtracker-common/meson.build
new file mode 100644
index 0000000..0768688
--- /dev/null
+++ b/src/libtracker-common/meson.build
@@ -0,0 +1,46 @@
+enums = gnome.mkenums('tracker-enum-types',
+    sources: 'tracker-enums.h',
+    c_template: 'tracker-enum-types.c.template',
+    h_template: 'tracker-enum-types.h.template',
+)
+
+tracker_common_sources = [
+    'tracker-date-time.c',
+    'tracker-dbus.c',
+    'tracker-file-utils.c',
+    'tracker-ioprio.c',
+    'tracker-log.c',
+    'tracker-sched.c',
+    'tracker-type-utils.c',
+    'tracker-utils.c',
+    'tracker-locale.c',
+    'tracker-parser-utils.c',
+    'tracker-language.c',
+    enums[0], enums[1],
+]
+
+if unicode_library_name == 'icu'
+    tracker_common_sources += 'tracker-parser-libicu.c'
+else
+    tracker_common_sources += 'tracker-parser-libunistring.c'
+endif
+
+# FIXME: need to link against -lkvm on OpenBSD, see configure.ac
+tracker_common_dependencies = [gio, gio_unix, glib, libmath]
+
+libtracker_common = library('tracker-common',
+    tracker_common_sources,
+    dependencies: tracker_common_dependencies + [unicode_library],
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+    include_directories: [configinc, srcinc],
+    install_dir: get_option('libdir') + '/tracker-' + tracker_api_version,
+)
+
+tracker_common_dep = declare_dependency(
+    sources: enums[1],
+    link_with: libtracker_common,
+    dependencies: tracker_common_dependencies,
+    include_directories: [configinc, srcinc, include_directories('.')],
+)
diff --git a/src/libtracker-control/meson.build b/src/libtracker-control/meson.build
new file mode 100644
index 0000000..d9b84ce
--- /dev/null
+++ b/src/libtracker-control/meson.build
@@ -0,0 +1,11 @@
+sources = ['tracker-miner-manager.c']
+
+libtracker_control = library('tracker-control', sources,
+    dependencies: tracker_miner_dep,
+    c_args: '-DTRACKER_COMPILATION'
+)
+
+tracker_control_dep = declare_dependency(
+    link_with: libtracker_control,
+    dependencies: tracker_miner_dep
+)
diff --git a/src/libtracker-data/meson.build b/src/libtracker-data/meson.build
new file mode 100644
index 0000000..18ca504
--- /dev/null
+++ b/src/libtracker-data/meson.build
@@ -0,0 +1,64 @@
+# Vala parts of libtracker-data are split out separately, because we can't link
+# the Vala code to libicu. In the Makefile.am this library is called
+# libtracker-sparql-query.
+libtracker_data_vala = static_library('tracker-data-vala',
+    'tracker-vala-namespace.vala',
+    'tracker-sparql-query.vala',
+    'tracker-sparql-expression.vala',
+    'tracker-sparql-pattern.vala',
+    'tracker-sparql-scanner.vala',
+    'tracker-turtle-reader.vala',
+    '../libtracker-common/libtracker-common.vapi',
+    '../libtracker-data/libtracker-data.vapi',
+    dependencies: [tracker_common_dep, tracker_sparql_intermediate_dep],
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+    vala_args: [
+        '--debug',
+        '--pkg', 'posix',
+        # FIXME: Meson has code to add --target-glib automatically, but it
+        # doesn't seem to work here.
+        '--target-glib', glib_required,
+    ]
+)
+
+tracker_data_dependencies = [
+    tracker_common_dep, gvdb_dep, sqlite, uuid,
+]
+
+if get_option('fts')
+    tracker_data_dependencies += tracker_fts_dep
+endif
+
+ #[gio_unix, glib, libmath, sqlite, uuid]
+libtracker_data = library('tracker-data',
+    'tracker-class.c',
+    'tracker-collation.c',
+    'tracker-crc32.c',
+    'tracker-data-backup.c',
+    'tracker-data-manager.c',
+    'tracker-data-query.c',
+    'tracker-data-update.c',
+    'tracker-db-config.c',
+    'tracker-db-interface.c',
+    'tracker-db-interface-sqlite.c',
+    'tracker-db-manager.c',
+    'tracker-db-journal.c',
+    'tracker-db-backup.c',
+    'tracker-namespace.c',
+    'tracker-ontology.c',
+    'tracker-ontologies.c',
+    'tracker-property.c',
+    link_with: [libtracker_data_vala],
+    dependencies: tracker_data_dependencies + [unicode_library],
+    include_directories: configinc,
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+)
+
+tracker_data_dep = declare_dependency(
+    link_with: [libtracker_data],
+    dependencies: tracker_data_dependencies,
+)
diff --git a/src/libtracker-direct/meson.build b/src/libtracker-direct/meson.build
new file mode 100644
index 0000000..8e2a5c6
--- /dev/null
+++ b/src/libtracker-direct/meson.build
@@ -0,0 +1,25 @@
+libtracker_direct = static_library('tracker-direct',
+    'tracker-direct.vala',
+    'tracker-namespace.vala',
+    '../libtracker-common/libtracker-common.vapi',
+    '../libtracker-data/libtracker-data.vapi',
+    '../libtracker-data/tracker-sparql-query.vapi',
+    dependencies: [
+        tracker_data_dep,
+        tracker_sparql_intermediate_dep],
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+    vala_args: [
+        '--debug',
+        '--pkg', 'posix',
+        # FIXME: Meson has code to add --target-glib automatically, but it
+        # doesn't seem to work here.
+        '--target-glib', glib_required,
+    ],
+)
+
+tracker_sparql_direct_dep = declare_dependency(
+    link_with: libtracker_direct,
+    include_directories: include_directories('.')
+)
diff --git a/src/libtracker-extract/meson.build b/src/libtracker-extract/meson.build
new file mode 100644
index 0000000..f4582e9
--- /dev/null
+++ b/src/libtracker-extract/meson.build
@@ -0,0 +1,45 @@
+libtracker_extract_sources = [
+  'tracker-encoding.c',
+  'tracker-exif.c',
+  'tracker-extract-info.c',
+  'tracker-guarantee.c',
+  'tracker-iptc.c',
+  'tracker-module-manager.c',
+  'tracker-resource-helpers.c',
+  'tracker-utils.c',
+  'tracker-xmp.c',
+]
+
+if charset_library_name == 'enca'
+  libtracker_extract_sources += 'tracker-encoding-enca.c'
+elif charset_library_name == 'icu'
+  libtracker_extract_sources += 'tracker-encoding-libicu.c'
+endif
+
+if have_meegotouch
+  libtracker_extract_sources += 'tracker-encoding-meegotouch.cpp'
+endif
+
+tracker_extract_dependencies = [charset_library, gmodule]
+
+if libexif.found()
+  tracker_extract_dependencies += libexif
+endif
+
+if libiptcdata.found()
+  tracker_extract_dependencies += libiptcdata
+endif
+
+libtracker_extract = library('tracker-extract',
+  libtracker_extract_sources,
+  dependencies: [tracker_common_dep, tracker_sparql_dep] + tracker_extract_dependencies,
+  c_args: [
+    '-DTRACKER_COMPILATION',
+    '-DTRACKER_EXTRACTOR_RULES_DIR="@0@"'.format(tracker_extract_rules_dir),
+    '-DTRACKER_EXTRACTORS_DIR="@0@"'.format(tracker_extract_modules_dir)
+  ],
+)
+
+tracker_extract_dep = declare_dependency(
+  link_with: libtracker_extract,
+  dependencies: tracker_extract_dependencies)
diff --git a/src/libtracker-fts/meson.build b/src/libtracker-fts/meson.build
new file mode 100644
index 0000000..d08bc5d
--- /dev/null
+++ b/src/libtracker-fts/meson.build
@@ -0,0 +1,23 @@
+if sqlite3_has_builtin_fts5
+    libtracker_fts_fts5 = []
+else
+    libtracker_fts_fts5 = files('fts5.c')
+endif
+
+libtracker_fts_dependencies = [sqlite]
+
+libtracker_fts = static_library('libtracker-fts',
+    'tracker-fts.c',
+    'tracker-fts-config.c',
+    'tracker-fts-tokenizer.c',
+    libtracker_fts_fts5,
+    dependencies: tracker_common_dep,
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+)
+
+tracker_fts_dep = declare_dependency(
+    link_with: libtracker_fts,
+    dependencies: libtracker_fts_dependencies
+)
diff --git a/src/libtracker-miner/meson.build b/src/libtracker-miner/meson.build
new file mode 100644
index 0000000..e01584a
--- /dev/null
+++ b/src/libtracker-miner/meson.build
@@ -0,0 +1,70 @@
+shared_libtracker_miner_monitor_sources = files('tracker-monitor.c')
+shared_libtracker_miner_file_system_sources = files('tracker-file-system.c')
+shared_libtracker_miner_crawler_sources = files('tracker-crawler.c')
+
+enums = gnome.mkenums('tracker-miner-enum-types',
+    sources: 'tracker-miner-enums.h',
+    c_template: 'tracker-miner-enum-types.c.template',
+    h_template: 'tracker-miner-enum-types.h.template',
+)
+
+private_sources = [
+    'tracker-crawler.c',
+    'tracker-file-data-provider.c',
+    'tracker-file-enumerator.c',
+    'tracker-file-notifier.c',
+    'tracker-file-system.c',
+    'tracker-priority-queue.c',
+    'tracker-task-pool.c',
+    'tracker-sparql-buffer.c',
+    'tracker-thumbnailer.c',
+    'tracker-utils.c']
+
+if libmediaart.found()
+    private_sources.append(['tracker-media-art.c'])
+endif
+
+miner_sources = [
+    enums[0], enums[1],
+    shared_libtracker_miner_monitor_sources,
+    shared_libtracker_miner_file_system_sources,
+    shared_libtracker_miner_crawler_sources,
+    'tracker-data-provider.c',
+    'tracker-decorator.c',
+    'tracker-decorator-fs.c',
+    'tracker-enumerator.c',
+    'tracker-indexing-tree.c',
+    'tracker-miner-object.c',
+    'tracker-miner-online.c',
+    'tracker-miner-fs.c']
+
+libtracker_miner_private = static_library(
+    'tracker-miner-private',
+    private_sources,
+    dependencies: [tracker_common_dep, tracker_sparql_dep],
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+)
+
+tracker_miner_dependencies = []
+if network_manager.found()
+    tracker_miner_dependencies += network_manager
+endif
+
+libtracker_miner = library(
+    'tracker-miner-' + tracker_api_version,
+    miner_sources,
+    link_with: [libtracker_miner_private],
+    dependencies: [tracker_common_dep, tracker_sparql_dep] + tracker_miner_dependencies,
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+)
+
+tracker_miner_dep = declare_dependency(
+    sources: enums[1],
+    link_with: libtracker_miner,
+    dependencies: [tracker_common_dep, tracker_sparql_dep],
+    include_directories: include_directories('.')
+)
diff --git a/src/libtracker-remote/meson.build b/src/libtracker-remote/meson.build
new file mode 100644
index 0000000..7a817c7
--- /dev/null
+++ b/src/libtracker-remote/meson.build
@@ -0,0 +1,28 @@
+tracker_remote_dependencies = [json_glib, libsoup, libxml2]
+
+sources = [
+    'tracker-json-cursor.vala',
+    'tracker-xml-cursor.vala',
+    'tracker-remote.vala',
+    '../libtracker-common/libtracker-common.vapi'
+]
+
+libtracker_remote = static_library('tracker-remote', sources,
+    dependencies: tracker_remote_dependencies + [tracker_common_dep, tracker_sparql_intermediate_dep],
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+    vala_args: [
+        '--debug',
+        '--pkg', 'posix',
+        # FIXME: Meson has code to add --target-glib automatically, but it
+        # doesn't seem to work here.
+        '--target-glib', glib_required,
+    ],
+)
+
+tracker_sparql_remote_dep = declare_dependency(
+    link_with: libtracker_remote,
+    include_directories: include_directories('.'),
+    dependencies: tracker_remote_dependencies,
+)
diff --git a/src/libtracker-sparql-backend/meson.build b/src/libtracker-sparql-backend/meson.build
new file mode 100644
index 0000000..b2c2fb9
--- /dev/null
+++ b/src/libtracker-sparql-backend/meson.build
@@ -0,0 +1,9 @@
+libtracker_sparql = library('tracker-sparql-' + tracker_api_version,
+    'tracker-backend.vala',
+    dependencies: [tracker_sparql_intermediate_dep, tracker_sparql_remote_dep, tracker_sparql_bus_dep, 
tracker_sparql_direct_dep],
+)
+tracker_sparql_dep = declare_dependency(
+    link_with: [libtracker_sparql, libtracker_common],
+    include_directories: srcinc,
+    dependencies: [tracker_common_dep, tracker_sparql_intermediate_dep],
+)
diff --git a/src/libtracker-sparql/meson.build b/src/libtracker-sparql/meson.build
new file mode 100644
index 0000000..0d4420c
--- /dev/null
+++ b/src/libtracker-sparql/meson.build
@@ -0,0 +1,45 @@
+enums_c = gnome.mkenums('tracker-sparql-enum-types',
+    sources: 'tracker-notifier.h',
+    c_template: 'tracker-sparql-enum-types.c.template',
+)
+enums_h = gnome.mkenums('tracker-sparql-enum-types',
+    sources: 'tracker-notifier.h',
+    h_template: 'tracker-sparql-enum-types.h.template',
+)
+
+tracker_sparql_intermediate_dependencies = [gio, glib, uuid]
+
+libtracker_sparql_intermediate = static_library('tracker-sparql-' + tracker_api_version,
+    enums_c, enums_h,
+    'tracker-namespace.vala',
+    'tracker-builder.vala',
+    'tracker-connection.vala',
+    'tracker-cursor.vala',
+    'tracker-utils.vala',
+    'tracker-namespace-manager.c',
+    'tracker-notifier.c',
+    'tracker-resource.c',
+    'tracker-uri.c',
+    'tracker-version.c',
+    vala_header: 'tracker-generated.h',
+    link_with: [libtracker_common],
+    dependencies: [tracker_common_dep] + tracker_sparql_intermediate_dependencies,
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+    vala_args: [
+        '--debug',
+        '--pkg', 'posix',
+        # FIXME: Meson has code to add --target-glib automatically, but it
+        # doesn't seem to work here.
+        '--target-glib', glib_required,
+    ],
+)
+
+tracker_sparql_intermediate_dep = declare_dependency(
+    link_with: [libtracker_sparql_intermediate],
+    include_directories: include_directories('.'),
+    dependencies: tracker_sparql_intermediate_dependencies + [
+        uuid
+    ]
+)
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..81acb0e
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,39 @@
+# Shared common code
+subdir('libtracker-common')
+
+# Intermediate library of RDF & SPARQL helper functions.
+# This gets used internally and also becomes part of the
+# public libtracker-sparql library.
+subdir('libtracker-sparql')
+
+# Internal database library
+subdir('gvdb')
+subdir('libtracker-fts')
+subdir('libtracker-data')
+
+# Public libtracker-sparql library
+subdir('libtracker-bus')
+subdir('libtracker-direct')
+subdir('libtracker-remote')
+subdir('libtracker-sparql-backend')
+
+# Internal data extraction helpers
+subdir('libtracker-extract')
+
+# Public data extract tool & modules
+subdir('tracker-extract')
+
+# Public libtracker-miner library
+subdir('libtracker-miner')
+
+# Public miners
+subdir('miners')
+
+# Internal control library
+subdir('libtracker-control')
+
+# Public commandline control tool
+subdir('tracker')
+
+# Example search application
+subdir('tracker-needle')
diff --git a/src/miners/fs/meson.build b/src/miners/fs/meson.build
new file mode 100644
index 0000000..4fee57b
--- /dev/null
+++ b/src/miners/fs/meson.build
@@ -0,0 +1,29 @@
+sources = [
+    'tracker-config.c',
+    'tracker-extract-watchdog.c',
+    'tracker-main.c',
+    'tracker-miner-files.c',
+    'tracker-miner-files-index.c',
+    'tracker-miner-files-peer-listener.c',
+    'tracker-storage.c',
+    'tracker-writeback-listener.c',
+    'tracker-writeback-dispatcher.c',
+    'tracker-writeback.c',
+]
+
+if battery_detection_library_name == 'upower'
+  sources += 'tracker-power-upower.c'
+elif battery_detection_library_name == 'hal'
+  sources += 'tracker-power-hal.c'
+endif
+
+executable('tracker-miner-fs', sources,
+    dependencies: [tracker_miner_dep, tracker_extract_dep],
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+)
+
+install_data(
+    sources: 'tracker-miner-files-index.xml',
+    install_dir: join_paths(get_option('datadir'), 'tracker'))
diff --git a/src/miners/meson.build b/src/miners/meson.build
new file mode 100644
index 0000000..d9236f2
--- /dev/null
+++ b/src/miners/meson.build
@@ -0,0 +1,4 @@
+# Only FS and RSS miners are built at present; the others are likely to
+# be removed soon.
+subdir('fs')
+subdir('rss')
diff --git a/src/miners/rss/meson.build b/src/miners/rss/meson.build
new file mode 100644
index 0000000..0a34d45
--- /dev/null
+++ b/src/miners/rss/meson.build
@@ -0,0 +1,15 @@
+sources = [
+    'tracker-main.c',
+    'tracker-miner-rss.c',
+]
+
+executable('tracker-miner-rss', sources,
+    dependencies: [libgrss, tracker_miner_dep, tracker_extract_dep],
+    c_args: [
+        '-DTRACKER_COMPILATION',
+    ],
+)
+
+#install_data(
+#    sources: 'tracker-miner-files-index.xml',
+#    install_dir: join_paths(get_option('datadir'), 'tracker'))
diff --git a/src/tracker-extract/meson.build b/src/tracker-extract/meson.build
new file mode 100644
index 0000000..e69de29
diff --git a/src/tracker-needle/meson.build b/src/tracker-needle/meson.build
new file mode 100644
index 0000000..c63a7d3
--- /dev/null
+++ b/src/tracker-needle/meson.build
@@ -0,0 +1,20 @@
+executable(
+    'tracker-needle',
+    'config.vapi',
+    'tracker-needle.vala',
+    'tracker-history.vala',
+    'tracker-needle.vala',
+    'tracker-query.vala',
+    'tracker-result-store.vala',
+    'tracker-stats.vala',
+    'tracker-tags-view.vala',
+    'tracker-utils.vala',
+    'tracker-view.vala',
+    dependencies: [tracker_sparql_dep, gtk3],
+    c_args: [
+        '-DSRCDIR="' + meson.current_source_dir() +'/"',
+        '-D_XOPEN_SOURCE',
+        '-D_XOPEN_SOURCE_EXTENDED',
+        '-include', 'config.h'
+    ]
+)
diff --git a/src/tracker/meson.build b/src/tracker/meson.build
new file mode 100644
index 0000000..75dadc6
--- /dev/null
+++ b/src/tracker/meson.build
@@ -0,0 +1,34 @@
+sources = [
+    'tracker-main.c',
+    'tracker-config.c',
+    'tracker-daemon.c',
+    'tracker-dbus.c',
+    'tracker-extract.c',
+    'tracker-help.c',
+    'tracker-index.c',
+    'tracker-info.c',
+    'tracker-process.c',
+    'tracker-reset.c',
+    'tracker-search.c',
+    'tracker-sparql.c',
+    'tracker-sql.c',
+    'tracker-status.c',
+    'tracker-tag.c',
+]
+
+executable('tracker', sources,
+    dependencies: [tracker_control_dep, tracker_sparql_dep, tracker_miner_dep],
+    c_args: [
+        '-DLIBEXECDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('libexecdir'))),
+        '-DMANDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('datadir'), 'man')),
+        '-DTRACKER_EXTRACTOR_RULES_DIR="@0@"'.format(tracker_extract_rules_dir),
+        '-DTRACKER_COMPILATION',
+    ]
+)
+
+
+if install_bash_completion
+    install_data(
+        sources: 'bash-completion/tracker',
+        install_dir: bash_completion_dir)
+endif
diff --git a/tests/common/meson.build b/tests/common/meson.build
new file mode 100644
index 0000000..2598745
--- /dev/null
+++ b/tests/common/meson.build
@@ -0,0 +1,15 @@
+tracker_testcommon_dependencies = [glib]
+
+libtracker_testcommon = library('tracker-testcommon',
+    'tracker-test-helpers.c',
+    dependencies: tracker_testcommon_dependencies,
+    c_args: [
+        '-DTEST_TEXT="@0@/tests/libtracker-common/non-utf8.txt"'.format(meson.source_root()),
+    ]
+)
+
+tracker_testcommon_dep = declare_dependency(
+    link_with: libtracker_testcommon,
+    dependencies: tracker_testcommon_dependencies,
+    include_directories: include_directories('.'),
+)
diff --git a/tests/functional-tests/ipc/meson.build b/tests/functional-tests/ipc/meson.build
new file mode 100644
index 0000000..31bc9a6
--- /dev/null
+++ b/tests/functional-tests/ipc/meson.build
@@ -0,0 +1,53 @@
+insert_or_replace_test = executable('test-insert-or-replace',
+  'test-insert-or-replace.vala',
+  dependencies: [tracker_sparql_dep])
+test('functional-ipc-insert-or-replace', insert_or_replace_test)
+
+busy_handling_test = executable('test-busy-handling',
+  'test-busy-handling.vala',
+  dependencies: [tracker_sparql_dep])
+test('functional-ipc-busy-handling', busy_handling_test)
+
+direct_query_test = executable('test-direct-query',
+  'test-direct-query.vala',
+  'test-shared-query.vala',
+  dependencies: [tracker_sparql_dep])
+test('functional-ipc-direct-query', direct_query_test)
+
+bus_query_test = executable('test-bus-query',
+  'test-bus-query.vala',
+  'test-shared-query.vala',
+  dependencies: [tracker_sparql_dep, tracker_sparql_bus_dep])
+test('functional-ipc-bus-query', bus_query_test)
+
+default_update_test = executable('test-default-update',
+  'test-default-update.vala',
+  'test-shared-update.vala',
+  dependencies: [tracker_sparql_dep])
+test('functional-ipc-default-update', default_update_test)
+
+bus_update_test = executable('test-bus-update',
+  'test-bus-update.vala',
+  'test-shared-update.vala',
+  dependencies: [tracker_sparql_dep, tracker_sparql_bus_dep])
+test('functional-ipc-bus-update', bus_update_test)
+
+class_signal_test = executable('test-class-signal',
+  'test-class-signal.vala',
+  dependencies: [tracker_sparql_dep])
+test('functional-ipc-class-signal', class_signal_test)
+
+class_signal_performance_test = executable('test-class-signal-performance',
+  'test-class-signal-performance.vala',
+  dependencies: [tracker_sparql_dep])
+test('functional-ipc-class-signal-performance', class_signal_performance_test)
+
+class_signal_performance_batch_test = executable('test-class-signal-performance-batch',
+  'test-class-signal-performance-batch.vala',
+  dependencies: [tracker_sparql_dep])
+test('functional-ipc-class-signal-performance-batch', class_signal_performance_batch_test)
+
+update_array_performance_test = executable('test-update-array-performance',
+  'test-update-array-performance.c',
+  dependencies: [tracker_sparql_dep])
+test('functional-ipc-update-array-performance', update_array_performance_test)
diff --git a/tests/functional-tests/meson.build b/tests/functional-tests/meson.build
new file mode 100644
index 0000000..af80853
--- /dev/null
+++ b/tests/functional-tests/meson.build
@@ -0,0 +1,41 @@
+subdir('ipc')
+
+test_runner = find_program('test-runner.sh')
+
+functional_tests = [
+  '01-insertion',
+  '02-sparql-bugs',
+  '03-fts-functions',
+  '04-group-concat',
+  '05-coalesce',
+  '06-distance',
+  '07-graph',
+  '08-unique-insertions',
+  '09-concurrent-query',
+  '10-sqlite-misused',
+  '11-sqlite-batch-misused',
+  '12-transactions',
+  '13-threaded-store',
+  '14-signals',
+  '15-statistics',
+  '16-collation',
+  '17-ontology-changes',
+  '200-backup-restore',
+  '300-miner-basic-ops',
+  '301-miner-resource-removal',
+  '310-fts-indexing',
+  '400-extractor-metadata',
+  '410-extractor-decorator',
+  '500-writeback',
+  '501-writeback-details',
+  '600-applications-camera',
+  '601-applications-sync',
+]
+
+foreach t: functional_tests
+  test('functional-' + t, test_runner,
+    args: './' + t + '.py',
+    workdir: meson.current_source_dir(),
+    # FIXME: these tests are all too slow
+    timeout: 180)
+endforeach
diff --git a/tests/gvdb/meson.build b/tests/gvdb/meson.build
new file mode 100644
index 0000000..89ab725
--- /dev/null
+++ b/tests/gvdb/meson.build
@@ -0,0 +1,7 @@
+gvdb_test = executable('gvdb-test',
+    'gvdb-test.c',
+    dependencies: gvdb_dep,
+    include_directories: configinc,
+)
+
+test('gvdb', gvdb_test)
diff --git a/tests/libtracker-common/meson.build b/tests/libtracker-common/meson.build
new file mode 100644
index 0000000..03c9953
--- /dev/null
+++ b/tests/libtracker-common/meson.build
@@ -0,0 +1,61 @@
+test_c_args = [
+    '-DTRACKER_COMPILATION',
+    '-DTOP_BUILDDIR="@0@"'.format(meson.build_root()),
+    '-DTOP_SRCDIR="@0@"'.format(meson.source_root()),
+]
+
+date_time_test = executable('tracker-date-time-test',
+    'tracker-date-time-test.c',
+    dependencies: tracker_common_dep,
+    c_args: test_c_args,
+)
+test('common-date-time', date_time_test)
+
+dbus_test = executable('tracker-dbus-test',
+    'tracker-dbus-test.c',
+    dependencies: [tracker_common_dep, tracker_testcommon_dep],
+    c_args: test_c_args,
+)
+test('common-dbus', dbus_test)
+
+file_utils_test = executable('tracker-file-utils-test',
+    'tracker-file-utils-test.c',
+    dependencies: [tracker_common_dep, tracker_testcommon_dep],
+    c_args: test_c_args,
+)
+test('common-file-utils', file_utils_test)
+
+parser_test = executable('tracker-parser-test',
+    'tracker-parser-test.c',
+    dependencies: [tracker_common_dep, tracker_testcommon_dep],
+    c_args: test_c_args,
+)
+test('common-parser', parser_test)
+
+sched_test = executable('tracker-sched-test',
+    'tracker-sched-test.c',
+    dependencies: [tracker_common_dep, tracker_testcommon_dep],
+    c_args: test_c_args,
+)
+test('common-sched', sched_test)
+
+type_utils_test = executable('tracker-type-utils-test',
+    'tracker-type-utils-test.c',
+    dependencies: tracker_common_dep,
+    c_args: test_c_args,
+)
+test('common-type-utils', type_utils_test)
+
+utils_test = executable('tracker-utils-test',
+    'tracker-utils-test.c',
+    dependencies: tracker_common_dep,
+    c_args: test_c_args,
+)
+test('common-utils', utils_test)
+
+# This is a manual test case
+parser_testcase = executable('tracker-parser',
+    'tracker-parser.c',
+    dependencies: tracker_common_dep,
+    c_args: test_c_args,
+)
diff --git a/tests/libtracker-data/meson.build b/tests/libtracker-data/meson.build
new file mode 100644
index 0000000..0f62f39
--- /dev/null
+++ b/tests/libtracker-data/meson.build
@@ -0,0 +1,51 @@
+test_c_args = [
+    '-DTRACKER_COMPILATION',
+    '-DTOP_BUILDDIR="@0@"'.format(meson.build_root()),
+    '-DTOP_SRCDIR="@0@"'.format(meson.source_root()),
+]
+
+backup_test = executable('tracker-backup-test',
+    'tracker-backup-test.c',
+    dependencies: tracker_data_dep,
+    c_args: test_c_args)
+test('data-backup', backup_test)
+
+crc32_test = executable('tracker-crc32-test',
+    'tracker-crc32-test.c',
+    dependencies: tracker_data_dep,
+    c_args: test_c_args)
+test('data-crc32', crc32_test)
+
+db_journal_test = executable('tracker-db-journal-test',
+    'tracker-db-journal.c',
+    dependencies: tracker_data_dep,
+    c_args: test_c_args)
+test('data-db-journal', db_journal_test)
+
+ontology_test = executable('tracker-ontology-test',
+    'tracker-ontology-test.c',
+    dependencies: tracker_data_dep,
+    c_args: test_c_args)
+test('data-ontology', ontology_test,
+    # FIXME: why is this test so slow?
+    timeout: 180)
+
+ontology_change_test = executable('tracker-ontology-change-test',
+    'tracker-ontology-change-test.c',
+    dependencies: tracker_data_dep,
+    c_args: test_c_args)
+test('data-ontology-change', ontology_change_test)
+
+sparql_test = executable('tracker-data-sparql-test',
+    'tracker-sparql-test.c',
+    dependencies: tracker_data_dep,
+    c_args: test_c_args)
+test('data-sparql', sparql_test,
+    # FIXME: why is this test so slow?
+    timeout: 180)
+
+sparql_blank_test = executable('tracker-sparql-blank-test',
+    'tracker-sparql-blank-test.c',
+    dependencies: tracker_data_dep,
+    c_args: test_c_args)
+test('data-sparql-blank', sparql_blank_test)
diff --git a/tests/libtracker-extract/meson.build b/tests/libtracker-extract/meson.build
new file mode 100644
index 0000000..9c0a554
--- /dev/null
+++ b/tests/libtracker-extract/meson.build
@@ -0,0 +1,60 @@
+test_c_args = [
+  '-DTRACKER_COMPILATION',
+  '-DTOP_BUILDDIR="@0@/"'.format(meson.build_root()),
+  '-DTOP_SRCDIR="@0@/"'.format(meson.source_root()),
+]
+
+guarantee_test = executable('tracker-guarantee-test',
+  'tracker-guarantee-test.c',
+  dependencies: [tracker_common_dep, tracker_extract_dep],
+  c_args: test_c_args,
+)
+test('extract-guarantee', guarantee_test)
+
+extract_info_test = executable('tracker-extract-info-test',
+  'tracker-extract-info-test.c',
+  dependencies: [tracker_common_dep, tracker_extract_dep],
+  c_args: test_c_args,
+)
+test('extract-info-test', extract_info_test)
+
+utils_test = executable('tracker-test-utils',
+  'tracker-test-utils.c',
+  dependencies: [tracker_common_dep, tracker_extract_dep],
+  c_args: test_c_args,
+)
+test('extract-utils', utils_test)
+
+xmp_test = executable('tracker-test-xmp',
+  'tracker-test-xmp.c',
+  dependencies: [tracker_common_dep, tracker_extract_dep],
+  c_args: test_c_args,
+)
+test('extract-xmp', xmp_test)
+
+if libexif.found()
+  exif_test = executable('tracker-exif-test',
+    'tracker-exif-test.c',
+    dependencies: [tracker_common_dep, tracker_extract_dep],
+    c_args: test_c_args,
+  )
+  test('extract-exif', exif_test)
+endif
+
+if libiptcdata.found() and libjpeg.found()
+  iptc_test = executable('tracker-iptc-test',
+    'tracker-iptc-test.c',
+    dependencies: [tracker_common_dep, tracker_extract_dep, libjpeg],
+    c_args: test_c_args,
+  )
+  test('extract-iptc', iptc_test)
+endif
+
+if charset_library_name != 'none'
+  encoding_test = executable('tracker-encoding-test',
+    'tracker-encoding-test.c',
+    dependencies: [tracker_common_dep, tracker_extract_dep],
+    c_args: test_c_args,
+  )
+  test('extract-encoding', encoding_test)
+endif
diff --git a/tests/libtracker-fts/meson.build b/tests/libtracker-fts/meson.build
new file mode 100644
index 0000000..99adea3
--- /dev/null
+++ b/tests/libtracker-fts/meson.build
@@ -0,0 +1,13 @@
+test_c_args = [
+  '-DTRACKER_COMPILATION',
+  '-DTOP_BUILDDIR="@0@/"'.format(meson.build_root()),
+  '-DTOP_SRCDIR="@0@/"'.format(meson.source_root()),
+]
+
+fts_test = executable('tracker-fts-test',
+  'tracker-fts-test.c',
+  dependencies: [tracker_common_dep, tracker_sparql_dep, tracker_testcommon_dep],
+  c_args: test_c_args
+)
+
+test('fts', fts_test)
diff --git a/tests/libtracker-miner/meson.build b/tests/libtracker-miner/meson.build
new file mode 100644
index 0000000..538c85a
--- /dev/null
+++ b/tests/libtracker-miner/meson.build
@@ -0,0 +1,69 @@
+test_c_args = [
+  '-DLIBEXEC_PATH="@0@/@1@"'.format(get_option('prefix'), get_option('libexecdir')),
+  '-DTEST',
+  '-DTRACKER_COMPILATION',
+  '-DTEST_DATA_DIR="@0@/data"'.format(meson.current_source_dir()),
+  '-DTEST_MINERS_DIR="@0@/mock-miners"'.format(meson.current_source_dir()),
+]
+
+crawler_test = executable('tracker-crawler-test',
+  'tracker-crawler-test.c',
+  shared_libtracker_miner_crawler_sources,
+  dependencies: [tracker_common_dep, tracker_miner_dep],
+  c_args: test_c_args
+)
+test('miner-crawler', crawler_test)
+
+file_notifier_test = executable('tracker-file-notifier-test',
+  'tracker-file-notifier-test.c',
+  dependencies: [tracker_common_dep, tracker_miner_dep],
+  c_args: test_c_args
+)
+test('miner-file-notifier', file_notifier_test)
+
+file_system_test = executable('tracker-file-system-test',
+  'tracker-file-system-test.c',
+  dependencies: [tracker_common_dep, tracker_miner_dep],
+  c_args: test_c_args
+)
+test('miner-file-system', file_system_test)
+
+indexing_tree_test = executable('tracker-indexing-tree-test',
+  'tracker-indexing-tree-test.c',
+  dependencies: [tracker_common_dep, tracker_miner_dep],
+  c_args: test_c_args
+)
+test('miner-indexing-tree', indexing_tree_test)
+
+monitor_test = executable('tracker-monitor-test',
+  'tracker-monitor-test.c',
+  shared_libtracker_miner_monitor_sources,
+  dependencies: [tracker_common_dep, tracker_miner_dep],
+  c_args: test_c_args
+)
+test('miner-monitor', monitor_test,
+  # FIXME: why is this test so slow?
+  timeout: 180)
+
+priority_queue_test = executable('tracker-priority-queue-test',
+  'tracker-priority-queue-test.c',
+  dependencies: [tracker_common_dep, tracker_miner_dep],
+  c_args: test_c_args
+)
+test('miner-priority-queue', priority_queue_test)
+
+task_pool_test = executable('tracker-task-pool-test',
+  'tracker-task-pool-test.c',
+  dependencies: [tracker_common_dep, tracker_miner_dep],
+  c_args: test_c_args
+)
+test('miner-task-pool', task_pool_test)
+
+thumbnailer_test = executable('tracker-thumbnailer-test',
+  'empty-gobject.c',
+  'thumbnailer-mock.c',
+  'tracker-thumbnailer-test.c',
+  dependencies: [tracker_common_dep, tracker_miner_dep],
+  c_args: test_c_args
+)
+test('miner-thumbnailer', thumbnailer_test)
diff --git a/tests/libtracker-sparql/meson.build b/tests/libtracker-sparql/meson.build
new file mode 100644
index 0000000..91ab4a0
--- /dev/null
+++ b/tests/libtracker-sparql/meson.build
@@ -0,0 +1,19 @@
+test_c_args = ['-DTRACKER_COMPILATION']
+
+resource_test = executable('tracker-resource-test',
+  'tracker-resource-test.c',
+  dependencies: [tracker_common_dep, tracker_sparql_dep],
+  c_args: test_c_args)
+test('sparql-resource', resource_test)
+
+sparql_test = executable('tracker-sparql-test',
+  'tracker-sparql-test.c',
+  dependencies: [tracker_common_dep, tracker_sparql_dep],
+  c_args: test_c_args)
+test('sparql', sparql_test)
+
+gb_737023_test = executable('tracker-gb-737023-test',
+  'tracker-gb-737023.c',
+  dependencies: [tracker_common_dep, tracker_sparql_dep],
+  c_args: test_c_args)
+test('gb_737023', sparql_test)
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..0730a11
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,26 @@
+subdir('common')
+
+subdir('gvdb')
+subdir('libtracker-common')
+subdir('libtracker-data')
+
+if enable_extract
+  subdir('libtracker-extract')
+endif
+
+if enable_fts
+  subdir('libtracker-fts')
+endif
+
+subdir('libtracker-miner')
+subdir('libtracker-sparql')
+subdir('tracker-steroids')
+
+# The test case for writeback doesn't seem to work.
+#if enable_writeback
+#  subdir('tracker-writeback')
+#endif
+
+if get_option('functional_tests')
+  subdir('functional-tests')
+endif
diff --git a/tests/tracker-steroids/meson.build b/tests/tracker-steroids/meson.build
new file mode 100644
index 0000000..4cc69dc
--- /dev/null
+++ b/tests/tracker-steroids/meson.build
@@ -0,0 +1,7 @@
+test_c_args = ['-DTRACKER_COMPILATION']
+
+steroids_test = executable('tracker-steroids-test',
+  'tracker-test.c',
+  dependencies: [tracker_common_dep, tracker_sparql_dep],
+  c_args: test_c_args)
+test('steroids', steroids_test)
diff --git a/utils/meson.build b/utils/meson.build
new file mode 100644
index 0000000..c624b49
--- /dev/null
+++ b/utils/meson.build
@@ -0,0 +1,3 @@
+subdir('mtp')
+subdir('ontology')
+subdir('tracker-resdump')
diff --git a/utils/mtp/meson.build b/utils/mtp/meson.build
new file mode 100644
index 0000000..e5b180d
--- /dev/null
+++ b/utils/mtp/meson.build
@@ -0,0 +1,2 @@
+executable('mtp', 'mtp-dummy.c',
+    dependencies: [tracker_common_dep, tracker_sparql_dep])
diff --git a/utils/ontology/meson.build b/utils/ontology/meson.build
new file mode 100644
index 0000000..7ba45a1
--- /dev/null
+++ b/utils/ontology/meson.build
@@ -0,0 +1,7 @@
+executable('data-validator', 'data-validator.c',
+    dependencies: [tracker_common_dep, tracker_data_dep, tracker_sparql_dep],
+    c_args: ['-DTRACKER_COMPILATION'])
+
+executable('ontology-validator', 'ontology-validator.c',
+    dependencies: [tracker_common_dep, tracker_data_dep, tracker_sparql_dep],
+    c_args: ['-DTRACKER_COMPILATION'])
diff --git a/utils/tracker-resdump/meson.build b/utils/tracker-resdump/meson.build
new file mode 100644
index 0000000..442d97b
--- /dev/null
+++ b/utils/tracker-resdump/meson.build
@@ -0,0 +1,2 @@
+executable('tracker-resdump', 'tracker-resdump.vala',
+    dependencies: [tracker_sparql_dep, gee])


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