[gtk/master.msvc: 2435/2436] modules: Fix build on Visual Studio



commit c7dd44e0bc4693d9aee6309db0dd4cc66ebc2520
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Thu Jun 4 16:27:56 2020 +0800

    modules: Fix build on Visual Studio
    
    Visual Studio does not allow decorating functions with '__declspec (dllexport)'
    if a prototype exists and is not decorated with '__declspec (dllexport)' as
    well, so we cannot just decorate g_io_module_[load|unload|query] in the various
    module sources with G_MODULE_EXPORT because the prototypes of these functions
    have been marked with _GLIB_EXTERN, which equates to 'extern' unless overridden
    
    Fix this by overriding _GLIB_EXTERN with _GDK_EXTERN, since we are including
    config.h in all the sources, which will pretty much assure us that _GDK_EXTERN
    will be defined as appropriate to export these 3 symbols from the modules.
    
    Do this across the board for all modules, even if they are not buildable on
    Visual Studio nor Windows, for consistency's sake.

 modules/media/gtkffmediafile.c                    | 3 ---
 modules/media/gtkgstmediafile.c                   | 3 ---
 modules/media/meson.build                         | 2 +-
 modules/printbackends/gtkprintbackendcloudprint.c | 3 ---
 modules/printbackends/gtkprintbackendcups.c       | 3 ---
 modules/printbackends/gtkprintbackendfile.c       | 3 ---
 modules/printbackends/gtkprintbackendlpr.c        | 3 ---
 modules/printbackends/meson.build                 | 1 +
 8 files changed, 2 insertions(+), 19 deletions(-)
---
diff --git a/modules/media/gtkffmediafile.c b/modules/media/gtkffmediafile.c
index cf7a03489f..c8f2066b5e 100644
--- a/modules/media/gtkffmediafile.c
+++ b/modules/media/gtkffmediafile.c
@@ -171,7 +171,6 @@ G_DEFINE_TYPE_EXTENDED (GtkFfMediaFile, gtk_ff_media_file, GTK_TYPE_MEDIA_FILE,
                         G_IMPLEMENT_INTERFACE (GDK_TYPE_PAINTABLE,
                                                gtk_ff_media_file_paintable_init))
 
-G_MODULE_EXPORT
 void
 g_io_module_load (GIOModule *module)
 {
@@ -187,7 +186,6 @@ g_io_module_load (GIOModule *module)
                                   0);
 }
 
-G_MODULE_EXPORT
 G_GNUC_NORETURN
 void
 g_io_module_unload (GIOModule *module)
@@ -195,7 +193,6 @@ g_io_module_unload (GIOModule *module)
   g_assert_not_reached ();
 }
 
-G_MODULE_EXPORT
 char **
 g_io_module_query (void)
 {
diff --git a/modules/media/gtkgstmediafile.c b/modules/media/gtkgstmediafile.c
index 5988ef38c3..b094796fd5 100644
--- a/modules/media/gtkgstmediafile.c
+++ b/modules/media/gtkgstmediafile.c
@@ -97,7 +97,6 @@ G_DEFINE_TYPE_EXTENDED (GtkGstMediaFile, gtk_gst_media_file, GTK_TYPE_MEDIA_FILE
                         G_IMPLEMENT_INTERFACE (GDK_TYPE_PAINTABLE,
                                                gtk_gst_media_file_paintable_init))
 
-G_MODULE_EXPORT
 void
 g_io_module_load (GIOModule *module)
 {
@@ -109,7 +108,6 @@ g_io_module_load (GIOModule *module)
                                   10);
 }
 
-G_MODULE_EXPORT
 G_GNUC_NORETURN
 void
 g_io_module_unload (GIOModule *module)
@@ -117,7 +115,6 @@ g_io_module_unload (GIOModule *module)
   g_assert_not_reached ();
 }
 
