diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-03-08 18:44:46 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-03-08 18:44:46 +0000 |
commit | bdd35c16952fcb57bcfc53d62f266ecc3899db72 (patch) | |
tree | e17a65c875ba7dc1b2dd2a0f554106a4eab1e21b | |
parent | 14a5c78d805ff712389ebf37d9f0fbaeda483aec (diff) | |
parent | 432e8664e1eb24c81bbcf1927f0de257bae7e038 (diff) | |
download | gtk+-bdd35c16952fcb57bcfc53d62f266ecc3899db72.tar.gz |
Merge branch 'fix-msvc-older-glib' into 'main'
modules/media: Fix Visual Studio builds with older GLib (<= 2.74.x)
See merge request GNOME/gtk!5605
-rw-r--r-- | meson.build | 7 | ||||
-rw-r--r-- | modules/media/gtkffmediafile.c | 9 | ||||
-rw-r--r-- | modules/media/gtkgstmediafile.c | 9 |
3 files changed, 25 insertions, 0 deletions
diff --git a/meson.build b/meson.build index e89ce6872a..13517714b7 100644 --- a/meson.build +++ b/meson.build @@ -370,6 +370,13 @@ glib_dep = dependency('glib-2.0', version: glib_req) gobject_dep = dependency('gobject-2.0', version: glib_req) if os_win32 giowin32_dep = dependency('gio-windows-2.0', version: glib_req, required: win32_enabled) + if giowin32_dep.version().version_compare('<2.75.0') + if cc.get_id() == 'msvc' and get_option('default_library') != 'static' + # Override _GLIB_EXTERN on Visual Studio for media modules for glib <= 2.74.x, so that we + # avoid error C2375 (redefinition; different linkage) when building the g_io_module_*() bits + cdata.set('MODULES_OVERRIDE_GLIB_EXTERN', true) + endif + endif endif if os_unix giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false) diff --git a/modules/media/gtkffmediafile.c b/modules/media/gtkffmediafile.c index 2839cb8174..0103e5bd16 100644 --- a/modules/media/gtkffmediafile.c +++ b/modules/media/gtkffmediafile.c @@ -19,6 +19,15 @@ #include "config.h" +/* + * Sadly, we need this to build on Visual Studio against glib-2.74.x or earlier, + * otherwise the build will fail when building the g_io_module_*() bits with error C2375 + * (redefinition; different linkage). This must be before including the Gio headers. + */ +#if defined (_MSC_VER) && defined (MODULES_OVERRIDE_GLIB_EXTERN) +# define _GLIB_EXTERN __declspec(dllexport) extern +#endif + #include "gtkffmediafileprivate.h" #include <glib/gi18n-lib.h> diff --git a/modules/media/gtkgstmediafile.c b/modules/media/gtkgstmediafile.c index 5487bb0571..7353539ef6 100644 --- a/modules/media/gtkgstmediafile.c +++ b/modules/media/gtkgstmediafile.c @@ -19,6 +19,15 @@ #include "config.h" +/* + * Sadly, we need this to build on Visual Studio against glib-2.74.x or earlier, + * otherwise the build will fail when building the g_io_module_*() bits with error C2375 + * (redefinition; different linkage). This must be before including the Gio headers. + */ +#if defined (_MSC_VER) && defined (MODULES_OVERRIDE_GLIB_EXTERN) +# define _GLIB_EXTERN __declspec(dllexport) extern +#endif + #include "gtkgstmediafileprivate.h" #include "gtkgstpaintableprivate.h" |