[geary] Port build system to Meson. Bug 777044.



commit 01c13f726ff119cc164624e097fb4b0cebb267eb
Author: Niels De Graef <nielsdegraef gmail com>
Date:   Sat Dec 9 00:45:29 2017 +0100

    Port build system to Meson. Bug 777044.
    
    Some remarks:
    
    * Note that Meson adds a hard dependency on Python 3.
    
    * All dependencies and defines are now listed together.
    
    * Some build files were put in their respective subdirectories, e.g. the Geary
      engine library will be built from the Meson file in `src/engine`.
    
    * `--fatal-warnings` is no longer an explicit flag, as Meson provides
      `-Dwerror=true` for this.
    
    * An explicit resource file needs to be used. The issue to support this from
      Meson itself can be found at https://github.com/mesonbuild/meson/issues/706 .
    
    * The `gnome.yelp()` function parses a LINGUAS file so we no longer need to keep
      track of all languages in our build system.
    
    * There are no Debian scripts defined in the meson.build files to keep them
      clean, but they can be kept as separate scripts in `build-aux`.
    
    * Left out the `dist` target as there is now `ninja dist`
    
    * `geary-docs` is disabled by default, as valadoc-0.38.3 returns errors.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=777044

 bindings/meson.build              |   62 +++++++
 build-aux/post_install.py         |   15 ++
 desktop/meson.build               |   42 +++++
 help/LINGUAS                      |   11 ++
 help/meson.build                  |   18 ++
 icons/meson.build                 |   33 ++++
 meson.build                       |  154 ++++++++++++++++
 meson_options.txt                 |    7 +
 po/meson.build                    |    3 +
 sql/meson.build                   |   31 ++++
 src/client/meson.build            |  142 +++++++++++++++
 src/console/meson.build           |   16 ++
 src/engine/meson.build            |  349 +++++++++++++++++++++++++++++++++++++
 src/mailer/meson.build            |   15 ++
 src/meson.build                   |  100 +++++++++++
 src/sqlite3-unicodesn/meson.build |   48 +++++
 test/meson.build                  |   47 +++++
 ui/meson.build                    |    3 +
 ui/org.gnome.Geary.gresource.xml  |   41 +++++
 19 files changed, 1137 insertions(+), 0 deletions(-)
