[glib: 1/2] Meson: Override every dependency glib provides
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/2] Meson: Override every dependency glib provides
- Date: Thu, 9 Apr 2020 11:52:01 +0000 (UTC)
commit 10280deebdb6bfa96e24325548c15a6085d6bdf2
Author: Xavier Claessens <xavier claessens collabora com>
Date: Sun Apr 5 00:34:04 2020 -0400
Meson: Override every dependency glib provides
Meson 0.54.0 added a new method meson.override_dependency() that must be
used to ensure dependency consistency. This patch ensures a project that
depends on glib will never link to a mix of system and subproject
libraries. It would happen in such cases:
The system has glib 2.40 installed, and a project does:
dependency('glib-2.0', version: '>=2.60',
fallback: ['glib', 'glib_dep'])
dependency('gobject-2.0')
The first call will configure glib subproject because the system libglib
is too old, but the 2nd call will return system libgobject.
By overriding 'gobject-2.0' dependency while configuring glib subproject
during the first call, meson knows that on the 2nd call it must return
the subproject dependency instead of system dependency.
This also has the nice side effect that with Meson >0.54.0 an
application depending on glib can declare the fallback without knowing
the dependency variable name: dependency('glib-2.0', fallback: 'glib').
gio/meson.build | 19 +++++++++++++++----
glib/meson.build | 4 ++++
gmodule/meson.build | 6 ++++++
gobject/meson.build | 4 ++++
gthread/meson.build | 4 ++++
5 files changed, 33 insertions(+), 4 deletions(-)
---
diff --git a/gio/meson.build b/gio/meson.build
index 2ef60eda9..39e246b9b 100644
--- a/gio/meson.build
+++ b/gio/meson.build
@@ -813,6 +813,10 @@ endif
schemas_subdir = join_paths('glib-2.0', 'schemas')
+libgio_dep = declare_dependency(link_with : libgio,
+ dependencies : [libgmodule_dep, libgobject_dep, gioenumtypes_dep],
+ include_directories : [gioinc])
+
pkg.generate(libgio,
libraries_private : [osx_ldflags],
requires : ['glib-2.0', 'gobject-2.0'],
@@ -835,6 +839,11 @@ pkg.generate(libgio,
description : 'glib I/O library',
)
+if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('gio-2.0', libgio_dep)
+endif
+
+
if host_system == 'windows'
pkg.generate(requires : ['gobject-2.0', 'gmodule-no-export-2.0', 'gio-2.0'],
subdirs : ['gio-win32-2.0'],
@@ -844,6 +853,9 @@ if host_system == 'windows'
name : 'GIO Windows specific APIs',
description : 'Windows specific headers for glib I/O library',
)
+ if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('gio-win32-2.0', libgio_dep)
+ endif
else
pkg.generate(requires : ['gobject-2.0', 'gio-2.0'],
subdirs : ['gio-unix-2.0'],
@@ -853,12 +865,11 @@ else
name : 'GIO unix specific APIs',
description : 'unix specific headers for glib I/O library',
)
+ if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('gio-unix-2.0', libgio_dep)
+ endif
endif
-libgio_dep = declare_dependency(link_with : libgio,
- dependencies : [libgmodule_dep, libgobject_dep, gioenumtypes_dep],
- include_directories : [gioinc])
-
if host_system == 'windows'
# Hack till https://github.com/mesonbuild/meson/issues/2324 is fixed
libgiounix_dep = dependency('', required : false)
diff --git a/glib/meson.build b/glib/meson.build
index aaf5f00f5..3869f7a9d 100644
--- a/glib/meson.build
+++ b/glib/meson.build
@@ -385,6 +385,10 @@ pkg.generate(libglib,
description : 'C Utility Library',
)
+if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('glib-2.0', libglib_dep)
+endif
+
# On Windows, glib needs a spawn helper for g_spawn* API
if host_system == 'windows'
if host_machine.cpu_family() == 'x86'
diff --git a/gmodule/meson.build b/gmodule/meson.build
index 9801c9476..b1a5a11a9 100644
--- a/gmodule/meson.build
+++ b/gmodule/meson.build
@@ -120,3 +120,9 @@ pkg.generate(libraries : [libgmodule, export_dynamic_ldflags],
libgmodule_dep = declare_dependency(link_with : libgmodule,
include_directories : [gmoduleinc],
dependencies : [libglib_dep])
+
+if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('gmodule-no-export-2.0', libgmodule_dep)
+ meson.override_dependency('gmodule-export-2.0', libgmodule_dep)
+ meson.override_dependency('gmodule-2.0', libgmodule_dep)
+endif
diff --git a/gobject/meson.build b/gobject/meson.build
index 85e283bab..536f15393 100644
--- a/gobject/meson.build
+++ b/gobject/meson.build
@@ -143,6 +143,10 @@ libgobject_dep = declare_dependency(link_with : libgobject,
include_directories : [gobjectinc],
dependencies : [libglib_dep, glib_enumtypes_dep])
+if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('gobject-2.0', libgobject_dep)
+endif
+
executable('gobject-query', 'gobject-query.c',
install : true,
dependencies : [libglib_dep, libgobject_dep])
diff --git a/gthread/meson.build b/gthread/meson.build
index d4fca40b8..808e889cc 100644
--- a/gthread/meson.build
+++ b/gthread/meson.build
@@ -34,3 +34,7 @@ pkg.generate(libgthread,
)
libgthread_dep = declare_dependency(link_with : libgthread)
+
+if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('gthread-2.0', libgthread_dep)
+endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]