[gtk/wip/nirbheek/gtk-3-24-meson: 1/2] Import meson build files from an 3.22



commit 4a03f048937adace30d4b5a38d8bf0855834ead9
Author: Nirbheek Chauhan <nirbheek centricular com>
Date:   Tue Nov 13 10:59:03 2018 +0530

    Import meson build files from an 3.22
    
    Specifically, from 6dd6660c685d22e88af5ed4d0b5f1f22df0338de

 demos/gtk-demo/meson.build         | 113 +++++
 demos/icon-browser/meson.build     |  22 +
 demos/meson.build                  |   3 +
 demos/widget-factory/meson.build   |  20 +
 examples/application1/meson.build  |  11 +
 examples/application10/meson.build |  23 +
 examples/application2/meson.build  |  17 +
 examples/application3/meson.build  |  17 +
 examples/application4/meson.build  |  17 +
 examples/application5/meson.build  |  21 +
 examples/application6/meson.build  |  23 +
 examples/application7/meson.build  |  23 +
 examples/application8/meson.build  |  23 +
 examples/application9/meson.build  |  23 +
 examples/bp/meson.build            |  13 +
 examples/meson.build               |  60 +++
 gdk/meson.build                    | 382 ++++++++++++++++
 gdk/wayland/meson.build            | 115 +++++
 gtk/a11y/meson.build               |  57 +++
 gtk/deprecated/meson.build         |  42 ++
 gtk/inspector/meson.build          |  31 ++
 gtk/meson.build                    | 905 +++++++++++++++++++++++++++++++++++++
 meson.build                        | 266 +++++++++++
 meson_options.txt                  |   3 +
 tests/meson.build                  | 212 +++++++++
 tests/visuals/meson.build          |   6 +
 testsuite/css/meson.build          |   6 +
 testsuite/css/nodes/meson.build    |   3 +
 testsuite/css/parser/meson.build   |   3 +
 testsuite/css/style/meson.build    |  14 +
 testsuite/gdk/meson.build          |  24 +
 testsuite/gtk/meson.build          | 150 ++++++
 testsuite/meson.build              |   3 +
 33 files changed, 2651 insertions(+)