---
diff --git a/bindings/meson.build b/bindings/meson.build
new file mode 100644
index 0000000..db55b94
--- /dev/null
+++ b/bindings/meson.build
@@ -0,0 +1,62 @@
+# Custom VAPIs
+# NOTE: We can't directly use the dependencies returned by dependency() for
+# webkit2gtk (and the web extensions), since Meson then adds the packages from
+# the system directories. Since there might be conflicts with our custom VAPI's,
+# we need to glue pieces together. We satisfy GCC by looking up the relevant
+# include directories and we please the linker by using cc.find_library()
+
+
+girdir = gobject_introspection.get_pkgconfig_variable('girdir')
+
+webkit2gtk_vapi = gnome.generate_vapi('webkit2gtk-4.8',
+  sources: join_paths(girdir, 'WebKit2-4.0.gir'),
+  vapi_dirs: vapi_dir,
+  metadata_dirs: metadata_dir,
+  packages: [
+    'gtk+-3.0',
+    'libsoup-2.4',
+    'javascriptcore-4.0',
+  ],
+)
+
+webkit2gtk = declare_dependency(
+  dependencies: [
+    webkit2gtk_vapi,
+    javascriptcore,
+    javascriptcoregtk,
+    libsoup,
+    gdk,
+    gtk,
+    cc.find_library('webkit2gtk-4.0'),
+  ],
+  include_directories: 
include_directories(webkit2gtk_dep.get_pkgconfig_variable('includedir')+'/webkitgtk-4.0/'),
+)
+
+
+webkit2gtk_web_extension_vapi = gnome.generate_vapi('webkit2gtk-web-extension-4.0',
+  sources: [
+    join_paths(girdir, 'WebKit2WebExtension-4.0.gir'),
+    join_paths('metadata', 'WebKit2WebExtension-4.0-custom.vala'),
+  ],
+  vapi_dirs: [vapi_dir, meson.current_build_dir()],
+  metadata_dirs: metadata_dir,
+  packages: [
+    'gtk+-3.0',
+    'libsoup-2.4',
+    'javascriptcore-4.0',
+  ],
+)
+
+webkit2gtk_web_extension = declare_dependency(
+  dependencies: [
+    webkit2gtk_web_extension_vapi,
+    glib,
+    gio,
+    gtk,
+    libsoup,
+    javascriptcore,
+    javascriptcoregtk,
+    cc.find_library('webkit2gtk-4.0'),
+  ],
+  include_directories: 
include_directories(webkit2gtk_web_extension_dep.get_pkgconfig_variable('includedir')+'/webkitgtk-4.0/'),
+)
diff --git a/build-aux/post_install.py b/build-aux/post_install.py
new file mode 100644
index 0000000..bf320a9
--- /dev/null
+++ b/build-aux/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/desktop/meson.build b/desktop/meson.build
new file mode 100644
index 0000000..fc18da2
--- /dev/null
+++ b/desktop/meson.build
@@ -0,0 +1,42 @@
+foreach desktop_file: [ 'org.gnome.Geary.desktop', 'geary-autostart.desktop' ]
+  i18n.merge_file(
+    input: desktop_file + '.in',
+    output: desktop_file,
+    type: 'desktop',
+    po_dir: po_dir,
+    install: true,
+    install_dir: join_paths(datadir, 'applications')
+  )
+endforeach
+
+# The appdata file
+i18n.merge_file(
+  input: 'org.gnome.Geary.appdata.xml.in',
+  output: 'org.gnome.Geary.appdata.xml',
+  type: 'xml',
+  po_dir: po_dir,
+  install: true,
+  install_dir: join_paths(datadir, 'metainfo')
+)
+
+# Contractor file (Elementary OS)
+if install_contractor_file
+  i18n.merge_file(
+    input: 'geary-attach.contract.desktop.in',
+    output: 'geary-attach.contract',
+    type: 'desktop',
+    po_dir: po_dir,
+    install: true,
+    install_dir: join_paths(datadir, 'contractor')
+  )
+
+  install_data('geary-attach',
+    install_dir: bindir,
+  )
+endif
+
+# GSettings schemas
+geary_compiled_schema = gnome.compile_schemas() # Always compile, even if necessary. Makes sure it's valid.
+install_data('org.gnome.Geary.gschema.xml',
+  install_dir: join_paths(datadir, 'glib-2.0', 'schemas'),
+)
diff --git a/help/LINGUAS b/help/LINGUAS
new file mode 100644
index 0000000..6cf3b64
--- /dev/null
+++ b/help/LINGUAS
@@ -0,0 +1,11 @@
+# please keep this list sorted alphabetically
+#
+cs
+de
+el
+es
+fr
+it
+pl
+pt_BR
+sv
diff --git a/help/meson.build b/help/meson.build
new file mode 100644
index 0000000..d6af75b
--- /dev/null
+++ b/help/meson.build
@@ -0,0 +1,18 @@
+geary_help_pages = [
+  'accounts.page',
+  'archive.page',
+  'bugs.page',
+  'index.page',
+  'label.page',
+  'limits.page',
+  'overview.page',
+  'preferences.page',
+  'search.page',
+  'shortcuts.page',
+  'star.page',
+  'write.page',
+]
+
+gnome.yelp(meson.project_name(),
+  sources: geary_help_pages,
+)
diff --git a/icons/meson.build b/icons/meson.build
new file mode 100644
index 0000000..3f9e045
--- /dev/null
+++ b/icons/meson.build
@@ -0,0 +1,33 @@
+system_icons_dir = join_paths(datadir, 'icons', 'hicolor')
+
+icon_files = files(
+  'mail-archive-symbolic.svg',
+  'close-symbolic.svg',
+  'detach-symbolic.svg',
+  'text-x-generic-symbolic.svg',
+  'edit-symbolic.svg',
+  'format-text-remove-symbolic.svg',
+  'mail-drafts-symbolic.svg',
+  'mail-drafts-symbolic-rtl.svg',
+  'mail-forward-symbolic.svg',
+  'mail-forward-symbolic-rtl.svg',
+  'mail-inbox-symbolic.svg',
+  'mail-outbox-symbolic.svg',
+  'mail-reply-all-symbolic.svg',
+  'mail-reply-all-symbolic-rtl.svg',
+  'mail-reply-sender-symbolic.svg',
+  'mail-reply-sender-symbolic-rtl.svg',
+  'mail-sent-symbolic.svg',
+  'mail-sent-symbolic-rtl.svg',
+  'marker-symbolic.svg',
+  'tag-symbolic.svg',
+  'tag-symbolic-rtl.svg',
+)
+
+install_data(icon_files,
+  install_dir: join_paths(system_icons_dir, 'scalable', 'actions'),
+)
+
+install_subdir('hicolor',
+  install_dir: system_icons_dir,
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..8dcda82
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,154 @@
+project('geary', [ 'vala', 'c' ],
+  version: '0.13-dev',
+  license: 'LGPL2.1+',
+  meson_version: '>= 0.41',
+)
+
+gnome = import('gnome')
+i18n = import('i18n')
+
+# Option
+install_contractor_file = get_option('contractor')
+iso_639_xml = get_option('iso_639_xml')
+iso_3166_xml = get_option('iso_3166_xml')
+reference_tracking = get_option('ref_tracking')
+poodle = get_option('poodle')
+local_gsettings = get_option('local_gsettings')
+enable_valadoc = get_option('valadoc')
+
+# Some variables
+cc = meson.get_compiler('c')
+valac = meson.get_compiler('vala')
+config_h_dir = include_directories('.')
+geary_prefix = get_option('prefix')
+datadir = join_paths(geary_prefix, get_option('datadir'))
+libdir = join_paths(geary_prefix, get_option('libdir'))
+locale_dir = join_paths(geary_prefix, get_option('localedir'))
+po_dir = join_paths(meson.source_root(), 'po')
+vapi_dir = join_paths(meson.source_root(), 'bindings', 'vapi')
+metadata_dir = join_paths(meson.source_root(), 'bindings', 'metadata')
+
+# Make sure Meson can find our custom VAPI's
+add_project_arguments([
+    '--vapidir', vapi_dir,
+    '--metadatadir', metadata_dir,
+  ],
+  language: 'vala'
+)
+
+# Dependencies
+target_glib = '2.44' # Also passed to valac, so don't include a point rev
+target_gtk = '3.22.0'
+target_webkit = '2.16'
+
+posix = valac.find_library('posix')
+libmath = cc.find_library('m')
+glib = dependency('glib-2.0', version: '>=' + target_glib)
+gthread = dependency('gthread-2.0', version: '>=' + target_glib)
+gio = dependency('gio-2.0', version: '>=' + target_glib)
+gtk = dependency('gtk+-3.0', version: '>=' + target_gtk)
+gdk = dependency('gdk-3.0', version: '>=' + target_gtk)
+libsoup = dependency('libsoup-2.4', version: '>= 2.48')
+gee = dependency('gee-0.8', version: '>= 0.8.5')
+libnotify = dependency('libnotify', version: '>= 0.7.5')
+libcanberra = dependency('libcanberra', version: '>= 0.28')
+sqlite = dependency('sqlite3', version: '>= 3.7.4')
+gmime = dependency('gmime-2.6', version: '>= 2.6.17')
+libsecret = dependency('libsecret-1', version: '>= 0.11')
+libxml = dependency('libxml-2.0', version: '>= 2.7.8')
+gcr = dependency('gcr-3', version: '>= 3.10.1')
+gobject_introspection = dependency('gobject-introspection-1.0')
+webkit2gtk_dep = dependency('webkit2gtk-4.0', version: '>=' + target_webkit)
+webkit2gtk_web_extension_dep = dependency('webkit2gtk-web-extension-4.0', version: '>=' + target_webkit)
+javascriptcore = valac.find_library('javascriptcore-4.0', dirs: vapi_dir)
+javascriptcoregtk = cc.find_library('javascriptcoregtk-4.0', version: '>=' + target_webkit)
+enchant = dependency('enchant', version: '>= 1.6')
+libunwind = declare_dependency(
+  dependencies: [
+    dependency('libunwind', version: '>= 1.1'),
+    cc.find_library('libunwind-' + target_machine.cpu_family()),
+  ],
+)
+
+libunity = dependency('unity', version: '>= 5.12.0', required: false)
+libmessagingmenu = dependency('messaging-menu', version: '>= 12.10.2', required: false)
+sqlite = dependency('sqlite3')
+if sqlite.version().version_compare('>= 3.12')
+  if not cc.has_header_symbol('sqlite3.h', 'SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER')
+    error('SQLite3 is missing FTS3 tokenizer support. Please compile it with -DSQLITE_ENABLE_FTS3.\n'
+           + 'See https://bugzilla.gnome.org/show_bug.cgi?id=763203 for details.')
+  endif
+else
+  # detect that the current sqlite3 library has FTS3 support (at run time)
+  runtime_fts3_check = cc.compiles('''
+    #include <sqlite3.h>
+    #include <stdlib.h>
+    int main() {
+        sqlite3 *db;
+        char tmpfile[] = "sqliteXXXXXX";
+        mkstemp(tmpfile);
+        if (sqlite3_open(tmpfile, &db) == SQLITE_OK) {
+            return sqlite3_exec(db, "CREATE VIRTUAL TABLE mail USING fts3(subject, body);", 0, 0, 0);
+        }
+        return -1;
+    }
+  ''', dependencies: sqlite)
+  if not runtime_fts3_check
+    if sqlite.version().version_compare('< 3.11')
+      error('SQLite3 is missing FTS3 support. Please compile it with -DSQLITE_ENABLE_FTS3.')
+    else
+      error('SQLite3 is missing FTS3 tokenizer support. Please compile it with -DSQLITE_ENABLE_FTS3 
-DSQLITE_ENABLE_FTS3_TOKENIZER.')
+    endif
+  endif
+endif
+
+if enable_valadoc
+  valadoc = find_program('valadoc')
+endif
+
+# This will provide our custom dependencies, such as webkit2gtk
+subdir('bindings')
+
+# Language detection
+iso_codes_dir = join_paths('/', 'usr', 'share', 'xml', 'iso-codes')
+if iso_639_xml == ''
+  iso_639_xml = join_paths(iso_codes_dir, 'iso_639.xml')
+endif
+if iso_3166_xml == ''
+  iso_3166_xml = join_paths(iso_codes_dir, 'iso_3166.xml')
+endif
+files(iso_639_xml, iso_3166_xml) # Check to make sure these exist
+
+# Configuration
+conf = configuration_data()
+conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
+conf.set_quoted('G_LOG_DOMAIN', meson.project_name())
+conf.set_quoted('PACKAGE_NAME', meson.project_name())
+conf.set_quoted('PACKAGE_STRING', '@0@-@1@'.format(meson.project_name(), meson.project_version()))
+conf.set_quoted('PACKAGE_VERSION', meson.project_version())
+conf.set_quoted('_BUILD_ROOT_DIR', meson.build_root())
+conf.set_quoted('_SOURCE_ROOT_DIR', meson.source_root())
+conf.set_quoted('_GSETTINGS_DIR', join_paths(meson.source_root(), 'desktop'))
+conf.set_quoted('_INSTALL_PREFIX', geary_prefix)
+conf.set_quoted('LANGUAGE_SUPPORT_DIRECTORY', locale_dir)
+conf.set_quoted('ISO_CODE_639_XML', iso_639_xml)
+conf.set_quoted('ISO_CODE_3166_XML', iso_3166_xml)
+conf.set('HAVE_LIBMESSAGINGMENU', libmessagingmenu.found())
+conf.set('HAVE_LIBUNITY', libunity.found())
+conf.set('HAVE_FTS3_TOKENIZE', true)
+conf.set('VERSION', meson.project_version())
+conf.set('GCR_API_SUBJECT_TO_CHANGE', true)
+configure_file(output: 'config.h', configuration: conf)
+
+# Post-install scripts
+meson.add_install_script(join_paths('build-aux', 'post_install.py'))
+
+# Subfolders
+subdir('desktop')
+subdir('help')
+subdir('icons')
+subdir('po')
+subdir('sql')
+subdir('ui')
+subdir('src')
+subdir('test')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..00b1151
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,7 @@
+option('valadoc', type: 'boolean', value: false, description: 'Whether to build the documentaton (requires 
valadoc).')
+option('contractor', type: 'boolean', value: false, description: 'Whether to install the contractor file 
(Elementary OS-specific).')
+option('local_gsettings', type: 'boolean', value: false, description: 'Whether to compile GSettings schema 
inside the build folder.')
+option('poodle', type: 'boolean', value: true, description: 'Whether to apply the POODLE SSLv3 fix.')
+option('ref_tracking', type: 'boolean', value: false, description: 'Whether to use explicit reference 
tracking.')
+option('iso_639_xml', type: 'string', value: '', description: 'Full path to the ISO 639 XML file.')
+option('iso_3166_xml', type: 'string', value: '', description: 'Full path to the ISO 3166 XML file.')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..f904cde
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,3 @@
+i18n.gettext(meson.project_name(),
+  preset: 'glib'
+)
diff --git a/sql/meson.build b/sql/meson.build
new file mode 100644
index 0000000..a8ec43e
--- /dev/null
+++ b/sql/meson.build
@@ -0,0 +1,31 @@
+sql_files = [
+  'version-001.sql',
+  'version-002.sql',
+  'version-003.sql',
+  'version-004.sql',
+  'version-005.sql',
+  'version-006.sql',
+  'version-007.sql',
+  'version-008.sql',
+  'version-009.sql',
+  'version-010.sql',
+  'version-011.sql',
+  'version-012.sql',
+  'version-013.sql',
+  'version-014.sql',
+  'version-015.sql',
+  'version-016.sql',
+  'version-017.sql',
+  'version-018.sql',
+  'version-019.sql',
+  'version-020.sql',
+  'version-021.sql',
+  'version-022.sql',
+  'version-023.sql',
+  'version-024.sql',
+  'version-025.sql',
+]
+
+install_data(sql_files,
+  install_dir: join_paths(datadir, meson.project_name(), 'sql')
+)
diff --git a/src/client/meson.build b/src/client/meson.build
new file mode 100644
index 0000000..03af603
--- /dev/null
+++ b/src/client/meson.build
@@ -0,0 +1,142 @@
+# Geary client
+geary_client_vala_sources = files(
+  'application/autostart-manager.vala',
+  'application/geary-application.vala',
+  'application/geary-args.vala',
+  'application/geary-config.vala',
+  'application/geary-controller.vala',
+  'application/secret-mediator.vala',
+
+  'accounts/account-dialog.vala',
+  'accounts/account-dialog-account-list-pane.vala',
+  'accounts/account-dialog-add-edit-pane.vala',
+  'accounts/account-dialog-edit-alternate-emails-pane.vala',
+  'accounts/account-dialog-pane.vala',
+  'accounts/account-dialog-remove-confirm-pane.vala',
+  'accounts/account-dialog-remove-fail-pane.vala',
+  'accounts/account-dialog-spinner-pane.vala',
+  'accounts/account-spinner-page.vala',
+  'accounts/add-edit-page.vala',
+  'accounts/login-dialog.vala',
+
+  'components/client-web-view.vala',
+  'components/count-badge.vala',
+  'components/empty-placeholder.vala',
+  'components/folder-popover.vala',
+  'components/icon-factory.vala',
+  'components/main-toolbar.vala',
+  'components/main-window.vala',
+  'components/main-window-info-bar.vala',
+  'components/monitored-progress-bar.vala',
+  'components/monitored-spinner.vala',
+  'components/search-bar.vala',
+  'components/status-bar.vala',
+  'components/stock.vala',
+
+  'composer/composer-box.vala',
+  'composer/composer-container.vala',
+  'composer/composer-embed.vala',
+  'composer/composer-headerbar.vala',
+  'composer/composer-link-popover.vala',
+  'composer/composer-web-view.vala',
+  'composer/composer-widget.vala',
+  'composer/composer-window.vala',
+  'composer/contact-entry-completion.vala',
+  'composer/contact-list-store.vala',
+  'composer/contact-list-store-cache.vala',
+  'composer/email-entry.vala',
+  'composer/spell-check-popover.vala',
+
+  'conversation-list/conversation-list-cell-renderer.vala',
+  'conversation-list/conversation-list-store.vala',
+  'conversation-list/conversation-list-view.vala',
+  'conversation-list/formatted-conversation-data.vala',
+
+  'conversation-viewer/conversation-email.vala',
+  'conversation-viewer/conversation-list-box.vala',
+  'conversation-viewer/conversation-message.vala',
+  'conversation-viewer/conversation-viewer.vala',
+  'conversation-viewer/conversation-web-view.vala',
+
+  'dialogs/alert-dialog.vala',
+  'dialogs/attachment-dialog.vala',
+  'dialogs/certificate-warning-dialog.vala',
+  'dialogs/password-dialog.vala',
+  'dialogs/preferences-dialog.vala',
+  'dialogs/upgrade-dialog.vala',
+
+  'folder-list/folder-list-abstract-folder-entry.vala',
+  'folder-list/folder-list-account-branch.vala',
+  'folder-list/folder-list-folder-entry.vala',
+  'folder-list/folder-list-tree.vala',
+  'folder-list/folder-list-inboxes-branch.vala',
+  'folder-list/folder-list-inbox-folder-entry.vala',
+  'folder-list/folder-list-search-branch.vala',
+  'folder-list/folder-list-special-grouping.vala',
+
+  'notification/libmessagingmenu.vala',
+  'notification/libnotify.vala',
+  'notification/new-messages-indicator.vala',
+  'notification/new-messages-monitor.vala',
+  'notification/null-indicator.vala',
+  'notification/unity-launcher.vala',
+
+  'sidebar/sidebar-branch.vala',
+  'sidebar/sidebar-common.vala',
+  'sidebar/sidebar-count-cell-renderer.vala',
+  'sidebar/sidebar-entry.vala',
+  'sidebar/sidebar-tree.vala',
+
+  'util/util-date.vala',
+  'util/util-email.vala',
+  'util/util-files.vala',
+  'util/util-gio.vala',
+  'util/util-gravatar.vala',
+  'util/util-gtk.vala',
+  'util/util-international.vala',
+  'util/util-migrate.vala',
+  'util/util-webkit.vala',
+)
+
+geary_client_sources = [
+  geary_client_vala_sources,
+  geary_resources[0],
+]
+
+geary_client_dependencies = [
+  libmath,
+  enchant,
+  gcr,
+  gee,
+  gio,
+  gtk,
+  libcanberra,
+  libnotify,
+  libsecret,
+  libsoup,
+  gmime,
+  libxml,
+  posix,
+  webkit2gtk,
+  geary_engine_dep,
+]
+
+if libmessagingmenu.found()
+  geary_client_dependencies += libmessagingmenu
+endif
+if libunity.found()
+  geary_client_dependencies += libunity
+endif
+
+geary_client_lib = library('geary-client',
+  geary_client_sources,
+  dependencies: geary_client_dependencies,
+  include_directories: config_h_dir,
+  vala_args: geary_vala_options,
+  c_args: geary_c_options,
+)
+
+geary_client_dep = declare_dependency(
+  link_with: geary_client_lib,
+  include_directories: include_directories('.'),
+)
diff --git a/src/console/meson.build b/src/console/meson.build
new file mode 100644
index 0000000..8ff4771
--- /dev/null
+++ b/src/console/meson.build
@@ -0,0 +1,16 @@
+geary_console_sources = files(
+  'main.vala',
+)
+
+geary_console_dependencies = [
+  gtk,
+  gee,
+  gmime,
+  webkit2gtk,
+  geary_engine_dep,
+]
+
+geary_console = executable('geary-console',
+  geary_console_sources,
+  dependencies: geary_console_dependencies,
+)
diff --git a/src/engine/meson.build b/src/engine/meson.build
new file mode 100644
index 0000000..7a0913f
--- /dev/null
+++ b/src/engine/meson.build
@@ -0,0 +1,349 @@
+# Geary engine
+geary_engine_vala_sources = files(
+  'api/geary.vala',
+  'api/geary-abstract-local-folder.vala',
+  'api/geary-account.vala',
+  'api/geary-account-information.vala',
+  'api/geary-aggregated-folder-properties.vala',
+  'api/geary-attachment.vala',
+  'api/geary-base-object.vala',
+  'api/geary-composed-email.vala',
+  'api/geary-contact.vala',
+  'api/geary-contact-flags.vala',
+  'api/geary-contact-importance.vala',
+  'api/geary-contact-store.vala',
+  'api/geary-credentials.vala',
+  'api/geary-credentials-mediator.vala',
+  'api/geary-email-flags.vala',
+  'api/geary-email-identifier.vala',
+  'api/geary-email-properties.vala',
+  'api/geary-email.vala',
+  'api/geary-endpoint.vala',
+  'api/geary-engine-error.vala',
+  'api/geary-engine.vala',
+  'api/geary-folder.vala',
+  'api/geary-folder-path.vala',
+  'api/geary-folder-properties.vala',
+  'api/geary-folder-supports-archive.vala',
+  'api/geary-folder-supports-copy.vala',
+  'api/geary-folder-supports-create.vala',
+  'api/geary-folder-supports-empty.vala',
+  'api/geary-folder-supports-mark.vala',
+  'api/geary-folder-supports-move.vala',
+  'api/geary-folder-supports-remove.vala',
+  'api/geary-logging.vala',
+  'api/geary-named-flag.vala',
+  'api/geary-named-flags.vala',
+  'api/geary-problem-report.vala',
+  'api/geary-progress-monitor.vala',
+  'api/geary-revokable.vala',
+  'api/geary-search-folder.vala',
+  'api/geary-search-query.vala',
+  'api/geary-service.vala',
+  'api/geary-service-provider.vala',
+  'api/geary-special-folder-type.vala',
+
+  'app/app-conversation.vala',
+  'app/app-conversation-monitor.vala',
+  'app/app-draft-manager.vala',
+  'app/app-email-store.vala',
+
+  'app/conversation-monitor/app-append-operation.vala',
+  'app/conversation-monitor/app-conversation-operation-queue.vala',
+  'app/conversation-monitor/app-conversation-operation.vala',
+  'app/conversation-monitor/app-conversation-set.vala',
+  'app/conversation-monitor/app-external-append-operation.vala',
+  'app/conversation-monitor/app-fill-window-operation.vala',
+  'app/conversation-monitor/app-local-load-operation.vala',
+  'app/conversation-monitor/app-local-search-operation.vala',
+  'app/conversation-monitor/app-remove-operation.vala',
+  'app/conversation-monitor/app-reseed-operation.vala',
+  'app/conversation-monitor/app-terminate-operation.vala',
+
+  'app/email-store/app-async-folder-operation.vala',
+  'app/email-store/app-copy-operation.vala',
+  'app/email-store/app-fetch-operation.vala',
+  'app/email-store/app-list-operation.vala',
+  'app/email-store/app-mark-operation.vala',
+
+  'common/common-message-data.vala',
+
+  'db/db.vala',
+  'db/db-connection.vala',
+  'db/db-context.vala',
+  'db/db-database.vala',
+  'db/db-database-error.vala',
+  'db/db-result.vala',
+  'db/db-statement.vala',
+  'db/db-synchronous-mode.vala',
+  'db/db-transaction-async-job.vala',
+  'db/db-transaction-outcome.vala',
+  'db/db-transaction-type.vala',
+  'db/db-versioned-database.vala',
+
+  'imap/imap.vala',
+  'imap/imap-error.vala',
+  'imap/api/imap-account.vala',
+  'imap/api/imap-email-flags.vala',
+  'imap/api/imap-email-properties.vala',
+  'imap/api/imap-folder-properties.vala',
+  'imap/api/imap-folder.vala',
+  'imap/api/imap-folder-root.vala',
+  'imap/command/imap-append-command.vala',
+  'imap/command/imap-capability-command.vala',
+  'imap/command/imap-close-command.vala',
+  'imap/command/imap-command.vala',
+  'imap/command/imap-compress-command.vala',
+  'imap/command/imap-copy-command.vala',
+  'imap/command/imap-create-command.vala',
+  'imap/command/imap-examine-command.vala',
+  'imap/command/imap-expunge-command.vala',
+  'imap/command/imap-fetch-command.vala',
+  'imap/command/imap-id-command.vala',
+  'imap/command/imap-idle-command.vala',
+  'imap/command/imap-list-command.vala',
+  'imap/command/imap-list-return-parameter.vala',
+  'imap/command/imap-login-command.vala',
+  'imap/command/imap-logout-command.vala',
+  'imap/command/imap-message-set.vala',
+  'imap/command/imap-namespace-command.vala',
+  'imap/command/imap-noop-command.vala',
+  'imap/command/imap-search-command.vala',
+  'imap/command/imap-search-criteria.vala',
+  'imap/command/imap-search-criterion.vala',
+  'imap/command/imap-select-command.vala',
+  'imap/command/imap-starttls-command.vala',
+  'imap/command/imap-status-command.vala',
+  'imap/command/imap-store-command.vala',
+  'imap/message/imap-data-format.vala',
+  'imap/message/imap-envelope.vala',
+  'imap/message/imap-fetch-body-data-specifier.vala',
+  'imap/message/imap-fetch-data-specifier.vala',
+  'imap/message/imap-flag.vala',
+  'imap/message/imap-flags.vala',
+  'imap/message/imap-internal-date.vala',
+  'imap/message/imap-mailbox-specifier.vala',
+  'imap/message/imap-mailbox-parameter.vala',
+  'imap/message/imap-message-data.vala',
+  'imap/message/imap-message-flag.vala',
+  'imap/message/imap-message-flags.vala',
+  'imap/message/imap-namespace.vala',
+  'imap/message/imap-sequence-number.vala',
+  'imap/message/imap-status-data-type.vala',
+  'imap/message/imap-tag.vala',
+  'imap/message/imap-uid.vala',
+  'imap/message/imap-uid-validity.vala',
+  'imap/parameter/imap-atom-parameter.vala',
+  'imap/parameter/imap-list-parameter.vala',
+  'imap/parameter/imap-literal-parameter.vala',
+  'imap/parameter/imap-nil-parameter.vala',
+  'imap/parameter/imap-number-parameter.vala',
+  'imap/parameter/imap-parameter.vala',
+  'imap/parameter/imap-quoted-string-parameter.vala',
+  'imap/parameter/imap-root-parameters.vala',
+  'imap/parameter/imap-string-parameter.vala',
+  'imap/parameter/imap-unquoted-string-parameter.vala',
+  'imap/response/imap-capabilities.vala',
+  'imap/response/imap-continuation-response.vala',
+  'imap/response/imap-fetch-data-decoder.vala',
+  'imap/response/imap-fetched-data.vala',
+  'imap/response/imap-mailbox-attribute.vala',
+  'imap/response/imap-mailbox-attributes.vala',
+  'imap/response/imap-mailbox-information.vala',
+  'imap/response/imap-namespace-response.vala',
+  'imap/response/imap-response-code.vala',
+  'imap/response/imap-response-code-type.vala',
+  'imap/response/imap-server-data.vala',
+  'imap/response/imap-server-data-type.vala',
+  'imap/response/imap-server-response.vala',
+  'imap/response/imap-status.vala',
+  'imap/response/imap-status-data.vala',
+  'imap/response/imap-status-response.vala',
+  'imap/transport/imap-client-connection.vala',
+  'imap/transport/imap-client-session-manager.vala',
+  'imap/transport/imap-client-session.vala',
+  'imap/transport/imap-deserializer.vala',
+  'imap/transport/imap-serializer.vala',
+
+  'imap-db/imap-db-account.vala',
+  'imap-db/imap-db-attachment.vala',
+  'imap-db/imap-db-contact.vala',
+  'imap-db/imap-db-database.vala',
+  'imap-db/imap-db-email-identifier.vala',
+  'imap-db/imap-db-folder.vala',
+  'imap-db/imap-db-gc.vala',
+  'imap-db/imap-db-message-addresses.vala',
+  'imap-db/imap-db-message-row.vala',
+  'imap-db/search/imap-db-search-email-identifier.vala',
+  'imap-db/search/imap-db-search-folder.vala',
+  'imap-db/search/imap-db-search-folder-properties.vala',
+  'imap-db/search/imap-db-search-folder-root.vala',
+  'imap-db/search/imap-db-search-query.vala',
+  'imap-db/search/imap-db-search-term.vala',
+  'imap-db/outbox/smtp-outbox-email-identifier.vala',
+  'imap-db/outbox/smtp-outbox-email-properties.vala',
+  'imap-db/outbox/smtp-outbox-folder.vala',
+  'imap-db/outbox/smtp-outbox-folder-properties.vala',
+  'imap-db/outbox/smtp-outbox-folder-root.vala',
+
+  'imap-engine/imap-engine.vala',
+  'imap-engine/imap-engine-account-synchronizer.vala',
+  'imap-engine/imap-engine-batch-operations.vala',
+  'imap-engine/imap-engine-contact-store.vala',
+  'imap-engine/imap-engine-email-flag-watcher.vala',
+  'imap-engine/imap-engine-email-prefetcher.vala',
+  'imap-engine/imap-engine-generic-account.vala',
+  'imap-engine/imap-engine-generic-folder.vala',
+  'imap-engine/imap-engine-minimal-folder.vala',
+  'imap-engine/imap-engine-replay-operation.vala',
+  'imap-engine/imap-engine-replay-queue.vala',
+  'imap-engine/imap-engine-revokable-move.vala',
+  'imap-engine/imap-engine-revokable-committed-move.vala',
+  'imap-engine/imap-engine-send-replay-operation.vala',
+  'imap-engine/gmail/imap-engine-gmail-account.vala',
+  'imap-engine/gmail/imap-engine-gmail-all-mail-folder.vala',
+  'imap-engine/gmail/imap-engine-gmail-drafts-folder.vala',
+  'imap-engine/gmail/imap-engine-gmail-folder.vala',
+  'imap-engine/gmail/imap-engine-gmail-search-folder.vala',
+  'imap-engine/gmail/imap-engine-gmail-spam-trash-folder.vala',
+  'imap-engine/other/imap-engine-other-account.vala',
+  'imap-engine/other/imap-engine-other-folder.vala',
+  'imap-engine/outlook/imap-engine-outlook-account.vala',
+  'imap-engine/outlook/imap-engine-outlook-folder.vala',
+  'imap-engine/outlook/imap-engine-outlook-drafts-folder.vala',
+  'imap-engine/replay-ops/imap-engine-abstract-list-email.vala',
+  'imap-engine/replay-ops/imap-engine-copy-email.vala',
+  'imap-engine/replay-ops/imap-engine-create-email.vala',
+  'imap-engine/replay-ops/imap-engine-empty-folder.vala',
+  'imap-engine/replay-ops/imap-engine-fetch-email.vala',
+  'imap-engine/replay-ops/imap-engine-list-email-by-id.vala',
+  'imap-engine/replay-ops/imap-engine-list-email-by-sparse-id.vala',
+  'imap-engine/replay-ops/imap-engine-mark-email.vala',
+  'imap-engine/replay-ops/imap-engine-move-email-commit.vala',
+  'imap-engine/replay-ops/imap-engine-move-email-prepare.vala',
+  'imap-engine/replay-ops/imap-engine-move-email-revoke.vala',
+  'imap-engine/replay-ops/imap-engine-remove-email.vala',
+  'imap-engine/replay-ops/imap-engine-replay-append.vala',
+  'imap-engine/replay-ops/imap-engine-replay-disconnect.vala',
+  'imap-engine/replay-ops/imap-engine-replay-removal.vala',
+  'imap-engine/replay-ops/imap-engine-server-search-email.vala',
+  'imap-engine/replay-ops/imap-engine-user-close.vala',
+  'imap-engine/yahoo/imap-engine-yahoo-account.vala',
+  'imap-engine/yahoo/imap-engine-yahoo-folder.vala',
+
+  'memory/memory-buffer.vala',
+  'memory/memory-byte-buffer.vala',
+  'memory/memory-empty-buffer.vala',
+  'memory/memory-file-buffer.vala',
+  'memory/memory-growable-buffer.vala',
+  'memory/memory-offset-buffer.vala',
+  'memory/memory-string-buffer.vala',
+  'memory/memory-unowned-byte-array-buffer.vala',
+  'memory/memory-unowned-bytes-buffer.vala',
+  'memory/memory-unowned-string-buffer.vala',
+
+  'mime/mime-content-disposition.vala',
+  'mime/mime-content-parameters.vala',
+  'mime/mime-content-type.vala',
+  'mime/mime-data-format.vala',
+  'mime/mime-disposition-type.vala',
+  'mime/mime-error.vala',
+  'mime/mime-multipart-subtype.vala',
+
+  'nonblocking/nonblocking-abstract-semaphore.vala',
+  'nonblocking/nonblocking-batch.vala',
+  'nonblocking/nonblocking-concurrent.vala',
+  'nonblocking/nonblocking-counting-semaphore.vala',
+  'nonblocking/nonblocking-error.vala',
+  'nonblocking/nonblocking-mailbox.vala',
+  'nonblocking/nonblocking-mutex.vala',
+  'nonblocking/nonblocking-reporting-semaphore.vala',
+  'nonblocking/nonblocking-variants.vala',
+
+  'rfc822/rfc822.vala',
+  'rfc822/rfc822-error.vala',
+  'rfc822/rfc822-gmime-filter-flowed.vala',
+  'rfc822/rfc822-gmime-filter-blockquotes.vala',
+  'rfc822/rfc822-gmime-filter-plain.vala',
+  'rfc822/rfc822-mailbox-addresses.vala',
+  'rfc822/rfc822-mailbox-address.vala',
+  'rfc822/rfc822-message.vala',
+  'rfc822/rfc822-message-data.vala',
+  'rfc822/rfc822-utils.vala',
+
+  'smtp/smtp-authenticator.vala',
+  'smtp/smtp-capabilities.vala',
+  'smtp/smtp-client-connection.vala',
+  'smtp/smtp-client-session.vala',
+  'smtp/smtp-command.vala',
+  'smtp/smtp-data-format.vala',
+  'smtp/smtp-error.vala',
+  'smtp/smtp-greeting.vala',
+  'smtp/smtp-login-authenticator.vala',
+  'smtp/smtp-plain-authenticator.vala',
+  'smtp/smtp-request.vala',
+  'smtp/smtp-response.vala',
+  'smtp/smtp-response-code.vala',
+  'smtp/smtp-response-line.vala',
+
+  'state/state-machine-descriptor.vala',
+  'state/state-machine.vala',
+  'state/state-mapping.vala',
+
+  'util/util-ascii.vala',
+  'util/util-collection.vala',
+  'util/util-connectivity-manager.vala',
+  'util/util-converter.vala',
+  'util/util-files.vala',
+  'util/util-generic-capabilities.vala',
+  'util/util-html.vala',
+  'util/util-idle-manager.vala',
+  'util/util-imap-utf7.vala',
+  'util/util-inet.vala',
+  'util/util-iterable.vala',
+  'util/util-js.vala',
+  'util/util-numeric.vala',
+  'util/util-object.vala',
+  'util/util-reference-semantics.vala',
+  'util/util-scheduler.vala',
+  'util/util-stream.vala',
+  'util/util-string.vala',
+  'util/util-synchronization.vala',
+  'util/util-time.vala',
+  'util/util-timeout-manager.vala',
+  'util/util-trillian.vala',
+)
+
+geary_engine_sources = [
+  geary_engine_vala_sources,
+  geary_version_vala,
+]
+
+geary_engine_dependencies = [
+  gee,
+  gio,
+  glib,
+  gmime,
+  libunwind,
+  libxml,
+  posix,
+  sqlite,
+  webkit2gtk,
+]
+
+geary_engine_lib = library('geary-engine',
+  geary_engine_sources,
+  dependencies: geary_engine_dependencies,
+  link_with: sqlite3_unicodesn_lib,
+  include_directories: config_h_dir,
+  vala_args: geary_vala_options,
+  c_args: geary_c_options,
+)
+
+geary_engine_dep = declare_dependency(
+  link_with: [
+    geary_engine_lib,
+    sqlite3_unicodesn_lib,
+  ],
+  include_directories: include_directories('.'),
+)
diff --git a/src/mailer/meson.build b/src/mailer/meson.build
new file mode 100644
index 0000000..c6e604f
--- /dev/null
+++ b/src/mailer/meson.build
@@ -0,0 +1,15 @@
+geary_mailer_sources = files(
+  'main.vala',
+)
+
+geary_mailer_dependencies = [
+  gee,
+  gmime,
+  webkit2gtk,
+  geary_engine_dep,
+]
+
+geary_mailer = executable('geary-mailer',
+  geary_mailer_sources,
+  dependencies: geary_mailer_dependencies,
+)
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..1c74e81
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,100 @@
+# Version
+geary_version_vala = configure_file(
+  input: 'geary-version.vala.in',
+  output: 'geary-version.vala',
+  configuration: conf,
+)
+
+# Common vala options
+geary_vala_options = [
+  '--target-glib=@0@'.format(target_glib),
+  '--thread',
+  '--enable-checking',
+  '--enable-deprecated',
+]
+
+if reference_tracking
+  geary_vala_options += [ '--define=REF_TRACKING' ]
+endif
+if not poodle
+  geary_vala_options += [ '--define=DISABLE_POODLE' ]
+endif
+
+geary_c_options = [
+  '-include', 'config.h',
+  # Vala causes a _lot_ of these to be emitted for otherwise valid
+  # code. Suppress them so we can actually see more useful warnings.
+  '-Wno-incompatible-pointer-types',
+  '-Wno-discarded-qualifiers',
+]
+
+subdir('sqlite3-unicodesn')
+subdir('engine')
+subdir('client')
+subdir('console')
+subdir('mailer')
+
+# Web process extension library
+geary_web_process = library('geary-web-process',
+  join_paths('client', 'web-process', 'web-process-extension.vala'),
+  dependencies: [
+    gee,
+    gmime,
+    webkit2gtk_web_extension ,
+    geary_engine_dep,
+  ],
+  install: true,
+  install_dir: join_paths(libdir, meson.project_name(), 'web-extensions'),
+)
+
+# Now finally, make the geary executable
+geary_bin_sources = files(
+  join_paths('client', 'application', 'main.vala'),
+)
+
+if local_gsettings
+  geary_bin_sources += geary_compiled_schema
+endif
+
+geary_bin_dependencies = [
+  libmath,
+  gee,
+  gtk,
+  gdk,
+  webkit2gtk,
+  libsoup,
+  gmime,
+  geary_client_dep,
+  geary_engine_dep,
+]
+
+geary_bin = executable('geary',
+  geary_bin_sources,
+  dependencies: geary_bin_dependencies,
+  vala_args: geary_vala_options,
+  c_args: geary_c_options,
+  install: true,
+)
+
+if enable_valadoc
+  geary_docs = custom_target('valadoc',
+    build_by_default: true,
+    input: geary_engine_sources,
+    output: 'docs',
+    command: [ valadoc,
+      '--verbose',
+      '--force',
+      '--deps',
+      '--package-name=@0@-@1@'.format(meson.project_name(), meson.project_version()),
+      '--package-version=@0@'.format(meson.project_version()),
+      '--target-glib=@0@'.format(target_glib),
+      '-b', meson.current_source_dir(),
+      '-o', '@OUTPUT@',
+      '--vapidir=@0@'.format(vapi_dir),
+      '--vapidir=@0@'.format(meson.current_build_dir()),
+      # Hopefully, Meson gets baked-in valadoc support, so we don't have to do this (see also 
https://github.com/mesonbuild/meson/issues/894)
+      '--pkg', 'glib-2.0', '--pkg', 'gio-2.0', '--pkg', 'gee-0.8', '--pkg', 'sqlite3', '--pkg', 'gmime-2.6', 
'--pkg', 'javascriptcore-4.0', '--pkg', 'libxml-2.0', '--pkg', 'libunwind',
+      '@INPUT@',
+    ]
+  )
+endif
diff --git a/src/sqlite3-unicodesn/meson.build b/src/sqlite3-unicodesn/meson.build
new file mode 100644
index 0000000..4b6cfe5
--- /dev/null
+++ b/src/sqlite3-unicodesn/meson.build
@@ -0,0 +1,48 @@
+sqlite3_unicodesn_sources = [
+ 'fts3_unicode2.c',
+ 'fts3_unicodesn.c',
+ 'static.c',
+
+ join_paths('libstemmer_c', 'runtime', 'api_sq3.c'),
+ join_paths('libstemmer_c', 'runtime', 'utilities_sq3.c'),
+]
+
+sqlite3_unicodesn_c_flags = [
+  '-DSQLITE_ENABLE_FTS4',
+  '-DSQLITE_ENABLE_FTS4_UNICODE61',
+]
+
+sqlite3_unicodesn_stemmers = [
+  'danish',
+  'dutch',
+  'english',
+  'finnish',
+  'french',
+  'german',
+  'hungarian',
+  'italian',
+  'norwegian',
+  'portuguese',
+  'romanian',
+  'russian',
+  'spanish',
+  'swedish',
+  'turkish',
+]
+
+foreach stemmer: sqlite3_unicodesn_stemmers
+  sqlite3_unicodesn_sources += 'libstemmer_c/src_c/stem_UTF_8_@0@.c'.format(stemmer)
+  sqlite3_unicodesn_c_flags += '-DWITH_STEMMER_@0@'.format(stemmer)
+endforeach
+
+sqlite3_unicodesn_includes = [
+  include_directories('libstemmer_c/runtime'),
+  include_directories('libstemmer_c/src_c'),
+]
+
+sqlite3_unicodesn_lib = library('sqlite3-unicodesn',
+  sqlite3_unicodesn_sources,
+  dependencies: sqlite,
+  c_args: sqlite3_unicodesn_c_flags,
+  include_directories: sqlite3_unicodesn_includes,
+)
diff --git a/test/meson.build b/test/meson.build
new file mode 100644
index 0000000..aeb4774
--- /dev/null
+++ b/test/meson.build
@@ -0,0 +1,47 @@
+geary_test_sources = [
+  'main.vala',
+  'testcase.vala', # Based on same file in libgee, courtesy Julien Peeters
+
+  'engine/api/geary-attachment-test.vala',
+  'engine/api/geary-engine-test.vala',
+  'engine/imap/command/imap-create-command-test.vala',
+  'engine/imap/response/imap-namespace-response-test.vala',
+  'engine/imap/transport/imap-deserializer-test.vala',
+  'engine/mime-content-type-test.vala',
+  'engine/rfc822-mailbox-address-test.vala',
+  'engine/rfc822-message-test.vala',
+  'engine/rfc822-message-data-test.vala',
+  'engine/rfc822-utils-test.vala',
+  'engine/util-html-test.vala',
+  'engine/util-idle-manager-test.vala',
+  'engine/util-inet-test.vala',
+  'engine/util-js-test.vala',
+  'engine/util-timeout-manager-test.vala',
+
+  'client/application/geary-configuration-test.vala',
+  'client/components/client-web-view-test.vala',
+  'client/components/client-web-view-test-case.vala',
+  'client/composer/composer-web-view-test.vala',
+
+  'js/client-page-state-test.vala',
+  'js/composer-page-state-test.vala',
+  'js/conversation-page-state-test.vala',
+]
+
+geary_test_dependencies = [
+  gee,
+  gtk,
+  libsoup,
+  gmime,
+  webkit2gtk,
+  geary_engine_dep,
+  geary_client_dep,
+]
+
+geary_test_bin = executable('geary-test',
+  geary_test_sources,
+  dependencies: geary_test_dependencies,
+  c_args: geary_c_options,
+  include_directories: config_h_dir,
+)
+test('Geary test suite', geary_test_bin)
diff --git a/ui/meson.build b/ui/meson.build
new file mode 100644
index 0000000..37e0db5
--- /dev/null
+++ b/ui/meson.build
@@ -0,0 +1,3 @@
+geary_resources = gnome.compile_resources('org.gnome.Geary',
+  files('org.gnome.Geary.gresource.xml'),
+)
diff --git a/ui/org.gnome.Geary.gresource.xml b/ui/org.gnome.Geary.gresource.xml
new file mode 100644
index 0000000..d545a9a
--- /dev/null
+++ b/ui/org.gnome.Geary.gresource.xml
@@ -0,0 +1,41 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<gresources>
+  <gresource prefix="/org/gnome/Geary">
+    <file compressed="true" preprocess="xml-stripblanks">account_cannot_remove.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">account_list.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">account_spinner.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">certificate_warning_dialog.glade</file>
+    <file compressed="true">client-web-view.js</file>
+    <file compressed="true">client-web-view-allow-remote-images.js</file>
+    <file compressed="true" preprocess="xml-stripblanks">composer-headerbar.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">composer-link-popover.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">composer-menus.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">composer-widget.ui</file>
+    <file compressed="true">composer-web-view.css</file>
+    <file compressed="true">composer-web-view.js</file>
+    <file compressed="true" preprocess="xml-stripblanks">conversation-email.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">conversation-email-attachment-view.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">conversation-email-menus.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">conversation-message.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">conversation-message-menus.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">conversation-viewer.ui</file>
+    <file compressed="true">conversation-web-view.css</file>
+    <file compressed="true">conversation-web-view.js</file>
+    <file compressed="true" preprocess="xml-stripblanks">edit_alternate_emails.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">empty-placeholder.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">find_bar.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">folder-popover.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">gtk/menus.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">login.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">main-toolbar.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">main-toolbar-menus.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">main-window.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">main-window-info-bar.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">password-dialog.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">preferences-dialog.ui</file>
+    <file compressed="true" preprocess="xml-stripblanks">remove_confirm.glade</file>
+    <file compressed="true" preprocess="xml-stripblanks">upgrade_dialog.glade</file>
+    <file compressed="true">geary.css</file>
+  </gresource>
+</gresources>



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