[epiphany] Port to meson build system



commit 24c68890024ca6653e6f2da0e8929c61e0ebfa0a
Author: Michael Catanzaro <mcatanzaro igalia com>
Date:   Wed Apr 26 16:42:13 2017 -0500

    Port to meson build system

 .gitignore                                         |    1 +
 .gitmodules                                        |    4 +-
 Makefile.am                                        |   26 --
 autogen.sh                                         |   39 ---
 configure.ac                                       |  252 --------------
 data/Makefile.am                                   |   58 ----
 data/icons/Makefile.am                             |   55 ---
 .../16x16/apps/org.gnome.Epiphany.png}             |  Bin 1116 -> 1116 bytes
 .../24x24/apps/org.gnome.Epiphany.png}             |  Bin 1721 -> 1721 bytes
 .../32x32/apps/org.gnome.Epiphany.png}             |  Bin 2757 -> 2757 bytes
 .../48x48/apps/org.gnome.Epiphany.png}             |  Bin 4395 -> 4395 bytes
 .../512x512/apps/org.gnome.Epiphany.png}           |  Bin 137578 -> 137578 bytes
 .../symbolic/apps/org.gnome.Epiphany-symbolic.svg} |    2 +-
 data/meson.build                                   |   66 ++++
 embed/Makefile.am                                  |  133 --------
 embed/ephy-embed-shell.c                           |    8 +-
 embed/ephy-embed-type-builtins.c.in                |   42 +++
 embed/ephy-embed-type-builtins.h.in                |   22 ++
 embed/ephy-web-view.c                              |    2 +-
 embed/meson.build                                  |   71 ++++
 embed/web-extension/Makefile.am                    |   46 ---
 embed/web-extension/ephy-uri-tester.c              |   20 +-
 embed/web-extension/ephy-web-extension.c           |    2 +-
 embed/web-extension/meson.build                    |   26 ++
 git.mk                                             |  350 --------------------
 gvdb/Makefile.am                                   |   18 -
 help/Makefile.am                                   |   39 ---
 help/meson.build                                   |   52 +++
 lib/Makefile.am                                    |  161 ---------
 lib/egg/Makefile.am                                |   13 -
 lib/ephy-lib-type-builtins.c.in                    |   42 +++
 lib/ephy-lib-type-builtins.h.in                    |   22 ++
 lib/ephy-profile-utils.c                           |    4 +-
 lib/history/Makefile.am                            |   87 -----
 lib/history/ephy-history-service.c                 |    2 +-
 lib/meson.build                                    |   86 +++++
 lib/widgets/Makefile.am                            |  120 -------
 lib/widgets/ephy-widgets-type-builtins.c.in        |   42 +++
 lib/widgets/ephy-widgets-type-builtins.h.in        |   22 ++
 lib/widgets/meson.build                            |   58 ++++
 libgd                                              |    1 -
 make_release.sh                                    |   31 ++
 meson.build                                        |  104 ++++++
 meson_options.txt                                  |   23 ++
 po/meson.build                                     |    1 +
 post_install.py                                    |   19 +
 src/Makefile.am                                    |  284 ----------------
 src/bookmarks/ephy-bookmark-properties-grid.c      |    6 +-
 src/bookmarks/ephy-bookmark.c                      |    6 +-
 src/bookmarks/ephy-bookmark.h                      |    2 +-
 src/ephy-main.c                                    |    4 +-
 src/ephy-shell.c                                   |   12 +-
 src/ephy-shell.h                                   |    4 +-
 src/ephy-type-builtins.c.in                        |   42 +++
 src/ephy-type-builtins.h.in                        |   22 ++
 src/meson.build                                    |  140 ++++++++
 src/prefs-dialog.c                                 |   18 +-
 src/profile-migrator/Makefile.am                   |   46 ---
 src/search-provider/Makefile.am                    |   74 ----
 src/sync/ephy-sync-service.c                       |    2 +-
 subprojects/gvdb/README.epiphany                   |    3 +
 {gvdb => subprojects}/gvdb/gvdb-builder.c          |    2 +-
 {gvdb => subprojects}/gvdb/gvdb-builder.h          |    0
 {gvdb => subprojects}/gvdb/gvdb-format.h           |    0
 {gvdb => subprojects}/gvdb/gvdb-reader.c           |    0
 {gvdb => subprojects}/gvdb/gvdb-reader.h           |    0
 subprojects/gvdb/meson.build                       |   22 ++
 subprojects/libgd                                  |    1 +
 tests/Makefile.am                                  |  200 -----------
 tests/data/Makefile.am                             |    3 -
 tests/ephy-file-helpers-test.c                     |    2 +-
 tests/meson.build                                  |  123 +++++++
 72 files changed, 1134 insertions(+), 2056 deletions(-)
---
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..567609b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+build/
diff --git a/.gitmodules b/.gitmodules
index 303eb9b..c651969 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
-[submodule "libgd"]
-       path = libgd
+[submodule "subprojects/libgd"]
+       path = subprojects/libgd
        url = ../libgd
diff --git a/data/icons/hicolor_apps_symbolic_org.gnome.Epiphany-symbolic.svg 
b/data/icons/hicolor/symbolic/apps/org.gnome.Epiphany-symbolic.svg
similarity index 99%
rename from data/icons/hicolor_apps_symbolic_org.gnome.Epiphany-symbolic.svg
rename to data/icons/hicolor/symbolic/apps/org.gnome.Epiphany-symbolic.svg
index ddc8e07..ef4e33d 100644
--- a/data/icons/hicolor_apps_symbolic_org.gnome.Epiphany-symbolic.svg
+++ b/data/icons/hicolor/symbolic/apps/org.gnome.Epiphany-symbolic.svg
@@ -19,7 +19,7 @@
   <g style='display:inline' inkscape:groupmode='layer' id='layer9' inkscape:label='status' 
transform='translate(-183,-529)'/>
   <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-183,-529)'/>
   <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-183,-529)'>
-    
+
     <path 
style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:block;overflow:visible;enable-background:accumulate'
 sodipodi:nodetypes='cccccccc' id='path6242' inkscape:connector-curvature='0' d='m 191.0002,533.84553 
0,10.38049 -2.34399,-2.28818 -1.33941,2.73465 c -0.32808,0.73962 -2.03368,0.14492 -1.5487,-0.84412 l 
1.32547,-2.83928 -2.95789,0 6.86452,-7.14356 z'/>
     <path 
style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'
 sodipodi:nodetypes='csccssccsssc' id='path23405' inkscape:connector-curvature='0' d='m 190.15645,530.0625 c 
-3.82659,0.46006 -6.57883,3.95775 -6.09375,7.78125 0.13127,1.03473 0.29377,1.38184 0.29377,1.38184 l 
1.67498,-1.63184 c -0.33104,-2.75343 1.62156,-5.23146 4.375,-5.5625 2.75344,-0.33104 5.23146,1.62156 
5.5625,4.375 0.31355,2.60795 -1.39127,5.02493 -3.96875,5.53125 l 0.0312,2 c 0,0 0.52086,-0.1059 
0.62354,-0.13097 3.41561,-0.83
 385 5.70627,-4.1273 5.28271,-7.65028 -0.46006,-3.8266 -3.95466,-6.55381 -7.78125,-6.09375 z'/>
     <path 
style='opacity:0.3;color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate'
 id='path11289' inkscape:connector-curvature='0' d='m 187.11293,536.81497 0,-0.20574 -0.19826,0.0186 c 
0.0165,-0.13095 0.0329,-0.26167 0.0496,-0.3926 l -0.11578,0 -0.11556,0.14959 -0.11578,0.0559 -0.1653,-0.0932 
-0.0165,-0.20575 0.0331,-0.22438 0.24798,-0.18688 0.19826,0 0.0329,-0.11229 0.24786,0.0559 0.18183,0.2246 
0.0331,-0.37419 0.31401,-0.26167 0.11567,-0.28055 0.23133,-0.0934 0.1322,-0.18688 0.29738,-0.0564 
0.14885,-0.22415 c -0.14874,0 -0.29749,0 -0.44623,0 l 0.28094,-0.13095 0.19814,0 0.28106,-0.0937 
0.0331,-0.11186 -0.0992,-0.0937 -0.11567,-0.0375 0.0331,-0.11208 -0.0826,-0.16822 -0.19837,0.0746 
0.0331,-0.14947 -0.23134,-0.13096 -0.18171,0.3177 0.0165,0.11229 -0.18171,0.075 -0.11578,0.24302 
-0.0495,-0.22438 -0.31402,-0.13095 -0.0496,-0.16822 0.41315,-0.24325 0.18
 182,-0.16822 0.0165,-0.20563 -0.0991,-0.0562 -0.13219,-0.0188 -0.0826,0.20575 c 0,0 -0.1382,0.0271 