---
diff --git a/demos/gtk-demo/meson.build b/demos/gtk-demo/meson.build
new file mode 100644
index 0000000000..ee44a8530f
--- /dev/null
+++ b/demos/gtk-demo/meson.build
@@ -0,0 +1,113 @@
+
+## These should be in the order you want them to appear in the
+## demo app, which means alphabetized by demo title, not filename
+demos = files([
+  'application_demo.c',
+  'assistant.c',
+  'builder.c',
+  'button_box.c',
+  'changedisplay.c',
+  'clipboard.c',
+  'colorsel.c',
+  'combobox.c',
+  'css_accordion.c',
+  'css_basics.c',
+  'css_blendmodes.c',
+  'css_multiplebgs.c',
+  'css_pixbufs.c',
+  'css_shadows.c',
+  'cursors.c',
+  'dialog.c',
+  'drawingarea.c',
+  'editable_cells.c',
+  'entry_buffer.c',
+  'entry_completion.c',
+  'event_axes.c',
+  'expander.c',
+  'filtermodel.c',
+  'foreigndrawing.c',
+  'gestures.c',
+  'glarea.c',
+  'headerbar.c',
+  'hypertext.c',
+  'iconview.c',
+  'iconview_edit.c',
+  'images.c',
+  'infobar.c',
+  'links.c',
+  'listbox.c',
+  'flowbox.c',
+  'list_store.c',
+  'markup.c',
+  'menus.c',
+  'modelbutton.c',
+  'offscreen_window.c',
+  'offscreen_window2.c',
+  'overlay.c',
+  'overlay2.c',
+  'panes.c',
+  'pickers.c',
+  'pixbufs.c',
+  'popover.c',
+  'printing.c',
+  'revealer.c',
+  'rotated_text.c',
+  'scale.c',
+  'search_entry.c',
+  'search_entry2.c',
+  'shortcuts.c',
+  'sidebar.c',
+  'sizegroup.c',
+  'spinbutton.c',
+  'spinner.c',
+  'stack.c',
+  'textmask.c',
+  'textview.c',
+  'textscroll.c',
+  'theming_style_classes.c',
+  'toolpalette.c',
+  'transparent.c',
+  'tree_store.c',
+])
+
+
+gtkdemo_deps = [libgtk_dep]
+
+if harfbuzz_dep.found() and pangoft_dep.found()
+  demos += files('font_features.c')
+  gtkdemo_deps += harfbuzz_dep
+endif
+
+if os_unix
+  demos += files('pagesetup.c')
+endif
+
+gtkdemo_sources = demos + files([
+  'main.c',
+])
+
+
+geninclude = find_program('geninclude.py')
+demos_h = custom_target(
+  'gtk3 demo header',
+  output  : 'demos.h',
+  input   : demos,
+  command : [geninclude, '@OUTPUT@', '@INPUT@'],
+)
+
+gtkdemo_resources = gnome.compile_resources(
+  'gtkdemo_resources',
+  'demo.gresource.xml',
+  source_dir: '.'
+)
+
+gtkdemo = executable(
+  'gtk3-demo',
+  gtkdemo_sources,
+  demos_h,
+  gtkdemo_resources,
+  dependencies: gtkdemo_deps,
+  include_directories : confinc,
+  gui_app: true,
+  install: true
+)
diff --git a/demos/icon-browser/meson.build b/demos/icon-browser/meson.build
new file mode 100644
index 0000000000..661e5208c8
--- /dev/null
+++ b/demos/icon-browser/meson.build
@@ -0,0 +1,22 @@
+iconbrowser_sources = [
+  'main.c',
+  'iconbrowserapp.c',
+  'iconbrowserwin.c',
+  'iconstore.c'
+]
+
+iconbrowser_resources = gnome.compile_resources(
+  'iconbrowser_resources',
+  'iconbrowser.gresource.xml',
+  source_dir: '.'
+)
+
+iconbrowser = executable(
+  'gtk3-icon-browser',
+  iconbrowser_sources,
+  iconbrowser_resources,
+  dependencies: libgtk_dep,
+  include_directories : confinc,
+  gui_app: true,
+  install: true
+)
diff --git a/demos/meson.build b/demos/meson.build
new file mode 100644
index 0000000000..2fdd19151d
--- /dev/null
+++ b/demos/meson.build
@@ -0,0 +1,3 @@
+  subdir('icon-browser')
+  subdir('widget-factory')
+  subdir('gtk-demo')
diff --git a/demos/widget-factory/meson.build b/demos/widget-factory/meson.build
new file mode 100644
index 0000000000..170a59e4bc
--- /dev/null
+++ b/demos/widget-factory/meson.build
@@ -0,0 +1,20 @@
+
+widgetfactory_sources = [
+  'widget-factory.c'
+]
+
+widgetfactory_resources = gnome.compile_resources(
+  'widgetfactory_resources',
+  'widget-factory.gresource.xml',
+  source_dir: '.'
+)
+
+widget_factory = executable(
+  'gtk3-widget-factory',
+  widgetfactory_sources,
+  widgetfactory_resources,
+  dependencies: libgtk_dep,
+  include_directories : confinc,
+  gui_app: true,
+  install: true
+)
diff --git a/examples/application1/meson.build b/examples/application1/meson.build
new file mode 100644
index 0000000000..ae5620f07e
--- /dev/null
+++ b/examples/application1/meson.build
@@ -0,0 +1,11 @@
+
+
+app1 = executable(
+  'exampleapp',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  dependencies: libgtk_dep
+)
diff --git a/examples/application10/meson.build b/examples/application10/meson.build
new file mode 100644
index 0000000000..ce842ae794
--- /dev/null
+++ b/examples/application10/meson.build
@@ -0,0 +1,23 @@
+
+app10_resources = gnome.compile_resources(
+  'exampleapp10 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app10_schemas = gnome.compile_schemas()
+
+
+app10 = executable(
+  'exampleapp10',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  'exampleappprefs.c',
+  'exampleappprefs.h',
+  app10_resources,
+  app10_schemas,
+  dependencies: libgtk_dep
+)
diff --git a/examples/application2/meson.build b/examples/application2/meson.build
new file mode 100644
index 0000000000..99deae6e12
--- /dev/null
+++ b/examples/application2/meson.build
@@ -0,0 +1,17 @@
+
+app2_resources = gnome.compile_resources(
+  'exampleapp2 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app2 = executable(
+  'exampleapp2',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  app2_resources,
+  dependencies: libgtk_dep
+)
diff --git a/examples/application3/meson.build b/examples/application3/meson.build
new file mode 100644
index 0000000000..f0cec4c198
--- /dev/null
+++ b/examples/application3/meson.build
@@ -0,0 +1,17 @@
+
+app3_resources = gnome.compile_resources(
+  'exampleapp3 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app3 = executable(
+  'exampleapp3',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  app3_resources,
+  dependencies: libgtk_dep
+)
diff --git a/examples/application4/meson.build b/examples/application4/meson.build
new file mode 100644
index 0000000000..2ae18200b2
--- /dev/null
+++ b/examples/application4/meson.build
@@ -0,0 +1,17 @@
+
+app4_resources = gnome.compile_resources(
+  'exampleapp4 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app4 = executable(
+  'exampleapp4',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  app4_resources,
+  dependencies: libgtk_dep
+)
diff --git a/examples/application5/meson.build b/examples/application5/meson.build
new file mode 100644
index 0000000000..f0fed1ca59
--- /dev/null
+++ b/examples/application5/meson.build
@@ -0,0 +1,21 @@
+
+app5_resources = gnome.compile_resources(
+  'exampleapp5 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app5_schemas = gnome.compile_schemas()
+
+
+app5 = executable(
+  'exampleapp5',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  app5_resources,
+  app5_schemas,
+  dependencies: libgtk_dep
+)
diff --git a/examples/application6/meson.build b/examples/application6/meson.build
new file mode 100644
index 0000000000..2d923f35a3
--- /dev/null
+++ b/examples/application6/meson.build
@@ -0,0 +1,23 @@
+
+app6_resources = gnome.compile_resources(
+  'exampleapp6 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app6_schemas = gnome.compile_schemas()
+
+
+app6 = executable(
+  'exampleapp6',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  'exampleappprefs.c',
+  'exampleappprefs.h',
+  app6_resources,
+  app6_schemas,
+  dependencies: libgtk_dep
+)
diff --git a/examples/application7/meson.build b/examples/application7/meson.build
new file mode 100644
index 0000000000..cc32f36ad0
--- /dev/null
+++ b/examples/application7/meson.build
@@ -0,0 +1,23 @@
+
+app7_resources = gnome.compile_resources(
+  'exampleapp7 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app7_schemas = gnome.compile_schemas()
+
+
+app7 = executable(
+  'exampleapp7',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  'exampleappprefs.c',
+  'exampleappprefs.h',
+  app7_resources,
+  app7_schemas,
+  dependencies: libgtk_dep
+)
diff --git a/examples/application8/meson.build b/examples/application8/meson.build
new file mode 100644
index 0000000000..1192f4d688
--- /dev/null
+++ b/examples/application8/meson.build
@@ -0,0 +1,23 @@
+
+app8_resources = gnome.compile_resources(
+  'exampleapp8 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app8_schemas = gnome.compile_schemas()
+
+
+app8 = executable(
+  'exampleapp8',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  'exampleappprefs.c',
+  'exampleappprefs.h',
+  app8_resources,
+  app8_schemas,
+  dependencies: libgtk_dep
+)
diff --git a/examples/application9/meson.build b/examples/application9/meson.build
new file mode 100644
index 0000000000..fccee738cb
--- /dev/null
+++ b/examples/application9/meson.build
@@ -0,0 +1,23 @@
+
+app9_resources = gnome.compile_resources(
+  'exampleapp9 resources',
+  'exampleapp.gresource.xml',
+  source_dir: '.'
+)
+
+app9_schemas = gnome.compile_schemas()
+
+
+app9 = executable(
+  'exampleapp9',
+  'main.c',
+  'exampleapp.c',
+  'exampleapp.h',
+  'exampleappwin.c',
+  'exampleappwin.h',
+  'exampleappprefs.c',
+  'exampleappprefs.h',
+  app9_resources,
+  app9_schemas,
+  dependencies: libgtk_dep
+)
diff --git a/examples/bp/meson.build b/examples/bp/meson.build
new file mode 100644
index 0000000000..a3f82802f5
--- /dev/null
+++ b/examples/bp/meson.build
@@ -0,0 +1,13 @@
+
+bp_resources = gnome.compile_resources(
+  'bloatpad resources',
+  'bloatpad.gresources.xml',
+  source_dir: '.'
+)
+
+bloatpad = executable(
+  'bloatpad',
+  'bloatpad.c',
+  bp_resources,
+  dependencies: libgtk_dep
+)
diff --git a/examples/meson.build b/examples/meson.build
new file mode 100644
index 0000000000..79af2f8440
--- /dev/null
+++ b/examples/meson.build
@@ -0,0 +1,60 @@
+builder_example = executable(
+  'builder_example',
+  'builder.c',
+  dependencies: libgtk_dep
+)
+
+drawing = executable(
+  'drawing',
+  'drawing.c',
+  dependencies: libgtk_dep
+)
+
+grid_packing = executable(
+  'grid-packing',
+  'grid-packing.c',
+  dependencies: libgtk_dep
+)
+
+hello_world = executable(
+  'hello-world',
+  'hello-world.c',
+  dependencies: libgtk_dep
+)
+
+plugman = executable(
+  'plugman',
+  'plugman.c',
+  dependencies: libgtk_dep
+)
+
+search_bar = executable(
+  'search-bar',
+  'search-bar.c',
+  dependencies: libgtk_dep
+)
+
+sunny = executable(
+  'sunny',
+  'sunny.c',
+  dependencies: libgtk_dep
+)
+
+window_default = executable(
+  'window-default',
+  'window-default.c',
+  dependencies: libgtk_dep
+)
+
+
+subdir('bp')
+subdir('application1')
+subdir('application2')
+subdir('application3')
+subdir('application4')
+subdir('application5')
+subdir('application6')
+subdir('application7')
+subdir('application8')
+subdir('application9')
+subdir('application10')
diff --git a/gdk/meson.build b/gdk/meson.build
new file mode 100644
index 0000000000..cd5d4cbe2f
--- /dev/null
+++ b/gdk/meson.build
@@ -0,0 +1,382 @@
+deprecated_gdk_sources = ['deprecated/gdkcolor.c']
+gdk_sources = files([
+  'gdk-private.c',
+  'gdk.c',
+  'gdkapplaunchcontext.c',
+  'gdkcairo.c',
+  'gdkcursor.c',
+  'gdkdeprecated.c',
+  'gdkdevice.c',
+  'gdkdevicemanager.c',
+  'gdkdevicepad.c',
+  'gdkdisplay.c',
+  'gdkdisplaymanager.c',
+  'gdkdnd.c',
+  'gdkevents.c',
+  'gdkframetimings.c',
+  'gdkgl.c',
+  'gdkglcontext.c',
+  'gdkglobals.c',
+  'gdkkeys.c',
+  'gdkkeyuni.c',
+  'gdkoffscreenwindow.c',
+  'gdkframeclock.c',
+  'gdkframeclockidle.c',
+  'gdkpango.c',
+  'gdkpixbuf-drawable.c',
+  'gdkproperty.c',
+  'gdkrectangle.c',
+  'gdkrgba.c',
+  'gdkscreen.c',
+  'gdkselection.c',
+  'gdkvisual.c',
+  'gdkwindow.c',
+  'gdkwindowimpl.c',
+  'gdkseat.c',
+  'gdkseatdefault.c',
+  'gdkdevicetool.c',
+  'gdkdrawingcontext.c',
+  'gdkmonitor.c'
+])
+
+gdk_public_h_sources = files([
+  'gdk.h',
+  'gdk-autocleanup.h',
+  'gdkapplaunchcontext.h',
+  'gdkcairo.h',
+  'gdkcursor.h',
+  'gdkdevice.h',
+  'gdkdevicetool.h',
+  'gdkdevicemanager.h',
+  'gdkdevicepad.h',
+  'gdkdisplay.h',
+  'gdkdisplaymanager.h',
+  'gdkdnd.h',
+  'gdkdrawingcontext.h',
+  'gdkevents.h',
+  'gdkframetimings.h',
+  'gdkglcontext.h',
+  'gdkkeys.h',
+  'gdkkeysyms.h',
+  'gdkmain.h',
+  'gdkmonitor.h',
+  'gdkpango.h',
+  'gdkframeclock.h',
+  'gdkpixbuf.h',
+  'gdkprivate.h',
+  'gdkproperty.h',
+  'gdkrectangle.h',
+  'gdkrgba.h',
+  'gdkscreen.h',
+  'gdkseat.h',
+  'gdkselection.h',
+  'gdktestutils.h',
+  'gdkthreads.h',
+  'gdktypes.h',
+  'gdkvisual.h',
+  'gdkwindow.h',
+])
+
+gdk_private_h_sources = files([
+  'gdkseatdefaultprivate.h',
+  'gdkdevicetoolprivate.h',
+  'gdkdrawingcontextprivate.h',
+  'gdkmonitorprivate.h',
+  'gdkprivate.h',
+])
+
+gdk_x_sources = [
+  'x11/MwmUtil.h',
+  'x11/gdkapplaunchcontext-x11.c',
+  'x11/gdkasync.c',
+  'x11/gdkasync.h',
+  'x11/gdkcursor-x11.c',
+  'x11/gdkdevice-core-x11.c',
+  'x11/gdkdevice-xi2.c',
+  'x11/gdkdevicemanager-core-x11.c',
+  'x11/gdkdevicemanager-x11.c',
+  'x11/gdkdevicemanager-xi2.c',
+  'x11/gdkdisplaymanager-x11.c',
+  'x11/gdkdisplay-x11.c',
+  'x11/gdkdisplay-x11.h',
+  'x11/gdkdnd-x11.c',
+  'x11/gdkeventsource.c',
+  'x11/gdkeventsource.h',
+  'x11/gdkeventtranslator.c',
+  'x11/gdkeventtranslator.h',
+  'x11/gdkgeometry-x11.c',
+  'x11/gdkglcontext-x11.c',
+  'x11/gdkglcontext-x11.h',
+  'x11/gdkkeys-x11.c',
+  'x11/gdkmain-x11.c',
+  'x11/gdkproperty-x11.c',
+  'x11/gdkscreen-x11.c',
+  'x11/gdkscreen-x11.h',
+  'x11/gdkselection-x11.c',
+  'x11/gdktestutils-x11.c',
+  'x11/gdkvisual-x11.c',
+  'x11/gdkwindow-x11.c',
+  'x11/gdkwindow-x11.h',
+  'x11/gdkxftdefaults.c',
+  'x11/gdkxid.c',
+  'x11/gdkx.h',
+  'x11/xsettings-client.h',
+  'x11/xsettings-client.c',
+  'x11/gdkmonitor-x11.c',
+  'x11/gdkmonitor-x11.h',
+  'x11/gdkx11monitor.h'
+]
+
+gdk_x_private_sources = [
+  'x11/gdkprivate-x11.h',
+  'x11/gdkdevicemanagerprivate-core.h',
+]
+
+gdk_wayland_sources = files([
+  'wayland/gdkapplaunchcontext-wayland.c',
+  'wayland/gdkcursor-wayland.c',
+  'wayland/gdkdevice-wayland.c',
+  'wayland/gdkdisplay-wayland.c',
+  'wayland/gdkdisplay-wayland.h',
+  'wayland/gdkdnd-wayland.c',
+  'wayland/gdkeventsource.c',
+  'wayland/gdkglcontext-wayland.c',
+  'wayland/gdkglcontext-wayland.h',
+  'wayland/gdkkeys-wayland.c',
+  'wayland/gdkmonitor-wayland.c',
+  'wayland/gdkmonitor-wayland.h',
+  'wayland/gdkscreen-wayland.c',
+  'wayland/gdkseat-wayland.h',
+  'wayland/gdkselection-wayland.c',
+  'wayland/gdkwaylanddevice.h',
+  'wayland/gdkwaylanddisplay.h',
+  'wayland/gdkwaylandglcontext.h',
+  'wayland/gdkwayland.h',
+  'wayland/gdkwaylandmonitor.h',
+  'wayland/gdkwaylandselection.h',
+  'wayland/gdkwaylandwindow.h',
+  'wayland/gdkwindow-wayland.c',
+  'wayland/wm-button-layout-translation.c',
+])
+
+gdk_wayland_private_sources = files([
+  'wayland/gdkprivate-wayland.h',
+])
+
+
+
+gdk_broadway_sources = files([
+  'broadway/gdkdisplay-broadway.c',
+  'broadway/gdkdisplay-broadway.h',
+  'broadway/gdkscreen-broadway.c',
+  'broadway/gdkscreen-broadway.h',
+  'broadway/broadway-output.c',
+  'broadway/broadway-output.h',
+  'broadway/broadway-server.h',
+  'broadway/broadway-server.c',
+  'broadway/gdkbroadway-server.c',
+  'broadway/gdkcursor-broadway.c',
+  'broadway/gdkvisual-broadway.c',
+  'broadway/gdkselection-broadway.c',
+  'broadway/gdkwindow-broadway.c',
+  'broadway/gdkwindow-broadway.h',
+  'broadway/gdkmonitor-broadway.c',
+  'broadway/gdkmonitor-broadway.h',
+  'broadway/gdkkeys-broadway.c',
+  'broadway/gdkglobals-broadway.c',
+  'broadway/gdkeventsource.c',
+  'broadway/gdkeventsource.h',
+  'broadway/gdkdnd-broadway.c',
+  'broadway/broadwayd.c',
+  'broadway/gdkdevicemanager-broadway.c',
+  'broadway/gdkdevicemanager-broadway.h',
+  'broadway/gdkdevice-broadway.c',
+  'broadway/gdkdevice-broadway.h',
+  'broadway/broadway-buffer.c',
+  'broadway/broadway-buffer.h',
+  'broadway/gdktestutils-broadway.c',
+  'broadway/gdkproperty-broadway.c'
+])
+
+gdk_broadway_private_sources = files([
+  'broadway/gdkprivate-broadway.h'
+])
+
+# glsl_sources = [
+  # 'gl3-texture-2d.fs.glsl',
+  # 'gl3-texture-2d.vs.glsl',
+  # 'gl3-texture-rect.fs.glsl',
+  # 'gl3-texture-rect.vs.glsl',
+  # 'gl2-texture-2d.fs.glsl',
+  # 'gl2-texture-2d.fs.glsl',
+  # 'gl2-texture-rect.vs.glsl',
+  # 'gl2-texture-rect.vs.glsl',
+  # 'gles2-texture.fs.glsl',
+  # 'gles2-texture.vs.glsl',
+# ]
+# resource_xml = ''
+# foreach glsl_file : glsl_sources
+  # resource_xml += '    <file alias="glsl/@0@">resources/glsl/@0@</file>\n'.format(glsl_file)
+# endforeach
+
+
+# cdata = configuration_data()
+# cdata.set('GDK_GRESOURCE_XML_FILES', resource_xml)
+# gdkresources_xml = configure_file(
+  # input  : 'gdk.gresource.xml.meson',
+  # output : 'gdk.gresource.xml',
+  # configuration : cdata
+# )
+
+gdkresources = gnome.compile_resources(
+  'gdkresources',
+  'gdk.gresource.xml',
+  source_dir: '.',
+  c_name: '_gdk',
+  extra_args: '--manual-register'
+)
+
+
+deprecated_h_sources = files(['deprecated/gdkcolor.h'])
+
+gdk_headers = gdk_public_h_sources + deprecated_h_sources + gdk_private_h_sources
+
+gdkenum_h = custom_target(
+  'gdkenum_h',
+  output  : 'gdkenumtypes.h',
+  input   : gdk_headers,
+  command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gdkenumtypes.h.template', 
'@OUTPUT@', '@INPUT@'])
+
+gdkenum_c = custom_target(
+  'gdkenum_c',
+  output  : 'gdkenumtypes.c',
+  input   : gdk_headers,
+  depends : gdkenum_h,
+  command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gdkenumtypes.c.template', 
'@OUTPUT@', '@INPUT@'])
+
+gdkmarshal_h = custom_target(
+  'gdkmarshal_h',
+  output  : 'gdkmarshalers.h',
+  input   : 'gdkmarshalers.list',
+  command : [mkmarshal, glib_marshal, '_gdk_marshal', '@INPUT@', '@OUTPUT@']
+)
+
+gdkmarshal_c = custom_target(
+  'gdkmarshal_c',
+  output  : 'gdkmarshalers.c',
+  input   : 'gdkmarshalers.list',
+  command : [mkmarshal, glib_marshal, '_gdk_marshal', '@INPUT@', '@OUTPUT@']
+)
+
+cdata = configuration_data()
+cdata.set('GTK_MAJOR_VERSION', gtk_major_version)
+cdata.set('GTK_MINOR_VERSION', gtk_minor_version)
+cdata.set('GTK_MICRO_VERSION', gtk_micro_version)
+
+
+
+if x11_enabled      cdata.set('GDK_WINDOWING_X11', '')      endif
+if wayland_enabled  cdata.set('GDK_WINDOWING_WAYLAND', '')  endif
+if broadway_enabled cdata.set('GDK_WINDOWING_BROADWAY', '') endif
+gdkconfig = configure_file(
+  input  : 'gdkconfig.h.meson',
+  output : 'gdkconfig.h',
+  configuration : cdata
+)
+
+gdkversionmacros = configure_file(
+  input  : 'gdkversionmacros.h.in',
+  output : 'gdkversionmacros.h',
+  configuration: cdata
+)
+
+xinc = include_directories('x11')
+wlinc = include_directories('.')
+
+
+gdk_deps = [
+  mlib,
+  pixbuf_dep,
+  cairo_dep,
+  pango_dep,
+  cairogobj_dep,
+  glib_dep,
+  epoxy_dep,
+  fontconfig_dep,
+  giounix_dep,
+  pangocairo_dep
+]
+
+gdk_sources = [
+  gdkconfig,
+  gdk_sources,
+  deprecated_gdk_sources,
+  gdkenum_c, gdkenum_h,
+  gdkmarshal_c, gdkmarshal_h,
+  gdkresources,
+  gdkversionmacros,
+  gdk_headers
+]
+
+if x11_enabled
+  gdk_deps += [
+    xrender_dep,
+    xi_dep,
+    xext_dep,
+    x11_dep,
+    xcursor_dep,
+    xdamage_dep,
+    xfixes_dep,
+    xcomposite_dep,
+    xrandr_dep
+  ]
+  gdk_sources += [
+    gdk_x_sources,
+    gdk_x_private_sources
+  ]
+endif
+
+if wayland_enabled
+  subdir('wayland')
+  gdk_deps += [
+    shmlib,
+    xkbdep,
+    wlclientdep,
+    wlprotocolsdep,
+    wlcursordep,
+    wlegldep
+  ]
+  gdk_sources += [
+    gdk_wayland_sources,
+    gdk_wayland_private_sources
+  ]
+endif
+
+if broadway_enabled
+  gdk_deps += [
+    shmlib,
+  ]
+  gdk_sources += [
+    gdk_broadway_sources,
+    gdk_broadway_private_sources
+  ]
+endif
+
+
+libgdk = shared_library('gdk',
+  sources: [gdk_sources, gdkconfig, gdkenum_h],
+  c_args: ['-DHAVE_CONFIG_H', '-DGDK_COMPILATION'],
+  include_directories: [confinc, xinc, wlinc],
+  dependencies: gdk_deps,
+  install: true
+)
+
+
+libgdk_dep = declare_dependency(
+  sources: ['gdk.h', gdkconfig, gdkenum_h],
+  depends: gdk_sources,
+  include_directories: [confinc, xinc, wlinc],
+  dependencies: gdk_deps,
+  link_with: libgdk,
+  link_args: ['-Bsymbolic'],
+)
diff --git a/gdk/wayland/meson.build b/gdk/wayland/meson.build
new file mode 100644
index 0000000000..6783ecf193
--- /dev/null
+++ b/gdk/wayland/meson.build
@@ -0,0 +1,115 @@
+
+
+if wayland_enabled
+  runcmd = run_command('pkg-config', '--variable=pkgdatadir', 'wayland-protocols')
+  if runcmd.returncode() == 0
+    wayland_protocols_datadir = runcmd.stdout().strip() + '/'
+  else
+    error('Could not get wayland-protocols pkgdatadir via pkg-config.')
+  endif
+
+  wayland_scanner = find_program('wayland-scanner')
+  genprotocols = find_program('genprotocolfiles.py')
+
+  gtk_shell_h = custom_target(
+    'gtk shell protocol header',
+    input  : 'protocol/gtk-shell.xml',
+    output : 'gtk-shell-client-protocol.h',
+    command: [genprotocols, wayland_scanner, '@INPUT@', '@OUTPUT@', 'client-header']
+  )
+
+  gtk_shell_c = custom_target(
+    'gtk shell protocol source',
+    input  : 'protocol/gtk-shell.xml',
+    output : 'gtk-shell-protocol.c',
+    command: [genprotocols, wayland_scanner, '@INPUT@', '@OUTPUT@', 'code']
+  )
+
+  pointer_gestures_h = custom_target(
+    'pointer gestures header',
+    input  : wayland_protocols_datadir + 'unstable/pointer-gestures/pointer-gestures-unstable-v1.xml',
+    output : 'pointer-gestures-unstable-v1-client-protocol.h',
+    command: [genprotocols, wayland_scanner, '@INPUT@', '@OUTPUT@', 'client-header']
+  )
+
+  pointer_gestures_c = custom_target(
+    'pointer gestures source',
+    input  : wayland_protocols_datadir + 'unstable/pointer-gestures/pointer-gestures-unstable-v1.xml',
+    output : 'pointer-gestures-unstable-v1-protocol.c',
+    command: [genprotocols, wayland_scanner, '@INPUT@', '@OUTPUT@', 'code']
+  )
+
+  primary_selection_h = custom_target(
+    'primary selection header',
+    input  : 'protocol/gtk-primary-selection.xml',
+    output : 'gtk-primary-selection-client-protocol.h',
+    command: [genprotocols, wayland_scanner,'@INPUT@', '@OUTPUT@', 'client-header']
+  )
+
+  primary_selection_c = custom_target(
+    'primary selection source',
+    input  : 'protocol/gtk-primary-selection.xml',
+    output : 'gtk-primary-selection-protocol.c',
+    command: [genprotocols, wayland_scanner,'@INPUT@', '@OUTPUT@', 'code']
+  )
+
+  xdg_shell_h = custom_target(
+    'xdg shell v6 header',
+    input  : wayland_protocols_datadir + 'unstable/xdg-shell/xdg-shell-unstable-v6.xml',
+    output : 'xdg-shell-unstable-v6-client-protocol.h',
+    command: [genprotocols, wayland_scanner,'@INPUT@', '@OUTPUT@', 'client-header']
+  )
+
+  xdg_shell_c = custom_target(
+    'xdg shell v6 source',
+    input  : wayland_protocols_datadir + 'unstable/xdg-shell/xdg-shell-unstable-v6.xml',
+    output : 'xdg-shell-unstable-v6-protocol.c',
+    command: [genprotocols, wayland_scanner,'@INPUT@', '@OUTPUT@', 'code']
+  )
+
+  xdg_foreign_h = custom_target(
+    'xdg foreign v1 header',
+    input  : wayland_protocols_datadir + 'unstable/xdg-foreign/xdg-foreign-unstable-v1.xml',
+    output : 'xdg-foreign-unstable-v1-client-protocol.h',
+    command: [genprotocols, wayland_scanner,'@INPUT@', '@OUTPUT@', 'client-header']
+  )
+
+  xdg_foreign_c = custom_target(
+    'xdg foreign v1 source',
+    input  : wayland_protocols_datadir + 'unstable/xdg-foreign/xdg-foreign-unstable-v1.xml',
+    output : 'xdg-foreign-unstable-v1-protocol.c',
+    command: [genprotocols, wayland_scanner,'@INPUT@', '@OUTPUT@', 'code']
+  )
+
+  tablet_h = custom_target(
+    'tablet v2 header',
+    input  : wayland_protocols_datadir + 'unstable/tablet/tablet-unstable-v2.xml',
+    output : 'tablet-unstable-v2-client-protocol.h',
+    command: [genprotocols, wayland_scanner,'@INPUT@', '@OUTPUT@', 'client-header']
+  )
+
+  tablet_c = custom_target(
+    'tablet v2 source',
+    input  : wayland_protocols_datadir + 'unstable/tablet/tablet-unstable-v2.xml',
+    output : 'tablet-unstable-v2-protocol.c',
+    command: [genprotocols, wayland_scanner,'@INPUT@', '@OUTPUT@', 'code']
+  )
+
+
+
+  gdk_sources += [
+    gtk_shell_c,
+    gtk_shell_h,
+    pointer_gestures_h,
+    pointer_gestures_c,
+    primary_selection_h,
+    primary_selection_c,
+    xdg_shell_h,
+    xdg_shell_c,
+    xdg_foreign_h,
+    xdg_foreign_c,
+    tablet_h,
+    tablet_c
+  ]
+
+endif
diff --git a/gtk/a11y/meson.build b/gtk/a11y/meson.build
new file mode 100644
index 0000000000..c53c22abdd
--- /dev/null
+++ b/gtk/a11y/meson.build
@@ -0,0 +1,57 @@
+a11y_sources = files(
+  'gtkaccessibility.c',
+  'gtkaccessibilitymisc.c',
+  'gtkaccessibilityutil.c',
+  'gtkarrowaccessible.c',
+  'gtkbooleancellaccessible.c',
+  'gtkbuttonaccessible.c',
+  'gtkcellaccessible.c',
+  'gtkcellaccessibleparent.c',
+  'gtkcheckmenuitemaccessible.c',
+  'gtkcolorswatchaccessible.c',
+  'gtkcomboboxaccessible.c',
+  'gtkcontaineraccessible.c',
+  'gtkcontainercellaccessible.c',
+  'gtkentryaccessible.c',
+  'gtkexpanderaccessible.c',
+  'gtkflowboxaccessible.c',
+  'gtkflowboxchildaccessible.c',
+  'gtkframeaccessible.c',
+  'gtkiconviewaccessible.c',
+  'gtkimageaccessible.c',
+  'gtkimagecellaccessible.c',
+  'gtklabelaccessible.c',
+  'gtklevelbaraccessible.c',
+  'gtklinkbuttonaccessible.c',
+  'gtklistboxaccessible.c',
+  'gtklistboxrowaccessible.c',
+  'gtklockbuttonaccessible.c',
+  'gtkmenuaccessible.c',
+  'gtkmenubuttonaccessible.c',
+  'gtkmenushellaccessible.c',
+  'gtkmenuitemaccessible.c',
+  'gtknotebookaccessible.c',
+  'gtknotebookpageaccessible.c',
+  'gtkpanedaccessible.c',
+  'gtkpopoveraccessible.c',
+  'gtkprogressbaraccessible.c',
+  'gtkradiobuttonaccessible.c',
+  'gtkradiomenuitemaccessible.c',
+  'gtkrangeaccessible.c',
+  'gtkrenderercellaccessible.c',
+  'gtkscaleaccessible.c',
+  'gtkscalebuttonaccessible.c',
+  'gtkscrolledwindowaccessible.c',
+  'gtkspinbuttonaccessible.c',
+  'gtkspinneraccessible.c',
+  'gtkstatusbaraccessible.c',
+  'gtkswitchaccessible.c',
+  'gtktextcellaccessible.c',
+  'gtktextviewaccessible.c',
+  'gtktogglebuttonaccessible.c',
+  'gtktoplevelaccessible.c',
+  'gtktreeviewaccessible.c',
+  'gtkwidgetaccessible.c',
+  'gtkwindowaccessible.c',
+  'gtkstackaccessible.c'
+  )
diff --git a/gtk/deprecated/meson.build b/gtk/deprecated/meson.build
new file mode 100644
index 0000000000..c2cf4757eb
--- /dev/null
+++ b/gtk/deprecated/meson.build
@@ -0,0 +1,42 @@
+gtk_deprecated_c_sources = files(
+  'gtkactivatable.c',
+  'gtkaction.c',
+  'gtkactiongroup.c',
+  'gtkalignment.c',
+  'gtkarrow.c',
+  'gtkcolorsel.c',
+  'gtkcolorseldialog.c',
+  'gtkfontsel.c',
+  'gtkgradient.c',
+  'gtkhandlebox.c',
+  'gtkhbbox.c',
+  'gtkhbox.c',
+  'gtkhpaned.c',
+  'gtkhscale.c',
+  'gtkhscrollbar.c',
+  'gtkhseparator.c',
+  'gtkhsv.c',
+  'gtkiconfactory.c',
+  'gtkimagemenuitem.c',
+  'gtkmisc.c',
+  'gtknumerableicon.c',
+  'gtkradioaction.c',
+  'gtkrc.c',
+  'gtkrecentaction.c',
+  'gtkstatusicon.c',
+  'gtkstock.c',
+  'gtkstyle.c',
+  'gtkstyleproperties.c',
+  'gtksymboliccolor.c',
+  'gtktable.c',
+  'gtktearoffmenuitem.c',
+  'gtkthemingengine.c',
+  'gtktoggleaction.c',
+  'gtkuimanager.c',
+  'gtkvbbox.c',
+  'gtkvbox.c',
+  'gtkvscale.c',
+  'gtkvscrollbar.c',
+  'gtkvseparator.c',
+  'gtkvpaned.c',
+)
diff --git a/gtk/inspector/meson.build b/gtk/inspector/meson.build
new file mode 100644
index 0000000000..a119a08db8
--- /dev/null
+++ b/gtk/inspector/meson.build
@@ -0,0 +1,31 @@
+inspector_sources = files(
+  'action-editor.c',
+  'actions.c',
+  'cellrenderergraph.c',
+  'css-editor.c',
+  'css-node-tree.c',
+  'data-list.c',
+  'general.c',
+  'gestures.c',
+  'graphdata.c',
+  'gtktreemodelcssnode.c',
+  'init.c',
+  'inspect-button.c',
+  'magnifier.c',
+  'menu.c',
+  'misc-info.c',
+  'object-hierarchy.c',
+  'object-tree.c',
+  'prop-editor.c',
+  'prop-list.c',
+  'resource-list.c',
+  'selector.c',
+  'signals-list.c',
+  'size-groups.c',
+  'statistics.c',
+  'treewalk.c',
+  'visual.c',
+  'window.c',
+  'strv-editor.c',
+  'gtkstackcombo.c'
+)
diff --git a/gtk/meson.build b/gtk/meson.build
new file mode 100644
index 0000000000..46fa1a9a4d
--- /dev/null
+++ b/gtk/meson.build
@@ -0,0 +1,905 @@
+subdir('deprecated')
+subdir('a11y')
+subdir('inspector')
+
+gtk_sources = files([
+  'gtkactionmuxer.c',
+  'gtkactionobserver.c',
+  'gtkactionobservable.c',
+  'gtkactionable.c',
+  'gtkquery.c',
+  'gtksearchbar.c',
+  'gtksearchentry.c',
+  'gtksearchengine.c',
+  'gtksearchenginesimple.c',
+  'gtksearchenginemodel.c',
+  'fnmatch.c',
+  'gtkaboutdialog.c',
+  'gtkaccelgroup.c',
+  'gtkaccellabel.c',
+  'gtkaccelmap.c',
+  'gtkaccessible.c',
+  'gtkactionbar.c',
+  'gtkactionhelper.c',
+  'gtkadjustment.c',
+  'gtkallocatedbitmask.c',
+  'gtkappchooser.c',
+  'gtkappchooserwidget.c',
+  'gtkappchooserbutton.c',
+  'gtkappchooserdialog.c',
+  'gtkapplication.c',
+  'gtkapplicationimpl.c',
+  'gtkapplicationwindow.c',
+  'gtkaspectframe.c',
+  'gtkassistant.c',
+  'gtkbbox.c',
+  'gtkbin.c',
+  'gtkbindings.c',
+  'gtkbookmarksmanager.c',
+  'gtkborder.c',
+  'gtkbox.c',
+  'gtkbuildable.c',
+  'gtkbuilder.c',
+  'gtkicon.c',
+  'gtkshortcutswindow.c',
+  'gtkshortcutssection.c',
+  'gtkbuilderparser.c',
+  'gtkbuilder-menus.c',
+  'gtkbutton.c',
+  'gtkcairoblur.c',
+  'gtkcssnode.c',
+  'gtkcsscalcvalue.c',
+  'gtkcalendar.c',
+  'gtkcellarea.c',
+  'gtkcellareabox.c',
+  'gtkcellareaboxcontext.c',
+  'gtkcellareacontext.c',
+  'gtkcelleditable.c',
+  'gtkcelllayout.c',
+  'gtkcellrenderer.c',
+  'gtkcellrendereraccel.c',
+  'gtkcellrenderercombo.c',
+  'gtkcellrendererpixbuf.c',
+  'gtkcellrendererprogress.c',
+  'gtkcellrendererspin.c',
+  'gtkcellrendererspinner.c',
+  'gtkcellrenderertext.c',
+  'gtkcellrenderertoggle.c',
+  'gtkcellview.c',
+  'gtkcenterbox.c',
+  'gtkcheckbutton.c',
+  'gtkcheckmenuitem.c',
+  'gtkcolorbutton.c',
+  'gtkcolorchooser.c',
+  'gtkcolorchooserwidget.c',
+  'gtkcolorchooserdialog.c',
+  'gtkcoloreditor.c',
+  'gtkcolorplane.c',
+  'gtkcolorscale.c',
+  'gtkcolorswatch.c',
+  'gtkcolorutils.c',
+  'gtkcombobox.c',
+  'gtkcomboboxtext.c',
+  'gtkcontainer.c',
+  'gtkcssanimation.c',
+  'gtkcssgadget.c',
+  'gtkcsscustomgadget.c',
+  'gtkboxgadget.c',
+  'gtkimagedefinition.c',
+  'gtkprogresstracker.c',
+  'gtkcssimageradial.c',
+  'gtkcssimagerecolor.c',
+  'gtkcssimagefallback.c',
+  'gtkbuiltinicon.c',
+  'gtkcssstylechange.c',
+  'gtkcsspalettevalue.c',
+  'gtkcssanimatedstyle.c',
+  'gtkcssarrayvalue.c',
+  'gtkcssbgsizevalue.c',
+  'gtkcssbordervalue.c',
+  'gtkcsscolorvalue.c',
+  'gtkcsscornervalue.c',
+  'gtkcsscustomproperty.c',
+  'gtkcsseasevalue.c',
+  'gtkcssenumvalue.c',
+  'gtkcssenginevalue.c',
+  'gtkcssiconthemevalue.c',
+  'gtkcssimage.c',
+  'gtkcssimagebuiltin.c',
+  'gtkcssimagecrossfade.c',
+  'gtkcssimagegradient.c',
+  'gtkcssimageicontheme.c',
+  'gtkcssimagelinear.c',
+  'gtkcssimagesurface.c',
+  'gtkcssimageurl.c',
+  'gtkcssimagescaled.c',
+  'gtkcssimagevalue.c',
+  'gtkcssimagewin32.c',
+  'gtkcssinheritvalue.c',
+  'gtkcssinitialvalue.c',
+  'gtkcsskeyframes.c',
+  'gtkcsslookup.c',
+  'gtkcssmatcher.c',
+  'gtkcssnode.c',
+  'gtkcssnodedeclaration.c',
+  'gtkcssnumbervalue.c',
+  'gtkcssparser.c',
+  'gtkcsspathnode.c',
+  'gtkcsspositionvalue.c',
+  'gtkcssprovider.c',
+  'gtkcssrepeatvalue.c',
+  'gtkcssrgbavalue.c',
+  'gtkcsssection.c',
+  'gtkcssselector.c',
+  'gtkcssstringvalue.c',
+  'gtkcssstyle.c',
+  'gtkcssshadowsvalue.c',
+  'gtkcssshadowvalue.c',
+  'gtkcssshorthandproperty.c',
+  'gtkshortcutlabel.c',
+  'gtkfilechoosernativeportal.c',
+  'gtkdragsource.c',
+  'gtkcssshorthandpropertyimpl.c',
+  'gtkcssstaticstyle.c',
+  'gtkcssstylefuncs.c',
+  'gtkcssstyleproperty.c',
+  'gtkcssstylepropertyimpl.c',
+  'gtkcsstransformvalue.c',
+  'gtkcsstransientnode.c',
+  'gtkcsstransition.c',
+  'gtkcsstypedvalue.c',
+  'gtkcssunsetvalue.c',
+  'gtkcsstypes.c',
+  'gtkcssvalue.c',
+  'gtkcsswidgetnode.c',
+  'gtkcssnodestylecache.c',
+  'gtkapplicationaccels.c',
+  'gtkcssdimensionvalue.c',
+  'gtkshortcutsgroup.c',
+  'gtkshortcutsshortcut.c',
+  'gtkfilechoosernative.c',
+  'gtknativedialog.c',
+  'gtkdialog.c',
+  'gtkdrawingarea.c',
+  'gtkutils.c',
+  'gtktooltipwindow.c',
+  'gtkeditable.c',
+  'gtkentry.c',
+  'gtkentrybuffer.c',
+  'gtkentrycompletion.c',
+  'gtkeventbox.c',
+  'gtkeventcontroller.c',
+  'gtkexpander.c',
+  'gtkfilechooser.c',
+  'gtkfilechooserbutton.c',
+  'gtkfilechooserdialog.c',
+  'gtkfilechooserembed.c',
+  'gtkfilechooserentry.c',
+  'gtkfilechooserutils.c',
+  'gtkfilechooserwidget.c',
+  'gtkfilefilter.c',
+  'gtkfilesystem.c',
+  'gtkfilesystemmodel.c',
+  'gtkfixed.c',
+  'gtkflowbox.c',
+  'gtkfontbutton.c',
+  'gtkfontchooser.c',
+  'gtkfontchooserdialog.c',
+  'gtkcsswin32sizevalue.c',
+  'gtkfontchooserutils.c',
+  'gtkwin32theme.c',
+  'gtkwin32draw.c',
+  'gtkcomposetable.c',
+  'gdkpixbufutils.c',
+  'gtkfontchooserwidget.c',
+  'gtkframe.c',
+  'gtkprintoperation-portal.c',
+  'gtkgladecatalog.c',
+  'gtkgesture.c',
+  'gtkgesturedrag.c',
+  'gtkgesturelongpress.c',
+  'gtkgesturemultipress.c',
+  'gtkgesturepan.c',
+  'gtkgesturerotate.c',
+  'gtkgesturesingle.c',
+  'gtkgestureswipe.c',
+  'gtkgesturezoom.c',
+  'gtkgizmo.c',
+  'gtkgladecatalog.c',
+  'gtkglarea.c',
+  'gtkgrid.c',
+  'gtkheaderbar.c',
+  'gtkdragdest.c',
+  'gtkhsla.c',
+  'gtkiconcache.c',
+  'gtkiconcachevalidator.c',
+  'gtkiconhelper.c',
+  'gtkicontheme.c',
+  'gtkiconview.c',
+  'gtkimage.c',
+  'gtkimcontext.c',
+  'gtkimcontextsimple.c',
+  'gtkimmodule.c',
+  'gtkimmulticontext.c',
+  'gtkinfobar.c',
+  'gtkinvisible.c',
+  'gtkkeyhash.c',
+  'gtkkineticscrolling.c',
+  'gtklabel.c',
+  'gtklayout.c',
+  'gtklevelbar.c',
+  'gtklinkbutton.c',
+  'gtklistbox.c',
+  'gtkliststore.c',
+  'gtklockbutton.c',
+  'gtkmain.c',
+  'gtkmagnifier.c',
+  'gtkmenu.c',
+  'gtkmenubar.c',
+  'gtkmenubutton.c',
+  'gtkmenuitem.c',
+  'gtkmenusectionbox.c',
+  'gtkmenushell.c',
+  'gtkmenutracker.c',
+  'gtkmenutrackeritem.c',
+  'gtkmenutoolbutton.c',
+  'gtkmessagedialog.c',
+  'gtkmnemonichash.c',
+  'gtkmodelmenuitem.c',
+  'gtkmodelbutton.c',
+  'gtkmodifierstyle.c',
+  'gtkmodules.c',
+  'gtkmountoperation.c',
+  'gtknotebook.c',
+  'gtkoffscreenwindow.c',
+  'gtkorientable.c',
+  'gtkoverlay.c',
+  'gtkpadcontroller.c',
+  'gtkpagesetup.c',
+  'gtkpaned.c',
+  'gtkpango.c',
+  'gtkpapersize.c',
+  'gtkpathbar.c',
+  'gtkplacessidebar.c',
+  'gtkplacesview.c',
+  'gtkplacesviewrow.c',
+  'gtkprintcontext.c',
+  'gtkprintoperation.c',
+  'gtkprintoperationpreview.c',
+  'gtkprintsettings.c',
+  'gtkprintutils.c',
+  'gtkprivate.c',
+  'gtkprogressbar.c',
+  'gtkpixelcache.c',
+  'gtkpopover.c',
+  'gtkpopovermenu.c',
+  'gtkradiobutton.c',
+  'gtkradiomenuitem.c',
+  'gtkradiotoolbutton.c',
+  'gtkrange.c',
+  'gtkrbtree.c',
+  'gtkrecentchooserdefault.c',
+  'gtkrecentchooserdialog.c',
+  'gtkrecentchoosermenu.c',
+  'gtkrecentchooserwidget.c',
+  'gtkrecentchooserutils.c',
+  'gtkrecentchooser.c',
+  'gtkrecentfilter.c',
+  'gtkrecentmanager.c',
+  'gtkrender.c',
+  'gtkrenderbackground.c',
+  'gtkrenderborder.c',
+  'gtkrendericon.c',
+  'gtkrevealer.c',
+  'gtkroundedbox.c',
+  'gtkscale.c',
+  'gtkscalebutton.c',
+  'gtkscrollable.c',
+  'gtkscrollbar.c',
+  'gtkscrolledwindow.c',
+  'gtkselection.c',
+  'gtkseparator.c',
+  'gtkseparatormenuitem.c',
+  'gtkseparatortoolitem.c',
+  'gtksettings.c',
+  'gtksidebarrow.c',
+  'gtksizegroup.c',
+  'gtksizerequest.c',
+  'gtksizerequestcache.c',
+  'gtkshow.c',
+  'gtkstacksidebar.c',
+  'gtkspinbutton.c',
+  'gtkspinner.c',
+  'gtkstack.c',
+  'gtkstackswitcher.c',
+  'gtkstatusbar.c',
+  'gtkstyleanimation.c',
+  'gtkstylecascade.c',
+  'gtkstylecontext.c',
+  'gtkstyleproperty.c',
+  'gtkstyleprovider.c',
+  'gtkstyleproviderprivate.c',
+  'gtkswitch.c',
+  'gtktestutils.c',
+  'gtktextattributes.c',
+  'gtktextbtree.c',
+  'gtktextbuffer.c',
+  'gtktextbufferrichtext.c',
+  'gtktextbufferserialize.c',
+  'gtktextchild.c',
+  'gtktextdisplay.c',
+  'gtktexthandle.c',
+  'gtktextiter.c',
+  'gtktextlayout.c',
+  'gtktextmark.c',
+  'gtktextsegment.c',
+  'gtktexttag.c',
+  'gtktexttagtable.c',
+  'gtktexttypes.c',
+  'gtktextutil.c',
+  'gtktextview.c',
+  'gtktogglebutton.c',
+  'gtktoggletoolbutton.c',
+  'gtktoolbar.c',
+  'gtktoolbutton.c',
+  'gtktoolitem.c',
+  'gtktoolitemgroup.c',
+  'gtktoolpalette.c',
+  'gtktoolshell.c',
+  'gtktooltip.c',
+  'gtktrashmonitor.c',
+  'gtktreedatalist.c',
+  'gtktreednd.c',
+  'gtktreemenu.c',
+  'gtktreemodel.c',
+  'gtktreemodelfilter.c',
+  'gtktreemodelsort.c',
+  'gtktreeselection.c',
+  'gtktreesortable.c',
+  'gtktreestore.c',
+  'gtktreeview.c',
+  'gtktreeviewcolumn.c',
+  'gtkvolumebutton.c',
+  'gtkviewport.c',
+  'gtkwidget.c',
+  'gtkwidgetfocus.c',
+  'gtkwidgetpath.c',
+  'gtkwindow.c',
+  'gtkwindowgroup.c',
+  'gtkwin32theme.c',
+  'fallback-c89.c'
+])
+
+gtk_private_type_headers = files([
+  'gtkcsstypesprivate.h',
+  'gtktexthandleprivate.h',
+])
+
+gtk_private_h_sources = gtk_private_type_headers + files([
+  'gtkrecentchooserutils.h',
+  'gtkrbtree.h',
+])
+
+gtk_public_h_sources = files([
+  'gtk.h',
+  'gtk-autocleanups.h',
+  'gtkx.h',
+  'gtkx-autocleanups.h',
+  'gtk-a11y.h',
+  'gtkaboutdialog.h',
+  'gtkaccelgroup.h',
+  'gtkaccellabel.h',
+  'gtkaccelmap.h',
+  'gtkaccessible.h',
+  'gtkactionable.h',
+  'gtkactionbar.h',
+  'gtkadjustment.h',
+  'gtkappchooser.h',
+  'gtkappchooserbutton.h',
+  'gtkappchooserdialog.h',
+  'gtkappchooserwidget.h',
+  'gtkapplication.h',
+  'gtkapplicationwindow.h',
+  'gtkaspectframe.h',
+  'gtkassistant.h',
+  'gtkbbox.h',
+  'gtkbin.h',
+  'gtkbindings.h',
+  'gtkborder.h',
+  'gtkbox.h',
+  'gtkbuilder.h',
+  'gtkbuildable.h',
+  'gtkbutton.h',
+  'gtkcalendar.h',
+  'gtkcellarea.h',
+  'gtkcellareacontext.h',
+  'gtkcellareabox.h',
+  'gtkcelleditable.h',
+  'gtkcelllayout.h',
+  'gtkcellrenderer.h',
+  'gtkcellrendereraccel.h',
+  'gtkcellrenderercombo.h',
+  'gtkcellrendererpixbuf.h',
+  'gtkcellrendererprogress.h',
+  'gtkcellrendererspin.h',
+  'gtkcellrendererspinner.h',
+  'gtkcellrenderertext.h',
+  'gtkcellrenderertoggle.h',
+  'gtkcellview.h',
+  'gtkcheckbutton.h',
+  'gtkcheckmenuitem.h',
+  'gtkclipboard.h',
+  'gtkcolorbutton.h',
+  'gtkcolorchooser.h',
+  'gtkcolorchooserwidget.h',
+  'gtkcolorchooserdialog.h',
+  'gtkcolorutils.h',
+  'gtkcombobox.h',
+  'gtkcomboboxtext.h',
+  'gtkcontainer.h',
+  'gtkcssprovider.h',
+  'gtkcsssection.h',
+  'gtkdebug.h',
+  'gtkdialog.h',
+  'gtkdnd.h',
+  'gtkdragdest.h',
+  'gtkdragsource.h',
+  'gtkdrawingarea.h',
+  'gtkeditable.h',
+  'gtkentry.h',
+  'gtkentrybuffer.h',
+  'gtkentrycompletion.h',
+  'gtkenums.h',
+  'gtkeventbox.h',
+  'gtkeventcontroller.h',
+  'gtkexpander.h',
+  'gtkfilechooser.h',
+  'gtkfilechooserbutton.h',
+  'gtkfilechooserdialog.h',
+  'gtkfilechoosernative.h',
+  'gtkfilechooserwidget.h',
+  'gtkfilefilter.h',
+  'gtkfixed.h',
+  'gtkflowbox.h',
+  'gtkfontbutton.h',
+  'gtkfontchooser.h',
+  'gtkfontchooserdialog.h',
+  'gtkfontchooserwidget.h',
+  'gtkframe.h',
+  'gtkgesture.h',
+  'gtkgesturedrag.h',
+  'gtkgesturelongpress.h',
+  'gtkgesturemultipress.h',
+  'gtkgesturepan.h',
+  'gtkgesturerotate.h',
+  'gtkgesturesingle.h',
+  'gtkgestureswipe.h',
+  'gtkgesturezoom.h',
+  'gtkglarea.h',
+  'gtkgrid.h',
+  'gtkheaderbar.h',
+  'gtkicontheme.h',
+  'gtkiconview.h',
+  'gtkimage.h',
+  'gtkimcontext.h',
+  'gtkimcontextinfo.h',
+  'gtkimcontextsimple.h',
+  'gtkimmodule.h',
+  'gtkimmulticontext.h',
+  'gtkinfobar.h',
+  'gtkinvisible.h',
+  'gtklabel.h',
+  'gtklayout.h',
+  'gtklevelbar.h',
+  'gtklinkbutton.h',
+  'gtklistbox.h',
+  'gtkliststore.h',
+  'gtklockbutton.h',
+  'gtkmain.h',
+  'gtkmenu.h',
+  'gtkmenubar.h',
+  'gtkmenubutton.h',
+  'gtkmenuitem.h',
+  'gtkmenushell.h',
+  'gtkmenutoolbutton.h',
+  'gtkmessagedialog.h',
+  'gtkmodelbutton.h',
+  'gtkmodules.h',
+  'gtkmountoperation.h',
+  'gtknativedialog.h',
+  'gtknotebook.h',
+  'gtkoffscreenwindow.h',
+  'gtkorientable.h',
+  'gtkoverlay.h',
+  'gtkpadcontroller.h',
+  'gtkpagesetup.h',
+  'gtkpaned.h',
+  'gtkpapersize.h',
+  'gtkplacessidebar.h',
+  'gtkplug.h',
+  'gtkpopover.h',
+  'gtkpopovermenu.h',
+  'gtkprintcontext.h',
+  'gtkprintoperation.h',
+  'gtkprintoperationpreview.h',
+  'gtkprintsettings.h',
+  'gtkprogressbar.h',
+  'gtkradiobutton.h',
+  'gtkradiomenuitem.h',
+  'gtkradiotoolbutton.h',
+  'gtkrange.h',
+  'gtkrecentchooser.h',
+  'gtkrecentchooserdialog.h',
+  'gtkrecentchoosermenu.h',
+  'gtkrecentchooserwidget.h',
+  'gtkrecentfilter.h',
+  'gtkrecentmanager.h',
+  'gtkrender.h',
+  'gtkrevealer.h',
+  'gtkscale.h',
+  'gtkscalebutton.h',
+  'gtkscrollable.h',
+  'gtkscrollbar.h',
+  'gtkscrolledwindow.h',
+  'gtksearchbar.h',
+  'gtksearchentry.h',
+  'gtkselection.h',
+  'gtkseparator.h',
+  'gtkseparatormenuitem.h',
+  'gtkseparatortoolitem.h',
+  'gtksettings.h',
+  'gtkshortcutlabel.h',
+  'gtkshortcutsgroup.h',
+  'gtkshortcutssection.h',
+  'gtkshortcutsshortcut.h',
+  'gtkshortcutswindow.h',
+  'gtkshow.h',
+  'gtkstacksidebar.h',
+  'gtksizegroup.h',
+  'gtksizerequest.h',
+  'gtksocket.h',
+  'gtkspinbutton.h',
+  'gtkspinner.h',
+  'gtkstack.h',
+  'gtkstackswitcher.h',
+  'gtkstatusbar.h',
+  'gtkstylecontext.h',
+  'gtkstyleprovider.h',
+  'gtkswitch.h',
+  'gtktestutils.h',
+  'gtktextattributes.h',
+  'gtktextbuffer.h',
+  'gtktextbufferrichtext.h',
+  'gtktextchild.h',
+  'gtktextdisplay.h',
+  'gtktextiter.h',
+  'gtktextmark.h',
+  'gtktexttag.h',
+  'gtktexttagtable.h',
+  'gtktextview.h',
+  'gtktogglebutton.h',
+  'gtktoggletoolbutton.h',
+  'gtktoolbar.h',
+  'gtktoolbutton.h',
+  'gtktoolitem.h',
+  'gtktoolitemgroup.h',
+  'gtktoolpalette.h',
+  'gtktoolshell.h',
+  'gtktooltip.h',
+  'gtktreednd.h',
+  'gtktreemodel.h',
+  'gtktreemodelfilter.h',
+  'gtktreemodelsort.h',
+  'gtktreeselection.h',
+  'gtktreesortable.h',
+  'gtktreestore.h',
+  'gtktreeview.h',
+  'gtktreeviewcolumn.h',
+  'gtktypes.h',
+  'gtkviewport.h',
+  'gtkvolumebutton.h',
+  'gtkwidget.h',
+  'gtkwidgetpath.h',
+  'gtkwindow.h',
+  'gtkwindowgroup.h',
+])
+
+gtk_deprecated_type_headers = files([
+  'deprecated/gtkactivatable.h',
+  'deprecated/gtkaction.h',
+  'deprecated/gtkactiongroup.h',
+  'deprecated/gtkalignment.h',
+  'deprecated/gtkarrow.h',
+  'deprecated/gtkcolorsel.h',
+  'deprecated/gtkcolorseldialog.h',
+  'deprecated/gtkfontsel.h',
+  'deprecated/gtkgradient.h',
+  'deprecated/gtkhandlebox.h',
+  'deprecated/gtkhbbox.h',
+  'deprecated/gtkhbox.h',
+  'deprecated/gtkhpaned.h',
+  'deprecated/gtkhscale.h',
+  'deprecated/gtkhscrollbar.h',
+  'deprecated/gtkhseparator.h',
+  'deprecated/gtkhsv.h',
+  'deprecated/gtkiconfactory.h',
+  'deprecated/gtkimagemenuitem.h',
+  'deprecated/gtkmisc.h',
+  'deprecated/gtknumerableicon.h',
+  'deprecated/gtkradioaction.h',
+  'deprecated/gtkrc.h',
+  'deprecated/gtkrecentaction.h',
+  'deprecated/gtkstatusicon.h',
+  'deprecated/gtkstock.h',
+  'deprecated/gtkstyle.h',
+  'deprecated/gtkstyleproperties.h',
+  'deprecated/gtksymboliccolor.h',
+  'deprecated/gtktable.h',
+  'deprecated/gtktearoffmenuitem.h',
+  'deprecated/gtkthemingengine.h',
+  'deprecated/gtktoggleaction.h',
+  'deprecated/gtkuimanager.h',
+  'deprecated/gtkvbbox.h',
+  'deprecated/gtkvbox.h',
+  'deprecated/gtkvscale.h',
+  'deprecated/gtkvscrollbar.h',
+  'deprecated/gtkvseparator.h',
+  'deprecated/gtkvpaned.h',
+])
+
+gtk_unix_sources = files([
+  'gtkcustompaperunixdialog.c',
+  'gtkpagesetupunixdialog.c',
+  'gtkprinter.c',
+  'gtkprinteroption.c',
+  'gtkprinteroptionset.c',
+  'gtkprinteroptionwidget.c',
+  'gtkprintjob.c',
+  'gtkprintoperation-unix.c',
+  'gtkprintunixdialog.c',
+  'gtkprintbackend.c',
+  'gtksearchenginetracker.c',
+])
+
+gtkresources = gnome.compile_resources(
+  'gtkresources',
+  'gtk.gresource.xml',
+  source_dir: '.',
+  c_name: '_gtk',
+  extra_args: '--manual-register'
+)
+
+gtk_x11_sources = files([
+  'gtkplug.c',
+  'gtksocket.c',
+  'gtkxembed.c',
+  'deprecated/gtktrayicon-x11.c',
+  'gtkapplication-x11.c',
+  'gtkmountoperation-x11.c',
+])
+
+gtk_wayland_sources = files([
+  'gtkapplication-wayland.c'
+])
+
+dnd_sources = files([
+  'gtkclipboard.c',
+  'gtkdnd.c'
+])
+
+gtk_use_wayland_or_x11_c_sources = files([
+  'gtkapplication-dbus.c'
+])
+
+gtk_dbus_src = gnome.gdbus_codegen('gtkdbusgenerated', 'gtkdbusinterfaces.xml',
+                                   interface_prefix: 'org.Gtk.',
+                                   namespace: '_Gtk')
+
+gtkmarshal_h = custom_target(
+  'gtkmarshal_h',
+  output  : 'gtkmarshalers.h',
+  input   : 'gtkmarshalers.list',
+  command : [mkmarshal, glib_marshal, '_gtk_marshal', '@INPUT@', '@OUTPUT@']
+)
+
+gtkmarshal_c = custom_target(
+  'gtkmarshal_c',
+  output  : 'gtkmarshalers.c',
+  input   : 'gtkmarshalers.list',
+  command : [mkmarshal, glib_marshal, '_gtk_marshal', '@INPUT@', '@OUTPUT@']
+)
+
+
+
+gtktypebuiltins_h = custom_target(
+  'gtkypebuiltins_h',
+  output  : 'gtktypebuiltins.h',
+  input   : gtk_public_h_sources + gtk_deprecated_type_headers,
+  command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gtktypebuiltins.h.template', 
'@OUTPUT@', '@INPUT@']
+)
+
+gtktypebuiltins_c = custom_target(
+  'gtkypebuiltins_c',
+  output  : 'gtktypebuiltins.c',
+  input   : gtk_public_h_sources +  gtk_deprecated_type_headers,
+  depends : gtktypebuiltins_h,
+  command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gtktypebuiltins.c.template', 
'@OUTPUT@', '@INPUT@']
+)
+
+gtkprivatetypebuiltins_h = custom_target(
+  'gtkprivateypebuiltins_h',
+  output  : 'gtkprivatetypebuiltins.h',
+  input   : gtk_private_type_headers,
+  command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gtkprivatetypebuiltins.h.template', 
'@OUTPUT@', '@INPUT@']
+)
+
+gtkprivatetypebuiltins_c = custom_target(
+  'gtkprivateypebuiltins_c',
+  output  : 'gtkprivatetypebuiltins.c',
+  input   : gtk_private_type_headers,
+  depends : [gtkprivatetypebuiltins_h, gtktypebuiltins_h],
+  command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gtkprivatetypebuiltins.c.template', 
'@OUTPUT@', '@INPUT@']
+)
+
+gentypefuncs_prog = find_program('gentypefuncs.py')
+# Generate gtktypefuncs.c
+typefuncs = custom_target(
+  'typefuncs',
+  depends: gdkenum_h,
+  output : 'gtktypefuncs.c',
+  input  : gdk_headers + gtk_public_h_sources + gtk_deprecated_type_headers + gtk_private_h_sources + 
[gtktypebuiltins_h] + [gdkenum_h],
+  command: [gentypefuncs_prog, '@OUTPUT@', '@INPUT@'],
+  install: false,
+)
+
+cdata = configuration_data()
+cdata.set('GTK_MAJOR_VERSION', gtk_major_version)
+cdata.set('GTK_MINOR_VERSION', gtk_minor_version)
+cdata.set('GTK_MICRO_VERSION', gtk_micro_version)
+cdata.set('GTK_BINARY_AGE', gtk_binary_age)
+cdata.set('GTK_INTERFACE_AGE', gtk_interface_age)
+
+gtkversion = configure_file(
+  input  : 'gtkversion.h.in',
+  output : 'gtkversion.h',
+  configuration: cdata
+)
+
+gtk_cargs = [
+  '-DGTK_COMPILATION',
+  '-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED',
+  '-DGTK_BINARY_VERSION="' + gtk_binary_version + '"',
+  '-DGTK_HOST="' + host_machine.system() + '"',
+  '-DGTK_SYSCONFDIR="' + get_option('prefix') + '/etc"',
+  '-DGTK_DATADIR="' + get_option('datadir') + '"',
+  '-DGTK_DATA_PREFIX="'+ get_option('prefix') + '"',
+  '-DGTK_PRINT_BACKENDS="null"',
+]
+
+gtk_sources += [
+  gtk_dbus_src,
+  gtk_unix_sources,
+  gtk_deprecated_c_sources,
+  dnd_sources,
+  inspector_sources,
+  a11y_sources,
+  gtkresources,
+  gtkmarshal_c,
+  gtkprivatetypebuiltins_c,
+  gtktypebuiltins_c,
+]
+
+gtk_deps = [
+  gmodule_dep,
+  giounix_dep,
+  glib_dep,
+  atkbridge_dep,
+  pangocairo_dep,
+  pango_dep,
+  cairogobj_dep,
+  cairo_dep,
+  fontconfig_dep,
+  pixbuf_dep,
+  atk_dep,
+  epoxy_dep,
+  mlib,
+]
+
+if x11_enabled
+  runcmd = run_command('pkg-config', '--variable=prefix', 'x11')
+  if runcmd.returncode() == 0
+      gtk_cargs += '-DX11_DATA_PREFIX="' + runcmd.stdout().strip() + '"'
+  else
+    error('Could not get x11 data prefix via pkg-config.')
+  endif
+
+  gtk_sources += [
+    gtk_x11_sources,
+    gtk_use_wayland_or_x11_c_sources
+  ]
+  gtk_deps += [
+    xi_dep,
+    x11_dep,
+    pangoft_dep
+  ]
+endif
+
+if wayland_enabled
+  gtk_sources += [
+    gtk_wayland_sources,
+    gtk_use_wayland_or_x11_c_sources
+  ]
+  gtk_deps += [
+    pangoft_dep
+  ]
+endif
+
+gnome.compile_schemas()
+
+libgtk = shared_library('gtk',
+  gtk_sources,
+  gtkmarshal_h,
+  c_args: gtk_cargs,
+  include_directories: [confinc, gdkinc, gtkinc],
+  dependencies: [gtk_deps, libgdk_dep],
+  install: true
+)
+
+libgtk_dep = declare_dependency(
+  sources: [
+    'gtk.h',
+    gtkversion,
+    gtktypebuiltins_c,
+    gtktypebuiltins_h,
+  ],
+  dependencies: gtk_deps,
+  link_with: [libgtk, libgdk],
+  link_args: ['-Bsymbolic'],
+  include_directories: [confinc, gtkinc]
+)
+
+
+
+####### Utils ######
+gtk_query_settings = executable(
+  'gtk-query-settings',
+  'gtk-query-settings.c',
+  dependencies: libgtk_dep,
+  install: true
+)
+
+gtk_builder_tool = executable(
+  'gtk-builder-tool',
+  'gtk-builder-tool.c',
+  dependencies: libgtk_dep,
+  install: true
+)
+
+gtk_update_icon_cache = executable(
+  'gtk-update-icon-cache',
+  'updateiconcache.c',
+  dependencies: libgtk_dep,
+  install: true
+)
+
+# gtk_query_immodules = executable(
+  # 'gtk-query-immodules-3.0',
+  # 'queryimmodules.c',
+  # 'gtkutils.c',
+  # dependencies: libgtk_dep,
+  # install: true
+# )
+
+gtk_encode_symbolic_svg = executable(
+  'gtk-encode-symbolic-svg',
+  'encodesymbolic.c',
+  dependencies: libgtk_dep,
+  install: true
+)
+
+gtk_launch = executable(
+  'gtk-launch',
+  'gtk-launch.c',
+  dependencies: libgtk_dep,
+  install: true
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000000..e3d9ec4eca
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,266 @@
+project('gtk+-3.0', 'c',
+        version: '3.22.0',
+        default_options: [
+          'buildtype=debugoptimized',
+          'c_std=gnu89',
+          'warning_level=1'
+        ],
+        license: 'LGPLv2.1+')
+
+gnome = import('gnome')
+
+add_global_arguments('-DG_LOG_USE_STRUCTURED=1', language: 'c')
+add_global_arguments('-DG_ENABLE_DEBUG', language: 'c')
+add_global_arguments('-DG_ENABLE_CONSISTENCY_CHECKS', language: 'c')
+
+gtk_version       = meson.project_version().split('.')
+gtk_major_version = gtk_version[0].to_int()
+gtk_minor_version = gtk_version[1].to_int()
+gtk_micro_version = gtk_version[2].to_int()
+gtk_interface_age = 0
+add_global_arguments('-DGTK_VERSION="' + meson.project_version() + '"', language: 'c')
+
+# Define a string for the earliest version that this release has
+# backwards binary compatibility with for all interfaces a module
+# might. Unless we add module-only API with lower stability
+# guarantees, this should be unchanged until we break binary compat
+# for GTK+.
+gtk_binary_version = '3.0.0'
+
+gtk_binary_age = 100 * gtk_minor_version + gtk_micro_version
+gtk_api_version = '@0@.0'.format(gtk_major_version)
+
+x11_enabled      = get_option('enable-x11-backend')
+wayland_enabled  = get_option('enable-wayland-backend')
+broadway_enabled = get_option('enable-broadway-backend')
+
+
+mkmarshal    = find_program('build_marshal.py')
+glib_marshal = find_program('glib-genmarshal')
+mkenum       = find_program('build_enum.py')
+perl         = find_program('perl')
+glib_mkenums = find_program('glib-mkenums')
+
+os_unix   = false
+os_linux  = false
+os_win32  = false
+os_darwin = false
+
+if host_machine.system().contains('darwin')
+  os_darwin = true
+elif host_machine.system().contains('mingw')
+  os_win32 = true
+elif host_machine.system().contains('linux')
+  os_linux = true
+endif
+
+os_unix = not os_win32
+
+
+cc = meson.get_compiler('c')
+cdata = configuration_data()
+cdata.set('PACKAGE_VERSION', '"'+meson.project_version()+'"')
+cdata.set('GTK_LOCALEDIR', '"'+get_option('localedir')+'"')
+cdata.set('GTK_DATADIR', '"'+get_option('datadir')+'"')
+cdata.set('GTK_LIBDIR', '"'+get_option('libdir')+'"')
+cdata.set('GETTEXT_PACKAGE', '"gtk30"')
+cdata.set('GTK_MAJOR_VERSION', gtk_major_version)
+cdata.set('GTK_MINOR_VERSION', gtk_minor_version)
+cdata.set('GTK_MICRO_VERSION', gtk_micro_version)
+cdata.set('GTK_BINARY_AGE', gtk_binary_age)
+cdata.set('GTK_INTERFACE_AGE', gtk_interface_age)
+check_headers = [
+  ['HAVE_CRT_EXTERNS_H', 'crt/externs.h'],
+  ['HAVE_DLFCN_H', 'dlfcn.h'],
+  ['HAVE_FTW_H', 'ftw.h'],
+  ['HAVE_INTTYPES_H', 'inttypes.h'],
+  ['HAVE_LOCALE_H', 'locale.h'],
+  ['HAVE_MEMORY_H', 'memory.h'],
+  ['HAVE_STDINT_H', 'stdint.h'],
+  ['HAVE_STDLIB_H', 'stdlib.h'],
+  ['HAVE_STRINGS_H', 'strings.h'],
+  ['HAVE_STRING_H', 'string.h'],
+  ['HAVE_SYS_MMAN_H', 'sys/mman.h'],
+  ['HAVE_SYS_PARAM_H', 'sys/param.h'],
+  ['HAVE_SYS_STAT_H', 'sys/stat.h'],
+  ['HAVE_SYS_SYSINFO_H', 'sys/sysinfo.h'],
+  ['HAVE_SYS_SYSTEMINFO_H', 'sys/systeminfo.h'],
+  ['HAVE_SYS_TIME_H', 'sys/time.h'],
+  ['HAVE_SYS_TYPES_H', 'sys/types.h'],
+  ['HAVE_UNISTD_H', 'unistd.h'],
+  ['HAVE_LINUX_MEMFD_H', 'linux/memfd.h'],
+]
+
+foreach h : check_headers
+  if cc.has_header(h.get(1))
+    cdata.set(h.get(0), 1)
+  endif
+endforeach
+
+check_functions = [
+# check token HAVE_BIND_TEXTDOMAIN_CODESET
+# check token HAVE_CUPS_API_1_6
+  ['HAVE_DCGETTEXT', 'dcgettext', '#include<libintl.h>'],
+  ['HAVE_DECL_ISINF', 'isinf', '#include<math.h>'],
+  ['HAVE_DECL_ISNAN', 'isnan', '#include<math.h>'],
+  ['HAVE_GETPAGESIZE', 'getpagesize', '#include<unistd.h>'],
+  ['HAVE_GETRESUID', 'getresuid', '#include<unistd.h>'],
+# check token HAVE_GETTEXT
+# check token HAVE_GIO_UNIX
+# check token HAVE_GNU_FTW
+# check token HAVE_HTTPGETAUTHSTRING
+# check token HAVE_HTTP_AUTHSTRING
+# check token HAVE_IPRINTDIALOGCALLBACK
+# check token HAVE_LC_MESSAGES
+# check token HAVE_LOCALTIME_R
+  ['HAVE_LSTAT', 'lstat', '#include<sys/stat.h>'],
+  ['HAVE_MMAP', 'mmap', '#include<sys/mman.h>'],
+  ['HAVE_NEARBYINT', 'nearbyint', '#include<math.h>'],
+  ['HAVE_POSIX_FALLOCATE', 'posix_fallocate', '#include<fcntl.h>'],
+  ['HAVE__LOCK_FILE', '_lock_file', '#include<stdio.h>'],
+  ['HAVE_FLOCKFILE', 'flockfile', '#include<stdio.h>'],
+  ['HAVE_MKSTEMP', 'mkstemp', '#include<stdlib.h>'],
+  ['HAVE_MALLINFO', 'mallinfo', '#include<malloc.h>'],
+  ['HAVE_ROUND', 'round', '#include<math.h>'],
+  ['HAVE_RINT', 'rint', '#include<math.h>'],
+  ['HAVE_LOG2', 'log2', '#include<math.h>'],
+  ['HAVE_EXP2', 'exp2', '#include<math.h>'],
+  ['HAVE_SINCOS', 'sincos', '#include<math.h>'],
+  ['HAVE_XKB', 'XkbQueryExtension', '#include<X11/XKBlib.h>'],
+# check token HAVE_SOCKADDR_UN_SUN_LEN
+# check token HAVE_SOLARIS_XINERAMA
+# check token HAVE_XFREE_XINERAMA
+# check token HAVE_XINERAMA
+# check token HAVE__NL_MEASUREMENT_MEASUREMENT
+# check token HAVE__NL_PAPER_HEIGHT
+# check token HAVE__NL_PAPER_WIDTH
+# check token HAVE__NL_TIME_FIRST_WEEKDAY
+# check token HAVE__NSGETENVIRON
+]
+if x11_enabled
+check_functions += [
+  ['HAVE_XGENERICEVENTS', 'XGetEventData', '#include<X11/Xlib.h>'],
+  ['HAVE_XSYNC', 'XSyncQueryExtension', '#include<X11/Xlib.h>\n#include</usr/include/X11/extensions/sync.h>']
+]
+endif
+
+foreach f : check_functions
+  if cc.has_function(f.get(1), prefix : f.get(2))
+    cdata.set(f.get(0), 1)
+  endif
+endforeach
+
+#
+# Disable deprecation checks for all libraries we depend on on stable branches.
+# This is so newer versions of those libraries don't cause more warnings with
+# a stable GTK version.
+# We don't ever want to turn off deprecation warnings for master however, because
+# that's where we get rid of deprecated API we use.
+if gtk_minor_version % 2 == 0
+  cdata.set('GLIB_DISABLE_DEPRECATION_WARNINGS', 1)
+endif
+
+
+confinc = include_directories('.')
+gdkinc = include_directories('gdk')
+gtkinc = include_directories('gtk')
+
+glib_dep       = dependency('glib-2.0', version: '>= 2.49.4')
+giounix_dep    = dependency('gio-unix-2.0', required : false)
+pango_dep      = dependency('pango', version: '>=1.37.3')
+pangoft_dep    = dependency('pangoft2', required: wayland_enabled or x11_enabled)
+cairo_dep      = dependency('cairo', version: '>= 1.14.0')
+pangocairo_dep = dependency('pangocairo')
+cairogobj_dep  = dependency('cairo-gobject')
+pixbuf_dep     = dependency('gdk-pixbuf-2.0', version: '>= 2.30.0')
+epoxy_dep      = dependency('epoxy', version: '>= 1.0')
+atk_dep        = dependency('atk', version: '>= 2.15.1')
+atkbridge_dep  = dependency('atk-bridge-2.0')
+gmodule_dep    = dependency('gmodule-2.0')
+colord_dep     = dependency('colord', version: '>= 0.1.9', required: false)
+fontconfig_dep = dependency('fontconfig')
+harfbuzz_dep   = dependency('harfbuzz', version: '>= 0.9', required: false)
+xkbdep         = dependency('xkbcommon', version: '>= 0.2.0')
+
+if wayland_enabled
+  wlclientdep    = dependency('wayland-client', version:  '>= 1.9.91')
+  wlprotocolsdep = dependency('wayland-protocols', version: '>= 1.7')
+  wlcursordep    = dependency('wayland-cursor', version: '>= 1.9.91')
+  wlegldep       = dependency('wayland-egl')
+endif
+
+if x11_enabled
+  xrandr_dep     = dependency('xrandr', version: '>= 1.2.99')
+  xrandr15_dep   = dependency('xrandr', version: '>= 1.5', required: false)
+  x11_dep        = dependency('x11')
+  xrender_dep    = dependency('xrender')
+  xi_dep         = dependency('xi')
+  xext_dep       = dependency('xext')
+  xcursor_dep    = dependency('xcursor', required: false)
+  xdamage_dep    = dependency('xdamage', required: false)
+  xfixes_dep     = dependency('xfixes', required: false)
+  xcomposite_dep = dependency('xcomposite', required: false)
+
+
+  if xdamage_dep.found()
+    cdata.set('HAVE_XDAMAGE', 1)
+  endif
+
+  if xcursor_dep.found()
+    cdata.set('HAVE_XCURSOR', 1)
+  endif
+
+  if xcomposite_dep.found()
+    cdata.set('HAVE_XCOMPOSITE', 1)
+  endif
+
+  if xfixes_dep.found()
+    cdata.set('HAVE_XFIXES', 1)
+  endif
+
+
+
+  if xi_dep.found() and cc.has_header('X11/extensions/XInput2.h')
+    cdata.set('XINPUT_2', 1)
+    prefix = '#include<X11/Xlib.h>\n#include<X11/extensions/XInput2.h>'
+    if cc.has_function('XIAllowTouchEvents', prefix: prefix) and cc.has_member('XIScrollClassInfo', 
'number', prefix: prefix)
+      cdata.set('XINPUT_2_2', 1)
+    endif
+  endif
+
+  if xrandr_dep.found()
+    cdata.set('HAVE_RANDR', 1)
+
+    if xrandr15_dep.found()
+      cdata.set('HAVE_RANDR15', 1)
+    endif
+  endif
+endif
+
+mlib   = cc.find_library('m', required: false)
+shmlib = cc.find_library('rt')
+
+if giounix_dep.found()
+  cdata.set('HAVE_GIO_UNIX', 1)
+endif
+
+if colord_dep.found()
+  cdata.set('HAVE_COLORD', 1)
+endif
+
+if mlib.found()
+  cdata.set('HAVE_LIBM', 1)
+endif
+
+configure_file(
+  input : 'config.h.meson',
+  output: 'config.h',
+  configuration: cdata
+)
+
+subdir('gdk')
+subdir('gtk')
+subdir('demos')
+subdir('tests')
+subdir('testsuite')
+subdir('examples')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000000..e8f8ee60e9
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,3 @@
+option('enable-x11-backend', type: 'boolean', value: 'true')
+option('enable-wayland-backend', type: 'boolean', value: 'true')
+option('enable-broadway-backend', type: 'boolean', value: 'false')
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000000..2fdc5ebd5d
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,212 @@
+
+test_animated_resizing = executable('animated-resizing',
+  'animated-resizing.c',
+  'frame-stats.c',
+  'frame-stats.h',
+  'variable.c',
+  'variable.h',
+  dependencies: libgtk_dep
+)
+test_animted_revealing = executable('animated-revealing',
+  'animated-revealing.c',
+  'frame-stats.c',
+  'frame-stats.h',
+  'variable.c',
+  'variable.h',
+  dependencies: libgtk_dep
+)
+test_scrolling_performance = executable('scrolling-performance',
+  'scrolling-performance.c',
+  'frame-stats.c',
+  'frame-stats.h',
+  'variable.c',
+  'variable.h',
+  dependencies: libgtk_dep
+)
+test_blur_performance = executable('blur-performance',
+  'blur-performance.c',
+  '../gtk/gtkcairoblur.c',
+  dependencies: libgtk_dep
+)
+test_video_timer = executable('video-timer',
+  'video-timer.c',
+  'variable.c',
+  'variable.h',
+  dependencies: libgtk_dep
+)
+test_print = executable('testprint',
+  'testprint.c',
+  'testprintfileoperation.c',
+  'testprintfileoperation.h',
+  dependencies: libgtk_dep
+)
+
+test_offscren = executable('testoffscreen',
+  'testoffscreen.c',
+  'gtkoffscreenbox.c',
+  'gtkoffscreenbox.h',
+  dependencies: libgtk_dep
+)
+test_gdkgears = executable('gdkgears',
+  'gdkgears.c',
+  'gtkgears.c',
+  'gtkgears.h',
+  dependencies: libgtk_dep
+)
+test_glblending = executable('testglblending',
+  'testglblending.c',
+  'gtkgears.c',
+  'gtkgears.h',
+  dependencies: libgtk_dep
+)
+
+test_boxcss = executable('testboxcss', 'testboxcss.c', dependencies: libgtk_dep)
+test_entrycompletion = executable('testentrycompletion', 'testentrycompletion.c', dependencies: libgtk_dep)
+test_entryicons = executable('testentryicons', 'testentryicons.c', dependencies: libgtk_dep)
+test_filechooser = executable('testfilechooser', 'testfilechooser.c', dependencies: libgtk_dep)
+test_filechooserbutton = executable('testfilechooserbutton', 'testfilechooserbutton.c', dependencies: 
libgtk_dep)
+test_flowbox = executable('testflowbox', 'testflowbox.c', dependencies: libgtk_dep)
+test_fontselection = executable('testfontselection', 'testfontselection.c', dependencies: libgtk_dep)
+test_fontselectiondialog = executable('testfontselectiondialog', 'testfontselectiondialog.c', dependencies: 
libgtk_dep)
+test_fontchooser = executable('testfontchooser', 'testfontchooser.c', dependencies: libgtk_dep)
+test_fontoptions = executable('testfontoptions', 'testfontoptions.c', dependencies: libgtk_dep)
+test_grid = executable('testgrid', 'testgrid.c', dependencies: libgtk_dep)
+# TODO: Can't find the x11/gdkx.h
+#test_gtk = executable('testgtk', 'testgtk.c', dependencies: libgtk_dep)
+test_treechanging = executable('testtreechanging', 'testtreechanging.c', dependencies: libgtk_dep)
+test_treednd = executable('testtreednd', 'testtreednd.c', dependencies: libgtk_dep)
+test_treeedit = executable('testtreeedit', 'testtreeedit.c', dependencies: libgtk_dep)
+test_treemodel = executable('testtreemodel', 'testtreemodel.c', dependencies: libgtk_dep)
+test_treeview = executable('testtreeview', 'testtreeview.c', dependencies: libgtk_dep)
+test_treefocus = executable('testtreefocus', 'testtreefocus.c', dependencies: libgtk_dep)
+test_treeflow = executable('testtreeflow', 'testtreeflow.c', dependencies: libgtk_dep)
+test_treecolumns = executable('testtreecolumns', 'testtreecolumns.c', dependencies: libgtk_dep)
+test_treecolumnsizing = executable('testtreecolumnsizing', 'testtreecolumnsizing.c', dependencies: 
libgtk_dep)
+test_treesort = executable('testtreesort', 'testtreesort.c', dependencies: libgtk_dep)
+test_toolbar = executable('testtoolbar', 'testtoolbar.c', dependencies: libgtk_dep)
+test_toolbar2 = executable('testtoolbar2', 'testtoolbar2.c', dependencies: libgtk_dep)
+test_menubutton = executable('testmenubutton', 'testmenubutton.c', dependencies: libgtk_dep)
+test_spinbutton = executable('testspinbutton', 'testspinbutton.c', dependencies: libgtk_dep)
+test_statusicon = executable('teststatusicon', 'teststatusicon.c', dependencies: libgtk_dep)
+test_merge = executable('testmerge', 'testmerge.c', dependencies: libgtk_dep)
+test_actions = executable('testactions', 'testactions.c', dependencies: libgtk_dep)
+test_baseline = executable('testbaseline', 'testbaseline.c', dependencies: libgtk_dep)
+test_bbox = executable('testbbox', 'testbbox.c', dependencies: libgtk_dep)
+test_buttons = executable('testbuttons', 'testbuttons.c', dependencies: libgtk_dep)
+test_frame = executable('testframe', 'testframe.c', dependencies: libgtk_dep)
+test_geometry = executable('testgeometry', 'testgeometry.c', dependencies: libgtk_dep)
+test_giconpixbuf = executable('testgiconpixbuf', 'testgiconpixbuf.c', dependencies: libgtk_dep)
+test_iconview = executable('testiconview', 'testiconview.c', dependencies: libgtk_dep)
+test_iconview_keynav = executable('testiconview_keynav', 'testiconview-keynav.c', dependencies: libgtk_dep)
+test_numerableicon = executable('testnumerableicon', 'testnumerableicon.c', dependencies: libgtk_dep)
+test_recentchooser = executable('testrecentchooser', 'testrecentchooser.c', dependencies: libgtk_dep)
+test_grouping = executable('testgrouping', 'testgrouping.c', dependencies: libgtk_dep)
+test_tooltips = executable('testtooltips', 'testtooltips.c', dependencies: libgtk_dep)
+test_recentchoosermenu = executable('testrecentchoosermenu', 'testrecentchoosermenu.c', dependencies: 
libgtk_dep)
+test_volumebutton = executable('testvolumebutton', 'testvolumebutton.c', dependencies: libgtk_dep)
+test_scrolledwindow = executable('testscrolledwindow', 'testscrolledwindow.c', dependencies: libgtk_dep)
+test_cellarea = executable('testcellarea', 'testcellarea.c', dependencies: libgtk_dep)
+test_treemenu = executable('testtreemenu', 'testtreemenu.c', dependencies: libgtk_dep)
+test_offscreenwindow = executable('testoffscreenwindow', 'testoffscreenwindow.c', dependencies: libgtk_dep)
+test_overlay = executable('testoverlay', 'testoverlay.c', dependencies: libgtk_dep)
+test_overlaystyleclass = executable('testoverlaystyleclass', 'testoverlaystyleclass.c', dependencies: 
libgtk_dep)
+test_appchooser = executable('testappchooser', 'testappchooser.c', dependencies: libgtk_dep)
+test_windows = executable('testwindows', 'testwindows.c', dependencies: libgtk_dep)
+test_expand = executable('testexpand', 'testexpand.c', dependencies: libgtk_dep)
+test_expander = executable('testexpander', 'testexpander.c', dependencies: libgtk_dep)
+test_switch = executable('testswitch', 'testswitch.c', dependencies: libgtk_dep)
+test_styleexamples = executable('styleexamples', 'styleexamples.c', dependencies: libgtk_dep)
+test_toplevelembed = executable('testtoplevelembed', 'testtoplevelembed.c', dependencies: libgtk_dep)
+test_textview = executable('testtextview', 'testtextview.c', dependencies: libgtk_dep)
+test_animation = executable('testanimation', 'testanimation.c', dependencies: libgtk_dep)
+test_pixbuf_scale = executable('testpixbuf_scale', 'testpixbuf-scale.c', dependencies: libgtk_dep)
+test_pixbuf_color = executable('testpixbuf_color', 'testpixbuf-color.c', dependencies: libgtk_dep)
+test_pixbuf_save = executable('testpixbuf_save', 'testpixbuf-save.c', dependencies: libgtk_dep)
+test_colorchooser = executable('testcolorchooser', 'testcolorchooser.c', dependencies: libgtk_dep)
+test_colorchooser2 = executable('testcolorchooser2', 'testcolorchooser2.c', dependencies: libgtk_dep)
+test_kineticscrolling = executable('testkineticscrolling', 'testkineticscrolling.c', dependencies: 
libgtk_dep)
+test_stack = executable('teststack', 'teststack.c', dependencies: libgtk_dep)
+test_revealer = executable('testrevealer', 'testrevealer.c', dependencies: libgtk_dep)
+test_revealer2 = executable('testrevealer2', 'testrevealer2.c', dependencies: libgtk_dep)
+test_titlebar = executable('testtitlebar', 'testtitlebar.c', dependencies: libgtk_dep)
+test_windowsize = executable('testwindowsize', 'testwindowsize.c', dependencies: libgtk_dep)
+test_listmodel = executable('listmodel', 'listmodel.c', dependencies: libgtk_dep)
+test_popover = executable('testpopover', 'testpopover.c', dependencies: libgtk_dep)
+test_cairo = executable('testcairo', 'testcairo.c', dependencies: libgtk_dep)
+test_overlayscroll = executable('overlayscroll', 'overlayscroll.c', dependencies: libgtk_dep)
+test_syncscroll = executable('syncscroll', 'syncscroll.c', dependencies: libgtk_dep)
+test_subsurface = executable('subsurface', 'subsurface.c', dependencies: libgtk_dep)
+test_motion_compression = executable('motion-compression', 'motion-compression.c', dependencies: libgtk_dep)
+test_simple = executable('simple', 'simple.c', dependencies: libgtk_dep)
+test_flicker = executable('flicker', 'flicker.c', dependencies: libgtk_dep)
+test_print_editor = executable('print-editor', 'print-editor.c', dependencies: libgtk_dep)
+test_accel = executable('testaccel', 'testaccel.c', dependencies: libgtk_dep)
+test_adjustsize = executable('testadjustsize', 'testadjustsize.c', dependencies: libgtk_dep)
+test_appchooserbutton = executable('testappchooserbutton', 'testappchooserbutton.c', dependencies: 
libgtk_dep)
+test_assistant = executable('testassistant', 'testassistant.c', dependencies: libgtk_dep)
+test_box = executable('testbox', 'testbox.c', dependencies: libgtk_dep)
+test_calendar = executable('testcalendar', 'testcalendar.c', dependencies: libgtk_dep)
+test_clipboard = executable('testclipboard', 'testclipboard.c', dependencies: libgtk_dep)
+test_combo = executable('testcombo', 'testcombo.c', dependencies: libgtk_dep)
+test_combochange = executable('testcombochange', 'testcombochange.c', dependencies: libgtk_dep)
+test_cellrenderertext = executable('testcellrenderertext', 'testcellrenderertext.c', dependencies: 
libgtk_dep)
+test_dialog = executable('testdialog', 'testdialog.c', dependencies: libgtk_dep)
+test_dnd = executable('testdnd', 'testdnd.c', dependencies: libgtk_dep)
+test_dnd2 = executable('testdnd2', 'testdnd2.c', dependencies: libgtk_dep)
+test_ellipsise = executable('testellipsise', 'testellipsise.c', dependencies: libgtk_dep)
+test_emblems = executable('testemblems', 'testemblems.c', dependencies: libgtk_dep)
+test_fullscreen = executable('testfullscreen', 'testfullscreen.c', dependencies: libgtk_dep)
+test_headerbar = executable('testheaderbar', 'testheaderbar.c', dependencies: libgtk_dep)
+test_heightforwidth = executable('testheightforwidth', 'testheightforwidth.c', dependencies: libgtk_dep)
+test_icontheme = executable('testicontheme', 'testicontheme.c', dependencies: libgtk_dep)
+test_image = executable('testimage', 'testimage.c', dependencies: libgtk_dep)
+test_input = executable('testinput', 'testinput.c', dependencies: libgtk_dep)
+test_list = executable('testlist', 'testlist.c', dependencies: libgtk_dep)
+test_list2 = executable('testlist2', 'testlist2.c', dependencies: libgtk_dep)
+test_list3 = executable('testlist3', 'testlist3.c', dependencies: libgtk_dep)
+test_levelbar = executable('testlevelbar', 'testlevelbar.c', dependencies: libgtk_dep)
+test_lockbutton = executable('testlockbutton', 'testlockbutton.c', dependencies: libgtk_dep)
+test_mountoperation = executable('testmountoperation', 'testmountoperation.c', dependencies: libgtk_dep)
+test_multidisplay = executable('testmultidisplay', 'testmultidisplay.c', dependencies: libgtk_dep)
+test_notebookdnd = executable('testnotebookdnd', 'testnotebookdnd.c', dependencies: libgtk_dep)
+test_nouiprint = executable('testnouiprint', 'testnouiprint.c', dependencies: libgtk_dep)
+test_orientable = executable('testorientable', 'testorientable.c', dependencies: libgtk_dep)
+test_richtext = executable('testrichtext', 'testrichtext.c', dependencies: libgtk_dep)
+test_scale = executable('testscale', 'testscale.c', dependencies: libgtk_dep)
+test_selection = executable('testselection', 'testselection.c', dependencies: libgtk_dep)
+test_selectionmode = executable('testselectionmode', 'testselectionmode.c', dependencies: libgtk_dep)
+test_stockbuttonmenu = executable('teststockbuttonmenu', 'teststockbuttonmenu.c', dependencies: libgtk_dep)
+test_stresstest_toolbar = executable('stresstest-oolbar', 'stresstest-toolbar.c', dependencies: libgtk_dep)
+test_verticalcells = executable('testverticalcells', 'testverticalcells.c', dependencies: libgtk_dep)
+test_treestoretest = executable('treestoretest', 'treestoretest.c', dependencies: libgtk_dep)
+test_xinerama = executable('testxinerama', 'testxinerama.c', dependencies: libgtk_dep)
+test_scrolledge = executable('testscrolledge', 'testscrolledge.c', dependencies: libgtk_dep)
+test_noscreen = executable('testnoscreen', 'testnoscreen.c', dependencies: libgtk_dep)
+test_treepos = executable('testtreepos', 'testtreepos.c', dependencies: libgtk_dep)
+test_sensitive = executable('testsensitive', 'testsensitive.c', dependencies: libgtk_dep)
+test_gmenu = executable('testgmenu', 'testgmenu.c', dependencies: libgtk_dep)
+test_logout = executable('testlogout', 'testlogout.c', dependencies: libgtk_dep)
+test_splitheaders = executable('testsplitheaders', 'testsplitheaders.c', dependencies: libgtk_dep)
+test_actionbar = executable('testactionbar', 'testactionbar.c', dependencies: libgtk_dep)
+test_popup = executable('testpopup', 'testpopup.c', dependencies: libgtk_dep)
+test_popupat = executable('testpopupat', 'testpopupat.c', dependencies: libgtk_dep)
+
+# Conditionally compiled tests
+if x11_enabled
+  test_socket = executable('testsocket',
+    'testsocket.c',
+    'testsocket_common.c',
+    dependencies: libgtk_dep
+  )
+  test_socket_child = executable('testsocket_child',
+    'testsocket_child.c',
+    'testsocket_common.c',
+    dependencies: libgtk_dep
+  )
+endif
+
+if os_linux
+  test_fontchooserdialog = executable('testfontchooserdialog', 'testfontchooserdialog.c', dependencies: 
libgtk_dep)
+endif
+
+subdir('visuals')
diff --git a/tests/visuals/meson.build b/tests/visuals/meson.build
new file mode 100644
index 0000000000..3aa3f9b9f5
--- /dev/null
+++ b/tests/visuals/meson.build
@@ -0,0 +1,6 @@
+
+visuals = executable(
+  'visuals',
+  'visuals.c',
+  dependencies: libgtk_dep,
+)
diff --git a/testsuite/css/meson.build b/testsuite/css/meson.build
new file mode 100644
index 0000000000..e90cd77c96
--- /dev/null
+++ b/testsuite/css/meson.build
@@ -0,0 +1,6 @@
+subdir('parser')
+subdir('nodes')
+subdir('style')
+
+test_api = executable('api', 'api.c', dependencies: libgtk_dep)
+test('css/api', test_api)
diff --git a/testsuite/css/nodes/meson.build b/testsuite/css/nodes/meson.build
new file mode 100644
index 0000000000..a7d5050abd
--- /dev/null
+++ b/testsuite/css/nodes/meson.build
@@ -0,0 +1,3 @@
+
+test_nodes = executable('test-css-nodes', 'test-css-nodes.c', dependencies: libgtk_dep)
+test('css/nodes/test-nodes', test_nodes)
diff --git a/testsuite/css/parser/meson.build b/testsuite/css/parser/meson.build
new file mode 100644
index 0000000000..fee149a7c0
--- /dev/null
+++ b/testsuite/css/parser/meson.build
@@ -0,0 +1,3 @@
+
+test_parser = executable('test-css-parser', 'test-css-parser.c', dependencies: libgtk_dep)
+test('css/parser/css-parser', test_parser)
diff --git a/testsuite/css/style/meson.build b/testsuite/css/style/meson.build
new file mode 100644
index 0000000000..db3766a5e3
--- /dev/null
+++ b/testsuite/css/style/meson.build
@@ -0,0 +1,14 @@
+
+cssresources = gnome.compile_resources(
+  'cssresources',
+  'test-css-style.gresource.xml',
+  source_dir: '.',
+)
+
+test_style = executable(
+  'test-css-style',
+  'test-css-style.c',
+  cssresources,
+  dependencies: libgtk_dep,
+)
+test('css/style/test-style', test_style)
diff --git a/testsuite/gdk/meson.build b/testsuite/gdk/meson.build
new file mode 100644
index 0000000000..6c33c5e165
--- /dev/null
+++ b/testsuite/gdk/meson.build
@@ -0,0 +1,24 @@
+
+test_cairo = executable('cairo', 'cairo.c', dependencies: libgdk_dep)
+test('gdk/cairo', test_cairo)
+
+test_display = executable('display', 'display.c', dependencies: libgdk_dep)
+test('gdk/display', test_display)
+
+test_encoding = executable('encoding', 'encoding.c', dependencies: libgdk_dep)
+test('gdk/encoding', test_encoding)
+
+test_keysyms = executable('keysyms', 'keysyms.c', dependencies: libgdk_dep)
+test('gdk/keysyms', test_keysyms)
+
+test_rectangle = executable('rectangle', 'rectangle.c', dependencies: libgdk_dep)
+test('gdk/rectangle', test_rectangle)
+
+test_rgba = executable('rgba', 'rgba.c', dependencies: libgdk_dep)
+test('gdk/rgba', test_rgba)
+
+test_seat = executable('seat', 'seat.c', dependencies: libgdk_dep)
+test('gdk/seat', test_seat)
+
+test_visual = executable('visual', 'visual.c', dependencies: libgdk_dep)
+test('gdk/visual', test_visual)
diff --git a/testsuite/gtk/meson.build b/testsuite/gtk/meson.build
new file mode 100644
index 0000000000..a11db7be76
--- /dev/null
+++ b/testsuite/gtk/meson.build
@@ -0,0 +1,150 @@
+test_accel = executable('accel', 'accel.c', dependencies: libgtk_dep)
+test('gtk/accel test', test_accel)
+
+test_accessible = executable('accessible', 'accessible.c', dependencies: libgtk_dep)
+test('gtk/accessible test', test_accessible)
+
+test_action = executable('action', 'action.c', dependencies: libgtk_dep)
+test('gtk/action test', test_action)
+
+
+test_adjustment = executable('adjustment', 'adjustment.c', dependencies: libgtk_dep)
+test('gtk/adjustment test', test_adjustment)
+
+test_bitmask = executable('bitmask', 'bitmask.c', dependencies: libgtk_dep)
+test('gtk/bitmask test', test_bitmask)
+
+test_builder = executable('builder', 'builder.c', dependencies: libgtk_dep)
+test('gtk/builder test', test_builder)
+
+test_builderparser = executable(
+  'builderparser',
+  'builderparser.c',
+  dependencies: libgtk_dep,
+  link_with: libgtk,
+
+)
+test(
+  'gtk/builderparser test',
+  test_builderparser,
+  env: [
+      'G_TEST_SRCDIR='+meson.source_root(),
+      'G_TEST_BUILDDIR='+meson.build_root()
+  ]
+)
+
+test_cellarea = executable('cellarea', 'cellarea.c', dependencies: libgtk_dep)
+test('gtk/cellarea test', test_cellarea)
+
+test_check_icon_names = executable('check_icon_names', 'check-icon-names.c', dependencies: libgtk_dep)
+test('gtk/check_icon_names test', test_check_icon_names)
+
+test_check_cursor_names = executable('check_cursor_names', 'check-cursor-names.c', dependencies: libgtk_dep)
+test('gtk/check_cursor_names test', test_check_cursor_names)
+
+test_clipboard = executable('clipboard', 'clipboard.c', dependencies: libgtk_dep)
+test('gtk/clipboard test', test_clipboard)
+
+test_cssprovider = executable('cssprovider', 'cssprovider.c', dependencies: libgtk_dep)
+test('gtk/cssprovider test', test_cssprovider)
+
+test_defaultvalue = executable('defaultvalue', 'defaultvalue.c', dependencies: libgtk_dep)
+test('gtk/defaultvalue test', test_defaultvalue)
+
+test_entry = executable('entry', 'entry.c', dependencies: libgtk_dep)
+test('gtk/entry test', test_entry)
+
+test_firefox_stylecontext = executable('firefox_stylecontext', 'firefox-stylecontext.c', dependencies: 
libgtk_dep)
+test('gtk/firefox_stylecontext test', test_firefox_stylecontext)
+
+test_floating = executable('floating', 'floating.c', dependencies: libgtk_dep)
+test('gtk/floating test', test_floating)
+
+test_focus = executable('focus', 'focus.c', dependencies: libgtk_dep)
+test('gtk/focus test', test_focus)
+
+test_gestures = executable('gestures', 'gestures.c', dependencies: libgtk_dep)
+test('gtk/gestures test', test_gestures)
+
+test_grid = executable('grid', 'grid.c', dependencies: libgtk_dep)
+test('gtk/grid test', test_grid)
+
+test_gtkmenu = executable('gtkmenu', 'gtkmenu.c', dependencies: libgtk_dep)
+test('gtk/gtkmenu test', test_gtkmenu)
+
+test_icontheme = executable('icontheme', 'icontheme.c', dependencies: libgtk_dep)
+test('gtk/icontheme test', test_icontheme)
+
+test_keyhash = executable('keyhash', 'keyhash.c', dependencies: libgtk_dep)
+test('gtk/keyhash test', test_keyhash)
+
+test_listbox = executable('listbox', 'listbox.c', dependencies: libgtk_dep)
+test('gtk/listbox test', test_listbox)
+
+test_notify = executable('notify', 'notify.c', dependencies: libgtk_dep)
+test('gtk/notify test', test_notify)
+
+test_no_gtk_init = executable('no_gtk_init', 'no-gtk-init.c', dependencies: libgtk_dep)
+test('gtk/no_gtk_init test', test_no_gtk_init)
+
+test_object = executable('object', 'object.c', dependencies: libgtk_dep)
+test('gtk/object test', test_object)
+
+test_objects_finalize = executable('objects_finalize', 'objects-finalize.c', dependencies: libgtk_dep)
+test('gtk/objects_finalize test', test_objects_finalize)
+
+test_papersize = executable('papersize', 'papersize.c', dependencies: libgtk_dep)
+test('gtk/papersize test', test_papersize)
+
+test_rbtree = executable('rbtree', 'rbtree.c', dependencies: libgtk_dep)
+test('gtk/rbtree test', test_rbtree)
+
+test_recentmanager = executable('recentmanager', 'recentmanager.c', dependencies: libgtk_dep)
+test('gtk/recentmanager test', test_recentmanager)
+
+test_regression_tests = executable('regression_tests', 'regression-tests.c', dependencies: libgtk_dep)
+test('gtk/regression_tests test', test_regression_tests)
+
+test_scrolledwindow = executable('scrolledwindow', 'scrolledwindow.c', dependencies: libgtk_dep)
+test('gtk/scrolledwindow test', test_scrolledwindow)
+
+test_spinbutton = executable('spinbutton', 'spinbutton.c', dependencies: libgtk_dep)
+test('gtk/spinbutton test', test_spinbutton)
+
+test_stylecontext = executable('stylecontext', 'stylecontext.c', dependencies: libgtk_dep)
+test('gtk/stylecontext test', test_stylecontext)
+
+test_templates = executable('templates', 'templates.c', dependencies: libgtk_dep)
+test('gtk/templates test', test_templates)
+
+test_textbuffer = executable('textbuffer', 'textbuffer.c', dependencies: libgtk_dep)
+test('gtk/textbuffer test', test_textbuffer)
+
+test_textiter = executable('textiter', 'textiter.c', dependencies: libgtk_dep)
+test('gtk/textiter test', test_textiter)
+
+test_treemodel = executable(
+  'treemodel',
+  'treemodel.c', 'liststore.c', 'treestore.c', 'filtermodel.c',
+  'modelrefcount.c', 'sortmodel.c', 'gtktreemodelrefcount.c',
+  dependencies: libgtk_dep
+)
+test('gtk/treemodel test', test_treemodel)
+
+test_treepath = executable('treepath', 'treepath.c', dependencies: libgtk_dep)
+test('gtk/treepath test', test_treepath)
+
+test_treeview = executable('treeview', 'treeview.c', dependencies: libgtk_dep)
+test('gtk/treeview test', test_treeview)
+
+test_typename = executable('typename', 'typename.c', dependencies: libgtk_dep)
+test('gtk/typename test', test_typename)
+
+test_window = executable('window', 'window.c', dependencies: libgtk_dep)
+test('gtk/window test', test_window)
+
+test_displayclose = executable('displayclose', 'displayclose.c', dependencies: libgtk_dep)
+test('gtk/displayclose test', test_displayclose)
+
+test_revealer_size = executable('revealer_size', 'revealer-size.c', dependencies: libgtk_dep)
+test('gtk/revealer_size test', test_revealer_size)
diff --git a/testsuite/meson.build b/testsuite/meson.build
new file mode 100644
index 0000000000..a3507d5e06
--- /dev/null
+++ b/testsuite/meson.build
@@ -0,0 +1,3 @@
+subdir('gtk')
+subdir('gdk')
+subdir('css')


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