-G_MODULE_EXPORT
 char **
 g_io_module_query (void)
 {
diff --git a/modules/media/meson.build b/modules/media/meson.build
index c6dbed1f26..e1f4e1ca08 100644
--- a/modules/media/meson.build
+++ b/modules/media/meson.build
@@ -23,7 +23,7 @@ endif
 media_subdir = 'gtk-4.0/@0@/media'.format(gtk_binary_version)
 media_install_dir = join_paths(get_option('libdir'), media_subdir)
 
-extra_c_args = ['-DGTK_COMPILATION']
+extra_c_args = ['-DGTK_COMPILATION', '-D_GLIB_EXTERN=_GDK_EXTERN']
 extra_c_args += common_cflags
 
 if media_backends.contains('ffmpeg')
diff --git a/modules/printbackends/gtkprintbackendcloudprint.c 
b/modules/printbackends/gtkprintbackendcloudprint.c
index 99dc5f3665..6a5d7755af 100644
--- a/modules/printbackends/gtkprintbackendcloudprint.c
+++ b/modules/printbackends/gtkprintbackendcloudprint.c
@@ -103,7 +103,6 @@ void                 t_goa_account_free                 (gpointer data);
 
 G_DEFINE_DYNAMIC_TYPE (GtkPrintBackendCloudprint, gtk_print_backend_cloudprint, GTK_TYPE_PRINT_BACKEND)
 
-G_MODULE_EXPORT
 void
 g_io_module_load (GIOModule *module)
 {
@@ -119,13 +118,11 @@ g_io_module_load (GIOModule *module)
                                   10);
 }
 
-G_MODULE_EXPORT
 void
 g_io_module_unload (GIOModule *module)
 {
 }
 
-G_MODULE_EXPORT
 char **
 g_io_module_query (void)
 {
diff --git a/modules/printbackends/gtkprintbackendcups.c b/modules/printbackends/gtkprintbackendcups.c
index 58dd95bbbe..893ced4c16 100644
--- a/modules/printbackends/gtkprintbackendcups.c
+++ b/modules/printbackends/gtkprintbackendcups.c
@@ -236,7 +236,6 @@ static void                 secrets_service_vanished_cb             (GDBusConnec
 
 G_DEFINE_DYNAMIC_TYPE(GtkPrintBackendCups, gtk_print_backend_cups, GTK_TYPE_PRINT_BACKEND)
 
-G_MODULE_EXPORT
 void
 g_io_module_load (GIOModule *module)
 {
@@ -251,13 +250,11 @@ g_io_module_load (GIOModule *module)
                                   10);
 }
 
-G_MODULE_EXPORT
 void
 g_io_module_unload (GIOModule *module)
 {
 }
 
-G_MODULE_EXPORT
 char **
 g_io_module_query (void)
 {
diff --git a/modules/printbackends/gtkprintbackendfile.c b/modules/printbackends/gtkprintbackendfile.c
index 3486805688..071ebec359 100644
--- a/modules/printbackends/gtkprintbackendfile.c
+++ b/modules/printbackends/gtkprintbackendfile.c
@@ -102,7 +102,6 @@ static GtkPageSetup *       file_printer_get_default_page_size     (GtkPrinter
 
 G_DEFINE_DYNAMIC_TYPE(GtkPrintBackendFile, gtk_print_backend_file, GTK_TYPE_PRINT_BACKEND)
 
-G_MODULE_EXPORT
 void
 g_io_module_load (GIOModule *module)
 {
@@ -116,13 +115,11 @@ g_io_module_load (GIOModule *module)
                                   10);
 }
 
-G_MODULE_EXPORT
 void
 g_io_module_unload (GIOModule *module)
 {
 }
 
-G_MODULE_EXPORT
 char **
 g_io_module_query (void)
 {
diff --git a/modules/printbackends/gtkprintbackendlpr.c b/modules/printbackends/gtkprintbackendlpr.c
index 0626e594fa..cef1501c30 100644
--- a/modules/printbackends/gtkprintbackendlpr.c
+++ b/modules/printbackends/gtkprintbackendlpr.c
@@ -83,7 +83,6 @@ static void                 gtk_print_backend_lpr_print_stream    (GtkPrintBacke
 
 G_DEFINE_DYNAMIC_TYPE (GtkPrintBackendLpr, gtk_print_backend_lpr, GTK_TYPE_PRINT_BACKEND)
 
-G_MODULE_EXPORT
 void
 g_io_module_load (GIOModule *module)
 {
@@ -97,13 +96,11 @@ g_io_module_load (GIOModule *module)
                                   10);
 }
 
-G_MODULE_EXPORT
 void
 g_io_module_unload (GIOModule *module)
 {
 }
 
-G_MODULE_EXPORT
 char **
 g_io_module_query (void)
 {
diff --git a/modules/printbackends/meson.build b/modules/printbackends/meson.build
index 643a8ba888..0471cb1baa 100644
--- a/modules/printbackends/meson.build
+++ b/modules/printbackends/meson.build
@@ -68,6 +68,7 @@ printbackends_args = [
   '-DGTK_COMPILATION',
   '-DGTK_DISABLE_DEPRECATION_WARNINGS',
   '-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED',
+  '-D_GLIB_EXTERN=_GDK_EXTERN',
 ] + common_cflags
 
 if print_backends.contains('cups')


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