From aa3e8ee097d477446cbe8d5a94c8e4dc8cef8cbb Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Thu, 7 Sep 2017 23:53:41 +0530 Subject: [PATCH] build: Add dependency fallbacks for libs with meson ports With these changes gtk+ builds for me using fallbacks for all libraries with fallbacks available. Needs the following changes: https://github.com/ebassi/graphene/pull/109 (graphene) https://bugzilla.gnome.org/show_bug.cgi?id=787414 (pango) https://github.com/mesonbuild/meson/pull/2291 (will be in meson 0.42.1) https://bugzilla.gnome.org/show_bug.cgi?id=787416 --- gdk/meson.build | 1 + gtk/meson.build | 1 + meson.build | 34 ++++++++++++++++++++++++---------- subprojects/gdk-pixbuf.wrap | 5 +++++ subprojects/glib.wrap | 5 +++++ subprojects/pango.wrap | 5 +++++ 6 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 subprojects/gdk-pixbuf.wrap create mode 100644 subprojects/glib.wrap create mode 100644 subprojects/pango.wrap diff --git a/gdk/meson.build b/gdk/meson.build index f9afe7208c..16a1a37982 100644 --- a/gdk/meson.build +++ b/gdk/meson.build @@ -156,6 +156,7 @@ gdk_deps = [ pango_dep, cairogobj_dep, glib_dep, + gobject_dep, epoxy_dep, fontconfig_dep, giounix_dep, diff --git a/gtk/meson.build b/gtk/meson.build index cb04e90321..20b0410555 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -814,6 +814,7 @@ gtk_deps = [ gmodule_dep, giounix_dep, glib_dep, + gobject_dep, atkbridge_dep, pangocairo_dep, pango_dep, diff --git a/meson.build b/meson.build index 0b1df53499..55dcdba7fa 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,9 @@ project('gtk+-4.0', 'c', default_options: [ 'buildtype=debugoptimized', 'warning_level=1', - 'c_std=c99', + # We only need c99, but glib needs GNU-specific features + # https://github.com/mesonbuild/meson/issues/2289 + 'c_std=gnu99', ], meson_version : '>= 0.40.0', license: 'LGPLv2.1+') @@ -313,18 +315,27 @@ gtkinc = include_directories('gtk') testinc = include_directories('tests') # Dependencies -glib_dep = dependency('glib-2.0', version: glib_req) -giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false) -pango_dep = dependency('pango', version: pango_req) -pangoft_dep = dependency('pangoft2', required: wayland_enabled or x11_enabled) +glib_dep = dependency('glib-2.0', version: glib_req, + fallback : ['glib', 'libglib_dep']) +gobject_dep = dependency('gobject-2.0', version: glib_req, + fallback : ['glib', 'libgobject_dep']) +giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false, + fallback : ['glib', 'libgio_dep']) +gmodule_dep = dependency('gmodule-2.0', version: glib_req, + fallback : ['glib', 'libgmodule_dep']) cairo_dep = dependency('cairo', version: cairo_req) -pangocairo_dep = dependency('pangocairo', version: cairo_req) cairogobj_dep = dependency('cairo-gobject', version: cairo_req) -pixbuf_dep = dependency('gdk-pixbuf-2.0', version: gdk_pixbuf_req) +pango_dep = dependency('pango', version: pango_req, + fallback : ['pango', 'libpango_dep']) +pangoft_dep = dependency('pangoft2', required: wayland_enabled or x11_enabled, + fallback : ['pango', 'libpangoft2_dep']) +pangocairo_dep = dependency('pangocairo', version: cairo_req, + fallback : ['pango', 'libpangocairo_dep']) +pixbuf_dep = dependency('gdk-pixbuf-2.0', version: gdk_pixbuf_req, + fallback : ['gdk-pixbuf', 'gdkpixbuf_dep']) epoxy_dep = dependency('epoxy', version: epoxy_req, fallback: ['libepoxy', 'libepoxy_dep']) atk_dep = dependency('atk', version: atk_req) -gmodule_dep = dependency('gmodule-2.0', version: glib_req) harfbuzz_dep = dependency('harfbuzz', version: '>= 0.9', required: false) xkbdep = dependency('xkbcommon', version: xkbcommon_req) graphene_dep = dependency('graphene-gobject-1.0', version: graphene_req, @@ -483,8 +494,11 @@ if win32_enabled backend_immodules += ['ime'] endif -# Check for bind_textdomain_codeset, including -lintl if GLib brings it in -if cc.has_function('bind_textdomain_codeset', dependencies: glib_dep) +# Check for bind_textdomain_codeset, including -lintl if GLib brings it in by +# doing the same check as glib. We can't check that by linking to glib because +# it might be a subproject and hence not built yet. +libintl_dep = cc.find_library('intl', required : false) +if cc.has_function('bind_textdomain_codeset', dependencies: libintl_dep) cdata.set('HAVE_BIND_TEXTDOMAIN_CODESET', 1) endif diff --git a/subprojects/gdk-pixbuf.wrap b/subprojects/gdk-pixbuf.wrap new file mode 100644 index 0000000000..1d251c53ff --- /dev/null +++ b/subprojects/gdk-pixbuf.wrap @@ -0,0 +1,5 @@ +[wrap-git] +directory=gdk-pixbuf +url=https://git.gnome.org/browse/gdk-pixbuf +push-url=ssh://git.gnome.org/git/gdk-pixbuf +revision=origin/master diff --git a/subprojects/glib.wrap b/subprojects/glib.wrap new file mode 100644 index 0000000000..17aa35a379 --- /dev/null +++ b/subprojects/glib.wrap @@ -0,0 +1,5 @@ +[wrap-git] +directory=glib +url=https://git.gnome.org/browse/glib +push-url=ssh://git.gnome.org/git/glib +revision=origin/master diff --git a/subprojects/pango.wrap b/subprojects/pango.wrap new file mode 100644 index 0000000000..e7bc1733e9 --- /dev/null +++ b/subprojects/pango.wrap @@ -0,0 +1,5 @@ +[wrap-git] +directory=pango +url=https://git.gnome.org/browse/pango +push-url=ssh://git.gnome.org/git/pango +revision=origin/master