-0.17373,0.0358 -0.45378,0.41804 -1.37066,1.32044 -1.58368,3.02405 0.008,0.0395 0.15441,0.26854 
0.15441,0.26854 l 0.347,0.20552 0.347,0.0937 m 3.96609,-4.30034 -0.4298,-0.16833 -0.49552,0.0561 
-0.61161,0.16822 -0.11567,0.11229 0.38008,0.26167 0,0.14959 -0.14875,0.14959 0.19846,0.39294 0.13188,-0.075 
0.16561,-0.26168 c 0.2553,-0.0789 0.4842,-0.16833 0.72686,-0.28053 l 0.19846,-0.5048 m 2.52925,0.34192 
-0.375,0.0937 -0.21875,0.15625 0,0.125 -0.375,0.25 0.0937,0.34375 0.21875,-0.15625 0.125,0.15625 
0.15625,0.0937 0.0937,-0.28125 -0.0625,-0.15625 0.0625,-0.0937 0.21875,-0.1875 0.0937,0 -0.0937,0.21875 
0,0.1875 c 0.0892,-0.0242 0.1588,-0.051 0.25,-0.0625 l -0.25,0.1875 0,0.125 -0.3125,0.21875 -0.28125,-0.0625 
0,-0.15625 -0.125,0.0625 0.0625,0.15625 -0.21875,0 -0.125,0.21875 -0.15625,0.15625 -0.0937,0.0312 0,0.1875 
0.0312,0.15625 -0.0312,0 0,0.53125 0.0625,-0.0312 0.0937,-0.21875 0.1
 875,-0.125 0.0312,-0.0937 0.28125,-0.0625 0.15625,0.1875 0.1875,0.0937 -0.0937,0.1875 0.15625,-0.0312 
0.0625,-0.21875 -0.1875,-0.21875 0.0625,0 0.21875,0.15625 0.0312,0.21875 0.15625,0.21875 0.0625,-0.3125 
0.0937,-0.0312 c 0.0959,0.0996 0.1692,0.23163 0.25,0.34375 l 0.28125,0 0.1875,0.125 -0.0937,0.0937 
-0.15625,0.15625 -0.25,0 -0.34375,-0.0937 -0.1875,0 -0.125,0.15625 -0.34375,-0.375 -0.25,-0.0625 
-0.375,0.0625 -0.15625,0.0937 0,2.40625 0.0312,0.0312 0.25,-0.15625 0.0937,0.0937 0.28125,0 0.125,0.15625 
-0.0937,0.3125 0.1875,0.1875 0,0.375 0.125,0.25 -0.0937,0.25 c -0.009,0.16159 0,0.30714 0,0.46875 
0.0795,0.21894 0.14355,0.43575 0.21875,0.65625 l 0.0625,0.34375 0,0.1875 0.125,0 0.21875,-0.125 0.25,0 
0.375,-0.4375 -0.0312,-0.15625 0.25,-0.21875 -0.1875,-0.1875 0.21875,-0.1875 0.21875,-0.125 0.0937,-0.125 
-0.0625,-0.25 0,-0.59375 0.1875,-0.375 0.1875,-0.25 0.25,-0.5625 0,-0.15625 c -0.11654,0.0146 -0.22972,0.0231 
-0.34375,0.0312 -0.0722,0.005 -0.14446,0 -0.21875,0 -0.12359,-0.
 25961 -0.2183,-0.50966 -0.3125,-0.78125 l -0.15625,-0.1875 -0.0937,-0.3125 0.0625,-0.0625 0.21875,0.25 
0.25,0.5625 0.15625,0.15625 -0.0625,0.21875 0.15625,0.15625 0.25,-0.25 0.3125,-0.21875 0.15625,-0.1875 
0,-0.21875 c -0.0389,-0.0732 -0.0547,-0.14545 -0.0937,-0.21875 l -0.15625,0.1875 -0.125,-0.15625 
-0.1875,-0.125 0,-0.28125 0.21875,0.21875 0.21875,-0.0312 c 0.10166,0.0923 0.19205,0.20751 0.28125,0.3125 l 
0.15625,-0.1875 c 0,-0.17463 -0.19976,-1.02044 -0.625,-1.75 -0.42526,-0.72932 -1.15625,-1.40625 
-1.15625,-1.40625 l -0.0625,0.0937 -0.21875,0.21875 -0.25,-0.25 0.25,0 0.125,-0.125 -0.46875,-0.0937 
-0.25,-0.0937 z'/>
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..855529a
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,66 @@
+install_subdir('icons/hicolor',
+  install_dir: join_paths(datadir, 'icons')
+)
+
+i18n.merge_file('desktop-file',
+  input: 'org.gnome.Epiphany.desktop.in',
+  output: 'org.gnome.Epiphany.desktop',
+  install: true,
+  install_dir: join_paths(datadir, 'applications'),
+  po_dir: '../po',
+  type: 'desktop'
+)
+
+i18n.merge_file('appdata-file',
+  input: 'org.gnome.Epiphany.appdata.xml.in',
+  output: 'org.gnome.Epiphany.appdata.xml',
+  install: true,
+  install_dir: join_paths(datadir, 'appdata'),
+  po_dir: '../po'
+)
+
+# https://github.com/mesonbuild/meson/issues/1687
+custom_target('gsettings-enums',
+  input: '../lib/ephy-prefs.h',
+  output: 'org.gnome.Epiphany.enums.xml',
+  install: true,
+  install_dir: join_paths(datadir, 'glib-2.0', 'schemas'),
+  capture: true,
+  command: ['glib-mkenums',
+    '--comments', '<!-- @comment@ -->',
+    '--fhead', '<schemalist>',
+    '--vhead', '  <@type@ id="org.gnome.Epiphany.@EnumName@">',
+    '--vprod', '    <value nick="@valuenick@" value="@valuenum@"/>',
+    '--vtail', '  </@type@>',
+    '--ftail', '</schemalist>',
+    '@INPUT@'
+  ]
+)
+install_data('org.gnome.epiphany.gschema.xml',
+  install_dir: join_paths(datadir, 'glib-2.0', 'schemas')
+)
+
+serviceconf = configuration_data()
+serviceconf.set('libexecdir', libexecdir)
+configure_file(
+  input: 'org.gnome.EpiphanySearchProvider.service.in',
+  output: 'org.gnome.EpiphanySearchProvider.service',
+  configuration: serviceconf,
+  install: true,
+  install_dir: join_paths(datadir, 'dbus-1', 'services')
+)
+install_data('epiphany-search-provider.ini',
+  install_dir: join_paths(datadir, 'gnome-shell', 'search-providers')
+)
+
+bookmarksconf = configuration_data()
+bookmarksconf.set('pkgdatadir', pkgdatadir)
+configure_file(
+  input: 'default-bookmarks.rdf.in',
+  output: 'default-bookmarks.rdf',
+  configuration: bookmarksconf,
+  install: true,
+  install_dir: pkgdatadir
+)
+
+install_man('epiphany.1')
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c
index eb5f0a9..bb5572d 100644
--- a/embed/ephy-embed-shell.c
+++ b/embed/ephy-embed-shell.c
@@ -43,7 +43,7 @@
 #include <gtk/gtk.h>
 #include <stdlib.h>
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
 #include <httpseverywhere.h>
 #endif
 
@@ -821,7 +821,7 @@ ephy_embed_shell_create_web_context (EphyEmbedShell *shell)
   g_object_unref (manager);
 }
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
 static void
 https_everywhere_update_cb (HTTPSEverywhereUpdater *updater,
                             GAsyncResult           *result)
@@ -868,7 +868,7 @@ ephy_embed_shell_startup (GApplication *application)
   char *filename;
   char *cookie_policy;
   char *filters_dir;
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
   HTTPSEverywhereContext *context;
   HTTPSEverywhereUpdater *updater;
 #endif
