forked from AuroraMiddleware/gtk
modules/media: Fix Visual Studio builds with older GLib
The current definitions of the g_io_module_*() symbols do not build on Visual Studio when building against GLib earlier than 2.75.0 due to the way how these symbols are decorated in the GLib headers, as Visual Studio does not allow symbols that were previously marked with 'extern' (or so) to be marked with anything that is symantically different later. As a result, if we are using Visual Studio and glib-2.74.x or earlier, override _GLIB_EXTERN as appropriate in the modules/media sources before including the GIO headers. This sadly, means that we need a configure-time check as it would have been too late if we checked the GLib version using G_VERSION_CHECK macro, as the GIO headers would have been included already. There are similar items in the print backends, but we will not attempt to update these files as they are not meant to be built for Windows.
This commit is contained in:
parent
6d2c5e51e0
commit
432e8664e1
@ -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)
|
||||
|
@ -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>
|
||||
|
@ -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"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user