@@ -973,7 +973,7 @@ ephy_embed_shell_startup (GApplication *application)
   ephy_embed_prefs_set_cookie_accept_policy (cookie_manager, cookie_policy);
   g_free (cookie_policy);
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
     /* We might want to be smarter about this in the future. For now,
      * trigger an update of the rulesets once each time Epiphany is started.
      * Note that the updated rules will not be used until the next time Epiphany
diff --git a/embed/ephy-embed-type-builtins.c.in b/embed/ephy-embed-type-builtins.c.in
new file mode 100644
index 0000000..ed7feca
--- /dev/null
+++ b/embed/ephy-embed-type-builtins.c.in
@@ -0,0 +1,42 @@
+/*** BEGIN file-header ***/
+
+#include <config.h>
+#include "ephy-embed-type-builtins.h"
+
+/*** END file-header ***/
+/*** BEGIN file-production ***/
+
+/* enumerations from "@basename@" */
+#include "@basename@"
+
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type(void) {
+    static volatile gsize g_define_type_id__volatile = 0;
+
+    if(g_once_init_enter(&g_define_type_id__volatile)) {
+        static const G@Type@Value values [] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+            { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+            { 0, NULL, NULL }
+        };
+
+        GType g_define_type_id =
+            g_@type@_register_static(g_intern_static_string("@EnumName@"), values);
+        g_once_init_leave(&g_define_type_id__volatile, g_define_type_id);
+    }
+
+    return g_define_type_id__volatile;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+/*** END file-tail ***/
diff --git a/embed/ephy-embed-type-builtins.h.in b/embed/ephy-embed-type-builtins.h.in
new file mode 100644
index 0000000..f367945
--- /dev/null
+++ b/embed/ephy-embed-type-builtins.h.in
@@ -0,0 +1,22 @@
+/*** BEGIN file-header ***/
+#pragma once
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@basename@" */
+/*** END file-production ***/
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+
+G_END_DECLS
+
+/*** END file-tail ***/
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 8c490f6..4915238 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -1994,7 +1994,7 @@ format_crash_error_page (const char  *uri,
                                      formatted_uri);
 
   formatted_distributor = g_strdup_printf ("<strong>%s</strong>",
-                                           LSB_DISTRIBUTOR);
+                                           DISTRIBUTOR_NAME);
   /* Further error details when a site cannot be loaded due to a page crash error. */
   second_paragraph = g_strdup_printf (_("If this happens again, please report "
                                         "the problem to the %s developers."),
diff --git a/embed/meson.build b/embed/meson.build
new file mode 100644
index 0000000..b391dd9
--- /dev/null
+++ b/embed/meson.build
@@ -0,0 +1,71 @@
+subdir('web-extension')
+
+types_headers = [
+  'ephy-download.h',
+  'ephy-embed-shell.h',
+  'ephy-web-view.h'
+]
+
+enums = gnome.mkenums('ephy-embed',
+  sources: types_headers,
+  h_template: 'ephy-embed-type-builtins.h.in',
+  c_template: 'ephy-embed-type-builtins.c.in'
+)
+
+libephyembed_sources = [
+  'ephy-about-handler.c',
+  'ephy-downloads-manager.c',
+  'ephy-download.c',
+  'ephy-embed.c',
+  'ephy-embed-container.c',
+  'ephy-embed-event.c',
+  'ephy-embed-prefs.c',
+  'ephy-embed-shell.c',
+  'ephy-embed-utils.c',
+  'ephy-encoding.c',
+  'ephy-encodings.c',
+  'ephy-file-monitor.c',
+  'ephy-find-toolbar.c',
+  'ephy-notification-container.c',
+  'ephy-web-view.c',
+  'ephy-web-extension-proxy.c',
+  enums
+]
+
+libephyembed_deps = [
+  gio_dep,
+  glib_dep,
+  gtk_dep,
+  icu_uc_dep,
+  libgd_dep,
+  libsecret_dep,
+  libsoup_dep,
+  m_dep,
+  webkit2gtk_dep
+]
+
+if get_option('enable_https_everywhere')
+  libephyembed_deps += httpseverywhere_dep
+endif
+
+libephyembed_includes = include_directories(
+  '.',
+  '..',
+  '../lib',
+  '../lib/egg',
+  '../lib/history',
+  '../lib/widgets',
+  '../subprojects/libgd'
+)
+
+libephyembed = static_library('ephyembed',
+  libephyembed_sources,
+  dependencies: libephyembed_deps,
+  include_directories: libephyembed_includes,
+)
+
+ephyembed_dep = declare_dependency(
+  link_with: libephyembed,
+  include_directories: libephyembed_includes,
+  dependencies: libephyembed_deps
+)
diff --git a/embed/web-extension/ephy-uri-tester.c b/embed/web-extension/ephy-uri-tester.c
index 5415d51..4f23792 100644
--- a/embed/web-extension/ephy-uri-tester.c
+++ b/embed/web-extension/ephy-uri-tester.c
@@ -37,7 +37,7 @@
 #include <libsoup/soup.h>
 #include <string.h>
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
 #include <httpseverywhere.h>
 #endif
 
@@ -69,7 +69,7 @@ struct _EphyUriTester {
   GMainLoop *load_loop;
   int adblock_filters_to_load;
   gboolean adblock_loaded;
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
   gboolean https_everywhere_loaded;
 
   HTTPSEverywhereContext *https_everywhere_context;
@@ -538,7 +538,7 @@ ephy_uri_tester_adblock_loaded (EphyUriTester *tester)
 {
   if (g_atomic_int_dec_and_test (&tester->adblock_filters_to_load)) {
     tester->adblock_loaded = TRUE;
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
     if (tester->https_everywhere_loaded)
       g_main_loop_quit (tester->load_loop);
 #else
@@ -547,7 +547,7 @@ ephy_uri_tester_adblock_loaded (EphyUriTester *tester)
   }
 }
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
 static void
 ephy_uri_tester_https_everywhere_loaded (EphyUriTester *tester)
 {
@@ -634,7 +634,7 @@ ephy_uri_tester_rewrite_uri (EphyUriTester    *tester,
     return NULL;
   }
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
   if ((flags & EPHY_URI_TEST_HTTPS_EVERYWHERE) && tester->https_everywhere_context != NULL)
     return https_everywhere_context_rewrite (tester->https_everywhere_context, request_uri);
 #endif
@@ -642,7 +642,7 @@ ephy_uri_tester_rewrite_uri (EphyUriTester    *tester,
   return g_strdup (request_uri);
 }
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
 static void
 https_everywhere_context_init_cb (HTTPSEverywhereContext *context,
                                   GAsyncResult           *res,
@@ -723,7 +723,7 @@ ephy_uri_tester_load_sync (GTask         *task,
   g_main_context_push_thread_default (context);
   tester->load_loop = g_main_loop_new (context, FALSE);
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
   if (!tester->https_everywhere_loaded) {
     g_assert (tester->https_everywhere_context == NULL);
     tester->https_everywhere_context = https_everywhere_context_new ();
@@ -819,13 +819,13 @@ ephy_uri_tester_set_property (GObject      *object,
 static void
 ephy_uri_tester_dispose (GObject *object)
 {
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
   EphyUriTester *tester = EPHY_URI_TESTER (object);
 #endif
 
   LOG ("EphyUriTester disposing %p", object);
 
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
   g_clear_object (&tester->https_everywhere_context);
 #endif
 
@@ -932,7 +932,7 @@ ephy_uri_tester_load (EphyUriTester *tester)
     tester->adblock_loaded = TRUE;
 
   if (tester->adblock_loaded
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
       && tester->https_everywhere_loaded
 #endif
      )
diff --git a/embed/web-extension/ephy-web-extension.c b/embed/web-extension/ephy-web-extension.c
index 9133081..edde1f3 100644
--- a/embed/web-extension/ephy-web-extension.c
+++ b/embed/web-extension/ephy-web-extension.c
@@ -109,7 +109,7 @@ static gboolean
 should_use_https_everywhere (const char *request_uri,
                              const char *redirected_uri)
 {
-#ifdef HAVE_LIBHTTPSEVERYWHERE
+#if ENABLE_HTTPS_EVERYWHERE
   SoupURI *request_soup_uri;
   SoupURI *redirected_soup_uri;
   gboolean result = TRUE;
diff --git a/embed/web-extension/meson.build b/embed/web-extension/meson.build
new file mode 100644
index 0000000..de6be46
--- /dev/null
+++ b/embed/web-extension/meson.build
@@ -0,0 +1,26 @@
+web_extension_sources = [
+  'ephy-embed-form-auth.c',
+  'ephy-uri-tester.c',
+  'ephy-web-dom-utils.c',
+  'ephy-web-extension.c',
+  'ephy-web-extension-main.c',
+  'ephy-web-overview.c',
+  'ephy-web-overview-model.c'
+]
+
+web_extension_deps = [
+  ephymisc_dep,
+  webkit2gtk_web_extension_dep
+]
+
+if get_option('enable_https_everywhere')
+  web_extension_deps += httpseverywhere_dep
+endif
+
+shared_module('ephywebextension',
+  web_extension_sources,
+  dependencies: web_extension_deps,
+  install: true,
+  install_dir: webextensionsdir,
+  install_rpath: pkglibdir
+)
diff --git a/help/meson.build b/help/meson.build
new file mode 100644
index 0000000..f3b7800
--- /dev/null
+++ b/help/meson.build
@@ -0,0 +1,52 @@
+help_files = [
+  'index.page',
+  'introduction.page',
+  'legal.xml',
+  'browse-local.page',
+  'browse-private.page',
+  'browse-tab.page',
+  'browse-web.page',
+  'browse-webapps.page',
+  'browse-webapps-del.page',
+  'cert.page',
+  'cookies.xml',
+  'data-cookies.page',
+  'data-passwords.page',
+  'history.page',
+  'history-delete.page',
+  'keyboard-shortcut.page',
+  'pref.page',
+  'pref-cookies.page',
+  'pref-css.page',
+  'pref-downloads.page',
+  'pref-do-not-track.page',
+  'pref-font.page',
+  'pref-passwords.page',
+  'prob-restore-closed-page.page',
+  'proxy.page'
+]
+
+help_media = [
+  'media/epiphany-3-12.png',
+  'media/private-browsing-3-12.png',
+  'media/web-browser.png'
+]
+
+help_linguas = [
+  'cs',
+  'de',
+  'el',
+  'es',
+  'fr',
+  'hu',
+  'ko',
+  'pt_BR',
+  'ru',
+  'sv'
+]
+
+gnome.yelp(meson.project_name(),
+  sources: help_files,
+  media: help_media,
+  languages: help_linguas,
+)
diff --git a/lib/ephy-lib-type-builtins.c.in b/lib/ephy-lib-type-builtins.c.in
new file mode 100644
index 0000000..83532e8
--- /dev/null
+++ b/lib/ephy-lib-type-builtins.c.in
@@ -0,0 +1,42 @@
+/*** BEGIN file-header ***/
+
+#include <config.h>
+#include "ephy-lib-type-builtins.h"
+
+/*** END file-header ***/
+/*** BEGIN file-production ***/
+
+/* enumerations from "@basename@" */
+#include "@basename@"
+
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type(void) {
+    static volatile gsize g_define_type_id__volatile = 0;
+
+    if(g_once_init_enter(&g_define_type_id__volatile)) {
+        static const G@Type@Value values [] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+            { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+            { 0, NULL, NULL }
+        };
+
+        GType g_define_type_id =
+            g_@type@_register_static(g_intern_static_string("@EnumName@"), values);
+        g_once_init_leave(&g_define_type_id__volatile, g_define_type_id);
+    }
+
+    return g_define_type_id__volatile;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+/*** END file-tail ***/
diff --git a/lib/ephy-lib-type-builtins.h.in b/lib/ephy-lib-type-builtins.h.in
new file mode 100644
index 0000000..f367945
--- /dev/null
+++ b/lib/ephy-lib-type-builtins.h.in
@@ -0,0 +1,22 @@
+/*** BEGIN file-header ***/
+#pragma once
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@basename@" */
+/*** END file-production ***/
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+
+G_END_DECLS
+
+/*** END file-tail ***/
diff --git a/lib/ephy-profile-utils.c b/lib/ephy-profile-utils.c
index b6c5020..9bfd848 100644
--- a/lib/ephy-profile-utils.c
+++ b/lib/ephy-profile-utils.c
@@ -136,7 +136,7 @@ ephy_profile_utils_do_migration (const char *profile_directory, int test_to_run,
   argv[i++] = NULL;
 
   if (debug)
-    argv[0] = ABS_TOP_BUILD_DIR "/lib/"EPHY_PROFILE_MIGRATOR;
+    argv[0] = BUILD_ROOT "/src/" EPHY_PROFILE_MIGRATOR;
 
   ret = g_spawn_sync (NULL, (char **)argv, envp, G_SPAWN_SEARCH_PATH,
                       NULL, NULL, NULL, NULL,
@@ -146,7 +146,7 @@ ephy_profile_utils_do_migration (const char *profile_directory, int test_to_run,
   g_strfreev (envp);
 
   if (error) {
-    LOG ("Failed to run migrator: %s", error->message);
+    g_warning ("Failed to run migrator: %s", error->message);
     g_error_free (error);
   }
 
diff --git a/lib/history/ephy-history-service.c b/lib/history/ephy-history-service.c
index ca003fe..57eff46 100644
--- a/lib/history/ephy-history-service.c
+++ b/lib/history/ephy-history-service.c
@@ -23,7 +23,7 @@
 
 #include "ephy-history-service-private.h"
 #include "ephy-history-types.h"
-#include "ephy-history-type-builtins.h"
+#include "ephy-lib-type-builtins.h"
 #include "ephy-sqlite-connection.h"
 
 #include <errno.h>
diff --git a/lib/meson.build b/lib/meson.build
new file mode 100644
index 0000000..3fdf0a5
--- /dev/null
+++ b/lib/meson.build
@@ -0,0 +1,86 @@
+types_headers = [
+  'ephy-security-levels.h',
+  'ephy-sqlite-connection.h',
+  'history/ephy-history-types.h'
+]
+
+enums = gnome.mkenums('ephy-lib',
+  sources: types_headers,
+  h_template: 'ephy-lib-type-builtins.h.in',
+  c_template: 'ephy-lib-type-builtins.c.in'
+)
+
+libephymisc_sources = [
+  'egg/eggtreemultidnd.c',
+  'ephy-dbus-util.c',
+  'ephy-debug.c',
+  'ephy-dnd.c',
+  'ephy-favicon-helpers.c',
+  'ephy-file-helpers.c',
+  'ephy-filters-manager.c',
+  'ephy-form-auth-data.c',
+  'ephy-gui.c',
+  'ephy-langs.c',
+  'ephy-permissions-manager.c',
+  'ephy-profile-utils.c',
+  'ephy-search-engine-manager.c',
+  'ephy-security-levels.c',
+  'ephy-settings.c',
+  'ephy-signal-accumulator.c',
+  'ephy-smaps.c',
+  'ephy-snapshot-service.c',
+  'ephy-sqlite-connection.c',
+  'ephy-sqlite-statement.c',
+  'ephy-string.c',
+  'ephy-time-helpers.c',
+  'ephy-uri-helpers.c',
+  'ephy-uri-tester-shared.c',
+  'ephy-web-app-utils.c',
+  'ephy-zoom.c',
+  'history/ephy-history-service.c',
+  'history/ephy-history-service-hosts-table.c',
+  'history/ephy-history-service-urls-table.c',
+  'history/ephy-history-service-visits-table.c',
+  'history/ephy-history-types.c',
+  enums
+]
+
+libephymisc_deps = [
+  cairo_dep,
+  gdk_pixbuf_dep,
+  gio_dep,
+  gio_unix_dep,
+  glib_dep,
+  gnome_desktop_dep,
+  gtk_dep,
+  icu_uc_dep,
+  libsecret_dep,
+  libsoup_dep,
+  libxml_dep,
+  m_dep,
+  sqlite3_dep,
+  webkit2gtk_dep
+]
+
+libephymisc_includes = include_directories(
+  '.',
+  '..',
+  'egg',
+  'history'
+)
+
+libephymisc = shared_library('ephymisc',
+  libephymisc_sources,
+  dependencies: libephymisc_deps,
+  include_directories: libephymisc_includes,
+  install: true,
+  install_dir: pkglibdir
+)
+
+ephymisc_dep = declare_dependency(
+  link_with: libephymisc,
+  include_directories: libephymisc_includes,
+  dependencies: libephymisc_deps
+)
+
+subdir('widgets')
diff --git a/lib/widgets/ephy-widgets-type-builtins.c.in b/lib/widgets/ephy-widgets-type-builtins.c.in
new file mode 100644
index 0000000..5d06fd8
--- /dev/null
+++ b/lib/widgets/ephy-widgets-type-builtins.c.in
@@ -0,0 +1,42 @@
+/*** BEGIN file-header ***/
+
+#include <config.h>
+#include "ephy-widgets-type-builtins.h"
+
+/*** END file-header ***/
+/*** BEGIN file-production ***/
+
+/* enumerations from "@basename@" */
+#include "@basename@"
+
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type(void) {
+    static volatile gsize g_define_type_id__volatile = 0;
+
+    if(g_once_init_enter(&g_define_type_id__volatile)) {
+        static const G@Type@Value values [] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+            { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+            { 0, NULL, NULL }
+        };
+
+        GType g_define_type_id =
+            g_@type@_register_static(g_intern_static_string("@EnumName@"), values);
+        g_once_init_leave(&g_define_type_id__volatile, g_define_type_id);
+    }
+
+    return g_define_type_id__volatile;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+/*** END file-tail ***/
diff --git a/lib/widgets/ephy-widgets-type-builtins.h.in b/lib/widgets/ephy-widgets-type-builtins.h.in
new file mode 100644
index 0000000..f367945
--- /dev/null
+++ b/lib/widgets/ephy-widgets-type-builtins.h.in
@@ -0,0 +1,22 @@
+/*** BEGIN file-header ***/
+#pragma once
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@basename@" */
+/*** END file-production ***/
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+
+G_END_DECLS
+
+/*** END file-tail ***/
diff --git a/lib/widgets/meson.build b/lib/widgets/meson.build
new file mode 100644
index 0000000..2de9d3d
--- /dev/null
+++ b/lib/widgets/meson.build
@@ -0,0 +1,58 @@
+types_headers = [
+  'ephy-location-entry.h'
+]
+
+enums = gnome.mkenums('ephy-widgets',
+  sources: types_headers,
+  h_template: 'ephy-widgets-type-builtins.h.in',
+  c_template: 'ephy-widgets-type-builtins.c.in'
+)
+
+libephywidgets_sources = [
+  'ephy-certificate-dialog.c',
+  'ephy-downloads-popover.c',
+  'ephy-downloads-progress-icon.c',
+  'ephy-download-widget.c',
+  'ephy-file-chooser.c',
+  'ephy-location-entry.c',
+  'ephy-middle-clickable-button.c',
+  'ephy-notification.c',
+  'ephy-security-popover.c',
+  'ephy-title-box.c',
+  'ephy-title-widget.c',
+  'nautilus-floating-bar.c',
+  enums
+]
+
+libephywidgets_deps = [
+  gcr_dep,
+  gdk_dep,
+  gdk_pixbuf_dep,
+  gio_dep,
+  glib_dep,
+  gtk_dep,
+  libgd_dep,
+  libsoup_dep,
+  webkit2gtk_dep
+]
+
+libephywidgets_includes = include_directories(
+  '.',
+  '..',
+  '../egg',
+  '../history',
+  '../..',
+  '../../embed'
+)
+
+libephywidgets = static_library('ephywidgets',
+  libephywidgets_sources,
+  dependencies: libephywidgets_deps,
+  include_directories: libephywidgets_includes,
+)
+
+ephywidgets_dep = declare_dependency(
+  link_with: libephywidgets,
+  include_directories: libephywidgets_includes,
+  dependencies: libephywidgets_deps
+)
diff --git a/make_release.sh b/make_release.sh
new file mode 100755
index 0000000..67a99c2
--- /dev/null
+++ b/make_release.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+test -n "$srcdir" || srcdir=$1
+test -n "$srcdir" || srcdir=.
+
+cd $srcdir
+
+VERSION=$(git describe --abbrev=0)
+NAME="epiphany-$VERSION"
+
+echo "Updating submodules…"
+git submodule update --init
+
+echo "Creating git tree archive…"
+git archive --prefix="${NAME}/" --format=tar HEAD > epiphany.tar
+
+pushd subprojects/libgd
+
+git archive --prefix="${NAME}/subprojects/libgd/" --format=tar HEAD > libgd.tar
+
+popd
+
+rm -f "${NAME}.tar"
+
+tar -Af "${NAME}.tar" epiphany.tar
+tar -Af "${NAME}.tar" subprojects/libgd/libgd.tar
+
+rm -f epiphany.tar
+rm -f subprojects/libgd/libgd.tar
+
+echo "Compressing archive…"
+xz -f "${NAME}.tar"
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..0bbabd1
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,104 @@
+project('epiphany', 'c',
+  license: 'GPL3+',
+  version: '3.24.1',
+  meson_version: '>= 0.40.0',
+  default_options: ['c_std=gnu11']
+)
+
+gnome = import('gnome')
+i18n = import('i18n')
+
+prefix = get_option('prefix')
+datadir = join_paths(prefix, get_option('datadir'))
+libdir = join_paths(prefix, get_option('libdir'))
+libexecdir = join_paths(prefix, get_option('libexecdir'))
+localedir = join_paths(prefix, get_option('localedir'))
+pkgdatadir = join_paths(datadir, 'epiphany')
+pkglibdir = join_paths(libdir, 'epiphany')
+pkglibexecdir = join_paths(libexecdir, 'epiphany')
+webextensionsdir = join_paths(pkglibdir, 'web-extensions')
+
+iso_codes = dependency('iso-codes')
+iso_codes_prefix = iso_codes.get_pkgconfig_variable('prefix')
+
+conf = configuration_data()
+conf.set_quoted('BUILD_ROOT', meson.build_root())
+conf.set_quoted('DISTRIBUTOR_NAME', get_option('distributor_name'))
+conf.set_quoted('EPHY_WEB_EXTENSIONS_DIR', webextensionsdir)
+conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
+conf.set_quoted('ISO_CODES_PREFIX', iso_codes_prefix)
+conf.set_quoted('LOCALEDIR', localedir)
+conf.set_quoted('PKGDATADIR', pkgdatadir)
+conf.set_quoted('PKGLIBEXECDIR', pkglibexecdir)
+conf.set_quoted('SOURCE_ROOT', meson.source_root())
+conf.set_quoted('VERSION', meson.project_version())
+
+conf.set10('ENABLE_NLS', true)
+conf.set10('ENABLE_FIREFOX_SYNC', get_option('enable_firefox_sync'))
+conf.set10('ENABLE_HTTPS_EVERYWHERE', get_option('enable_https_everywhere'))
+
+configure_file(
+  output: 'config.h',
+  configuration: conf
+)
+
+gvdb = subproject('gvdb')
+gvdb_dep = gvdb.get_variable('gvdb_dep')
+
+libgd = subproject('libgd',
+  default_options: [
+    'with-main-view=true',
+    'with-notification=true'
+  ]
+)
+libgd_dep = libgd.get_variable('libgd_dep')
+
+glib_requirement = '>= 2.46.0'
+gtk_requirement = '>= 3.22.0'
+webkitgtk_requirement = '>= 2.16.0'
+
+cairo_dep = dependency('cairo', version: '>= 1.2')
+gcr_dep = dependency('gcr-3', version: '>= 3.5.5')
+gdk_dep = dependency('gdk-3.0', version: gtk_requirement)
+gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0', version: '>= 2.36.5')
+gio_dep = dependency('gio-2.0', version: glib_requirement)
+gio_unix_dep = dependency('gio-unix-2.0', version: glib_requirement)
+glib_dep = dependency('glib-2.0', version: glib_requirement)
+gnome_desktop_dep = dependency('gnome-desktop-3.0', version: '>= 2.91.2')
+gtk_dep = dependency('gtk+-3.0', version: gtk_requirement)
+gtk_unix_print_dep = dependency('gtk+-unix-print-3.0', version: gtk_requirement)
+icu_uc_dep = dependency('icu-uc', version: '>= 4.6')
+iso_codes_dep = dependency('iso-codes', version: '>= 0.35')
+json_glib_dep = dependency('json-glib-1.0', version: '>= 1.2.0')
+libnotify_dep = dependency('libnotify', version: '>= 0.5.1')
+libsecret_dep = dependency('libsecret-1', version: '>= 0.14')
+libsoup_dep = dependency('libsoup-2.4', version: '>= 2.48.0')
+libxml_dep = dependency('libxml-2.0', version: '>= 2.6.12')
+libxslt_dep = dependency('libxslt', version: '>= 1.1.7')
+sqlite3_dep = dependency('sqlite3', version: '>= 3.0')
+webkit2gtk_dep = dependency('webkit2gtk-4.0', version: webkitgtk_requirement)
+webkit2gtk_web_extension_dep = dependency('webkit2gtk-web-extension-4.0', version: webkitgtk_requirement)
+
+cc = meson.get_compiler('c')
+m_dep = cc.find_library('m', required: false)
+
+if get_option('enable_firefox_sync')
+  nettle_requirement = '>= 3.2'
+  hogweed_dep = dependency('hogweed', version: nettle_requirement)
+  nettle_dep = dependency('nettle', version: nettle_requirement)
+  gmp_dep = cc.find_library('gmp')
+endif
+
+if get_option('enable_https_everywhere')
+  httpseverywhere_dep = dependency('httpseverywhere-0.2', version: '>= 0.2.2')
+endif
+
+subdir('data')
+subdir('help')
+subdir('po')
+subdir('lib')
+subdir('embed')
+subdir('src')
+subdir('tests')
+
+meson.add_install_script('post_install.py')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..82406ad
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,23 @@
+option('distributor_name',
+  type: 'string',
+  value: 'GNOME Web',
+  description: 'Distributor name displayed on process crash page'
+)
+
+option('enable_firefox_sync',
+  type: 'boolean',
+  value: false,
+  description: 'Enable experimental Firefox Sync support'
+)
+
+option('enable_https_everywhere',
+  type: 'boolean',
+  value: false,
+  description: 'Enable experimental HTTPS Everywhere support'
+)
+
+option('enable_unit_tests',
+  type: 'boolean',
+  value: true,
+  description: 'Enable unit tests'
+)
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..e9b77d7
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1 @@
+i18n.gettext(meson.project_name(), preset: 'glib')
diff --git a/post_install.py b/post_install.py
new file mode 100644
index 0000000..c1faf09
--- /dev/null
+++ b/post_install.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python3
+
+import os
+import pathlib
+import subprocess
+
+prefix = pathlib.Path(os.environ.get('MESON_INSTALL_PREFIX', '/usr/local'))
+datadir = prefix / 'share'
+destdir = os.environ.get('DESTDIR', '')
+
+if not destdir:
+    print('Compiling gsettings schemas...')
+    subprocess.call(['glib-compile-schemas', str(datadir / 'glib-2.0' / 'schemas')])
+
+    print('Updating icon cache...')
+    subprocess.call(['gtk-update-icon-cache', '-qtf', str(datadir / 'icons' / 'hicolor')])
+
+    print('Updating desktop database...')
+    subprocess.call(['update-desktop-database', '-q', str(datadir / 'applications')])
diff --git a/src/bookmarks/ephy-bookmark-properties-grid.c b/src/bookmarks/ephy-bookmark-properties-grid.c
index a7b5c7a..5b8d22c 100644
--- a/src/bookmarks/ephy-bookmark-properties-grid.c
+++ b/src/bookmarks/ephy-bookmark-properties-grid.c
@@ -32,7 +32,7 @@
 #include <libsoup/soup.h>
 #include <string.h>
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 #include "ephy-sync-service.h"
 #endif
 
@@ -245,14 +245,14 @@ ephy_bookmarks_properties_grid_actions_remove_bookmark (GSimpleAction *action,
                                                         GVariant      *value,
                                                         gpointer       user_data)
 {
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   EphySyncService *service;
 #endif
   EphyBookmarkPropertiesGrid *self = user_data;
 
   g_assert (EPHY_IS_BOOKMARK_PROPERTIES_GRID (self));
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   service = ephy_shell_get_sync_service (ephy_shell_get_default ());
   ephy_sync_service_delete_bookmark (service, self->bookmark, FALSE);
 #endif
diff --git a/src/bookmarks/ephy-bookmark.c b/src/bookmarks/ephy-bookmark.c
index ff0239b..adc5b25 100644
--- a/src/bookmarks/ephy-bookmark.c
+++ b/src/bookmarks/ephy-bookmark.c
@@ -26,7 +26,7 @@
 
 #include <string.h>
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 #include "ephy-sync-crypto.h"
 #include "ephy-sync-utils.h"
 #endif
@@ -204,7 +204,7 @@ ephy_bookmark_class_init (EphyBookmarkClass *klass)
 static void
 ephy_bookmark_init (EphyBookmark *self)
 {
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   self->id = g_malloc0 (ID_LEN + 1);
   ephy_sync_crypto_random_hex_gen (NULL, ID_LEN, (guint8 *)self->id);
 #else
@@ -542,7 +542,7 @@ ephy_bookmark_tags_compare (const char *tag1, const char *tag2)
   return result;
 }
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 char *
 ephy_bookmark_to_bso (EphyBookmark *self)
 {
diff --git a/src/bookmarks/ephy-bookmark.h b/src/bookmarks/ephy-bookmark.h
index 1f49f04..6811c46 100644
--- a/src/bookmarks/ephy-bookmark.h
+++ b/src/bookmarks/ephy-bookmark.h
@@ -70,7 +70,7 @@ int                  ephy_bookmark_bookmarks_compare_func   (EphyBookmark *bookm
 int                  ephy_bookmark_tags_compare          (const char *tag1,
                                                           const char *tag2);
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 char                *ephy_bookmark_to_bso                (EphyBookmark *self);
 EphyBookmark        *ephy_bookmark_from_bso              (JsonObject *bso);
 #endif
diff --git a/src/ephy-main.c b/src/ephy-main.c
index 2d5f843..9c4687e 100644
--- a/src/ephy-main.c
+++ b/src/ephy-main.c
@@ -206,7 +206,7 @@ main (int   argc,
    */
   LIBXML_TEST_VERSION;
 
-  notify_init (PACKAGE);
+  notify_init ("epiphany");
 
   /* If we're given -remote arguments, translate them */
   if (argc >= 2 && strcmp (argv[1], "-remote") == 0) {
@@ -346,7 +346,7 @@ main (int   argc,
   if (!(private_instance && profile_directory == NULL) && incognito_mode == FALSE) {
     /* If the migration fails we don't really want to continue. */
     if (!ephy_profile_utils_do_migration ((const char *)profile_directory, -1, FALSE)) {
-      g_print ("Failed to run the migrator process, Web will now abort.");
+      g_print ("Failed to run the migrator process, Web will now abort.\n");
       exit (1);
     }
   }
diff --git a/src/ephy-shell.c b/src/ephy-shell.c
index decc08b..ace9ac1 100644
--- a/src/ephy-shell.c
+++ b/src/ephy-shell.c
@@ -47,7 +47,7 @@
 #include <gdk/gdkx.h>
 #include <gtk/gtk.h>
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 #include "ephy-notification.h"
 #endif
 
@@ -55,7 +55,7 @@ struct _EphyShell {
   EphyEmbedShell parent_instance;
 
   EphySession *session;
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   EphySyncService *sync_service;
 #endif
   GList *windows;
@@ -312,7 +312,7 @@ download_started_cb (WebKitWebContext *web_context,
   g_object_unref (ephy_download);
 }
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 static void
 sync_tokens_load_finished_cb (EphySyncService *service,
                               GError          *error,
@@ -373,7 +373,7 @@ ephy_shell_startup (GApplication *application)
                               G_BINDING_SYNC_CREATE);
     }
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
     /* Create the sync service. */
     ephy_shell->sync_service = ephy_sync_service_new ();
     g_signal_connect (ephy_shell->sync_service,
@@ -647,7 +647,7 @@ ephy_shell_dispose (GObject *object)
   g_clear_pointer (&shell->history_dialog, gtk_widget_destroy);
   g_clear_object (&shell->prefs_dialog);
   g_clear_object (&shell->network_monitor);
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   g_clear_object (&shell->sync_service);
 #endif
   g_clear_object (&shell->bookmarks_manager);
@@ -802,7 +802,7 @@ ephy_shell_get_session (EphyShell *shell)
   return shell->session;
 }
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 /**
  * ephy_shell_get_sync_service:
  * @shell: the #EphyShell
diff --git a/src/ephy-shell.h b/src/ephy-shell.h
index 9e86fa6..e81c074 100644
--- a/src/ephy-shell.h
+++ b/src/ephy-shell.h
@@ -32,7 +32,7 @@
 #include <glib-object.h>
 #include <glib.h>
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 #include "ephy-sync-service.h"
 #endif
 
@@ -105,7 +105,7 @@ GNetworkMonitor *ephy_shell_get_net_monitor              (EphyShell *shell);
 
 EphyBookmarksManager *ephy_shell_get_bookmarks_manager   (EphyShell *shell);
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 EphySyncService *ephy_shell_get_sync_service             (EphyShell *shell);
 #endif
 
diff --git a/src/ephy-type-builtins.c.in b/src/ephy-type-builtins.c.in
new file mode 100644
index 0000000..f5929d4
--- /dev/null
+++ b/src/ephy-type-builtins.c.in
@@ -0,0 +1,42 @@
+/*** BEGIN file-header ***/
+
+#include <config.h>
+#include "ephy-type-builtins.h"
+
+/*** END file-header ***/
+/*** BEGIN file-production ***/
+
+/* enumerations from "@basename@" */
+#include "@basename@"
+
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type(void) {
+    static volatile gsize g_define_type_id__volatile = 0;
+
+    if(g_once_init_enter(&g_define_type_id__volatile)) {
+        static const G@Type@Value values [] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+            { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+            { 0, NULL, NULL }
+        };
+
+        GType g_define_type_id =
+            g_@type@_register_static(g_intern_static_string("@EnumName@"), values);
+        g_once_init_leave(&g_define_type_id__volatile, g_define_type_id);
+    }
+
+    return g_define_type_id__volatile;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+/*** END file-tail ***/
diff --git a/src/ephy-type-builtins.h.in b/src/ephy-type-builtins.h.in
new file mode 100644
index 0000000..f367945
--- /dev/null
+++ b/src/ephy-type-builtins.h.in
@@ -0,0 +1,22 @@
+/*** BEGIN file-header ***/
+#pragma once
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@basename@" */
+/*** END file-production ***/
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+
+G_END_DECLS
+
+/*** END file-tail ***/
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..8767b9a
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,140 @@
+types_headers = [
+  'bookmarks/ephy-bookmark-properties-grid.h',
+  'ephy-link.h',
+  'ephy-session.h',
+  'ephy-shell.h',
+  'ephy-window.h'
+]
+
+enums = gnome.mkenums('ephy',
+  sources: types_headers,
+  h_template: 'ephy-type-builtins.h.in',
+  c_template: 'ephy-type-builtins.c.in'
+)
+
+libephymain_sources = [
+  'bookmarks/ephy-add-bookmark-popover.c',
+  'bookmarks/ephy-bookmark.c',
+  'bookmarks/ephy-bookmark-properties-grid.c',
+  'bookmarks/ephy-bookmark-row.c',
+  'bookmarks/ephy-bookmarks-export.c',
+  'bookmarks/ephy-bookmarks-import.c',
+  'bookmarks/ephy-bookmarks-manager.c',
+  'bookmarks/ephy-bookmarks-popover.c',
+  'clear-data-dialog.c',
+  'cookies-dialog.c',
+  'ephy-action-helper.c',
+  'ephy-completion-model.c',
+  'ephy-encoding-dialog.c',
+  'ephy-encoding-row.c',
+  'ephy-header-bar.c',
+  'ephy-history-dialog.c',
+  'ephy-link.c',
+  'ephy-location-controller.c',
+  'ephy-lockdown.c',
+  'ephy-notebook.c',
+  'ephy-search-engine-dialog.c',
+  'ephy-session.c',
+  'ephy-shell.c',
+  'ephy-window.c',
+  'passwords-dialog.c',
+  'popup-commands.c',
+  'prefs-dialog.c',
+  'window-commands.c',
+  enums
+]
+
+libephymain_deps = [
+  ephyembed_dep,
+  ephymisc_dep,
+  ephywidgets_dep,
+  gvdb_dep,
+  json_glib_dep,
+  libnotify_dep
+]
+
+libephymain_includes = include_directories(
+  '.',
+  'bookmarks',
+  'sync'
+)
+
+if get_option('enable_firefox_sync')
+  libephymain_sources += [
+    'sync/ephy-sync-crypto.c',
+    'sync/ephy-sync-secret.c',
+    'sync/ephy-sync-service.c',
+    'sync/ephy-sync-utils.c'
+  ]
+
+  libephymain_deps += [
+    gmp_dep,
+    hogweed_dep,
+    nettle_dep
+  ]
+endif
+
+libephymain = shared_library('ephymain',
+  libephymain_sources,
+  dependencies: libephymain_deps,
+  include_directories: libephymain_includes,
+  install: true,
+  install_dir: pkglibdir,
+  install_rpath: pkglibdir
+)
+
+ephymain_dep = declare_dependency(
+  link_with: libephymain,
+  include_directories: libephymain_includes,
+  dependencies: libephymain_deps
+)
+
+
+executable('ephy-profile-migrator',
+  'profile-migrator/ephy-profile-migrator.c',
+  dependencies: ephymain_dep,
+  install: true,
+  install_dir: pkglibexecdir,
+  install_rpath: pkglibdir
+)
+
+
+codegen = gnome.gdbus_codegen('ephy-shell-search-provider-generated',
+  'search-provider/org.gnome.ShellSearchProvider2.xml',
+  interface_prefix: 'org.gnome',
+  namespace: 'Ephy'
+)
+
+search_provider_sources = [
+  'search-provider/ephy-search-provider.c',
+  'search-provider/ephy-search-provider-main.c',
+  codegen
+]
+
+executable('epiphany-search-provider',
+  search_provider_sources,
+  dependencies: ephymain_dep,
+  install: true,
+  install_dir: libexecdir,
+  install_rpath: pkglibdir
+)
+
+
+resource_files = files('resources/epiphany.gresource.xml')
+resources = gnome.compile_resources('epiphany-resources',
+    resource_files,
+    c_name: 'epiphany',
+    source_dir: 'resources'
+)
+
+epiphany_sources = [
+  'ephy-main.c',
+  resources
+]
+
+executable('epiphany',
+  epiphany_sources,
+  dependencies: ephymain_dep,
+  install: true,
+  install_rpath: pkglibdir
+)
diff --git a/src/prefs-dialog.c b/src/prefs-dialog.c
index 6151d70..c72f023 100644
--- a/src/prefs-dialog.c
+++ b/src/prefs-dialog.c
@@ -50,7 +50,7 @@
 #include <json-glib/json-glib.h>
 #include <string.h>
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 #include "ephy-sync-crypto.h"
 #include "ephy-sync-secret.h"
 #include "ephy-sync-service.h"
@@ -115,7 +115,7 @@ struct _PrefsDialog {
   GHashTable *iso_639_table;
   GHashTable *iso_3166_table;
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   /* sync */
   GtkWidget *sync_authenticate_box;
   GtkWidget *sync_sign_in_box;
@@ -132,7 +132,7 @@ struct _PrefsDialog {
   GtkWidget *notebook;
 };
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 typedef struct {
   PrefsDialog *dialog;
   char        *email;
@@ -155,7 +155,7 @@ enum {
 
 G_DEFINE_TYPE (PrefsDialog, prefs_dialog, GTK_TYPE_DIALOG)
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 static FxACallbackData *
 fxa_callback_data_new (PrefsDialog *dialog,
                        const char  *email,
@@ -224,7 +224,7 @@ prefs_dialog_finalize (GObject *object)
   g_hash_table_destroy (dialog->iso_639_table);
   g_hash_table_destroy (dialog->iso_3166_table);
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   if (dialog->fxa_web_view != NULL) {
     webkit_user_content_manager_unregister_script_message_handler (dialog->fxa_manager,
                                                                    "accountsCommandHandler");
@@ -241,7 +241,7 @@ prefs_dialog_finalize (GObject *object)
   G_OBJECT_CLASS (prefs_dialog_parent_class)->finalize (object);
 }
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 static void
 hide_fxa_iframe (PrefsDialog *dialog,
                  const char  *email)
@@ -638,7 +638,7 @@ prefs_dialog_class_init (PrefsDialogClass *klass)
   gtk_widget_class_bind_template_child (widget_class, PrefsDialog, lang_down_button);
   gtk_widget_class_bind_template_child (widget_class, PrefsDialog, enable_spell_checking_checkbutton);
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   /* sync */
   gtk_widget_class_bind_template_child (widget_class, PrefsDialog, sync_authenticate_box);
   gtk_widget_class_bind_template_child (widget_class, PrefsDialog, sync_sign_in_box);
@@ -1632,7 +1632,7 @@ setup_language_page (PrefsDialog *dialog)
   create_language_section (dialog);
 }
 
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
 static void
 setup_sync_page (PrefsDialog *dialog)
 {
@@ -1688,7 +1688,7 @@ prefs_dialog_init (PrefsDialog *dialog)
   setup_fonts_page (dialog);
   setup_stored_data_page (dialog);
   setup_language_page (dialog);
-#ifdef ENABLE_SYNC
+#if ENABLE_FIREFOX_SYNC
   if (mode != EPHY_EMBED_SHELL_MODE_APPLICATION) {
     setup_sync_page (dialog);
 
diff --git a/src/sync/ephy-sync-service.c b/src/sync/ephy-sync-service.c
index 13d2eff..99d512d 100644
--- a/src/sync/ephy-sync-service.c
+++ b/src/sync/ephy-sync-service.c
@@ -853,7 +853,7 @@ ephy_sync_service_start_sign_in (EphySyncService  *self,
                                  guint8           *tokenID,
                                  guint8           *reqHMACkey)
 {
-  JsonNode *node;
+  JsonNode *node = NULL;
   JsonObject *json;
   char *tokenID_hex;
   char *bundle = NULL;
diff --git a/subprojects/gvdb/README.epiphany b/subprojects/gvdb/README.epiphany
new file mode 100644
index 0000000..6c6a808
--- /dev/null
+++ b/subprojects/gvdb/README.epiphany
@@ -0,0 +1,3 @@
+GVariant Database
+
+Copied from https://git.gnome.org/browse/gvdb
diff --git a/gvdb/gvdb/gvdb-builder.c b/subprojects/gvdb/gvdb-builder.c
similarity index 99%
rename from gvdb/gvdb/gvdb-builder.c
rename to subprojects/gvdb/gvdb-builder.c
index c63d117..16a5283 100644
--- a/gvdb/gvdb/gvdb-builder.c
+++ b/subprojects/gvdb/gvdb-builder.c
@@ -342,7 +342,7 @@ file_builder_allocate_for_hash (FileBuilder            *fb,
   memset (*bloom_filter, 0, n_bloom_words * sizeof (guint32_le));
 
   /* NOTE - the code to actually fill in the bloom filter here is missing.
-   * Patches welcome! 
+   * Patches welcome!
    *
    * http://en.wikipedia.org/wiki/Bloom_filter
    * http://0pointer.de/blog/projects/bloom.html
diff --git a/gvdb/gvdb/gvdb-builder.h b/subprojects/gvdb/gvdb-builder.h
similarity index 100%
rename from gvdb/gvdb/gvdb-builder.h
rename to subprojects/gvdb/gvdb-builder.h
diff --git a/gvdb/gvdb/gvdb-format.h b/subprojects/gvdb/gvdb-format.h
similarity index 100%
rename from gvdb/gvdb/gvdb-format.h
rename to subprojects/gvdb/gvdb-format.h
diff --git a/gvdb/gvdb/gvdb-reader.c b/subprojects/gvdb/gvdb-reader.c
similarity index 100%
rename from gvdb/gvdb/gvdb-reader.c
rename to subprojects/gvdb/gvdb-reader.c
diff --git a/gvdb/gvdb/gvdb-reader.h b/subprojects/gvdb/gvdb-reader.h
similarity index 100%
rename from gvdb/gvdb/gvdb-reader.h
rename to subprojects/gvdb/gvdb-reader.h
diff --git a/subprojects/gvdb/meson.build b/subprojects/gvdb/meson.build
new file mode 100644
index 0000000..a21ac74
--- /dev/null
+++ b/subprojects/gvdb/meson.build
@@ -0,0 +1,22 @@
+project('gvdb', 'c',
+  meson_version: '>= 0.40.0',
+  default_options: ['static=true'],
+)
+
+gvdb_sources = [
+  'gvdb-builder.c',
+  'gvdb-reader.c'
+]
+
+glib_dep = dependency('glib-2.0')
+
+gvdb_lib = static_library('gvdb',
+  gvdb_sources,
+  dependencies: glib_dep
+)
+
+gvdb_dep = declare_dependency(
+  link_with: gvdb_lib,
+  include_directories: include_directories('.'),
+  dependencies: glib_dep
+)
diff --git a/subprojects/libgd b/subprojects/libgd
new file mode 160000
index 0000000..a4928d0
--- /dev/null
+++ b/subprojects/libgd
@@ -0,0 +1 @@
+Subproject commit a4928d0f5e7aebe7d0670fb65d5b6c1bcbe5dd60
diff --git a/tests/ephy-file-helpers-test.c b/tests/ephy-file-helpers-test.c
index 6b8c3d3..41f4a10 100644
--- a/tests/ephy-file-helpers-test.c
+++ b/tests/ephy-file-helpers-test.c
@@ -323,7 +323,7 @@ main (int argc, char *argv[])
   /* Set our custom user-dirs.dirs, to control the output of
    * g_get_user_special_dir. The values there are the ones we should
    * check for in the test. */
-  g_setenv ("XDG_CONFIG_HOME", TOP_SRC_DIR "/tests/data/", TRUE);
+  g_setenv ("XDG_CONFIG_HOME", SOURCE_ROOT "/tests/data/", TRUE);
 
   gtk_test_init (&argc, &argv);
 
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..8fa8161
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,123 @@
+if get_option('enable_unit_tests')
+  # FIXME: The tests that need ephy-test-utils are all disabled....
+  #
+  # libephytestutils = static_library('ephytestutils',
+  #   'ephy-test-utils.c',
+  #   dependencies: ephymain_dep
+  # )
+  #
+  # ephytestutils_dep = declare_dependency(
+  #   link_with: libephytestutils
+  # )
+
+  completion_model_test = executable('test-ephy-completion-model',
+    'ephy-completion-model-test.c',
+    dependencies: ephymain_dep
+  )
+  test('Completion model test', completion_model_test)
+
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=778153
+  # download_test = executable('test-ephy-download',
+  #   'ephy-download-test.c',
+  #   dependencies: ephymain_dep
+  # )
+  # test('Download test', download_test)
+
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=773448
+  # embed_shell_test = executable('test-ephy-embed-shell',
+  #   'ephy-embed-shell-test.c',
+  #   dependencies: ephymain_dep
+  # )
+  # test('Embed shell test', embed_shell_test)
+
+  embed_utils_test = executable('test-ephy-embed-utils',
+    'ephy-embed-utils-test.c',
+    dependencies: ephymain_dep
+  )
+  test('Embed utils test', embed_utils_test)
+
+  encodings_test = executable('test-ephy-encodings',
+    'ephy-encodings-test.c',
+    dependencies: ephymain_dep
+  )
+  test('Encodings test', encodings_test)
+
+  file_helpers_test = executable('test-ephy-file-helpers',
+    'ephy-file-helpers-test.c',
+    dependencies: ephymain_dep
+  )
+  test('File helpers test', file_helpers_test)
+
+  history_test = executable('test-ephy-history',
+    'ephy-history-test.c',
+    dependencies: ephymain_dep
+  )
+  test('History test', history_test)
+
+  location_entry_test = executable('test-location-entry',
+    'ephy-location-entry-test.c',
+    dependencies: ephymain_dep
+  )
+  test('Location entry test', location_entry_test)
+
+  migration_test = executable('test-ephy-migration',
+    'ephy-migration-test.c',
+    dependencies: ephymain_dep
+  )
+  test('Migration test', migration_test)
+
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=707220
+  # session_test = executable('test-ephy-session',
+  #   'ephy-session-test.c',
+  #   dependencies: ephytestutils_dep
+  # )
+  # test('Session test', session_test)
+
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=693369
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=695703
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=707217
+  # shell_test = executable('test-ephy-shell',
+  #   'ephy-shell-test.c',
+  #   dependencies: ephytestutils_dep
+  # )
+  # test('Shell test', shell_test)
+
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=762753
+  # snapshot_service_test = executable('test-snapshot-service',
+  #   'ephy-snapshot-service-test.c',
+  #   dependencies: ephymain_dep
+  # )
+  # test('Snapshot service test', snapshot_service_test)
+
+  sqlite_test = executable('test-ephy-sqlite',
+    'ephy-sqlite-test.c',
+    dependencies: ephymain_dep
+  )
+  test('SQLite test', sqlite_test)
+
+  string_test = executable('test-ephy-string',
+    'ephy-string-test.c',
+    dependencies: ephymain_dep
+  )
+  test('String test', string_test)
+
+  uri_helpers_test = executable('test-ephy-uri-helpers',
+    'ephy-uri-helpers-test.c',
+    dependencies: ephymain_dep
+  )
+  test('URI helpers test', uri_helpers_test)
+
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=759256
+  # web_app_utils_test = executable('test-ephy-web-app-utils',
+  #   'ephy-web-app-utils-test.c',
+  #   dependencies: ephymain_dep
+  # )
+  # test('Web app utils test', web_app_utils_test)
+
+  # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=780280
+  # web_view_test = executable('test-ephy-web-view',
+  #   'ephy-web-view-test.c',
+  #   dependencies: ephymain_dep
+  # )
+  # test('Web view test', web_view_test)
+endif


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