giomodules: g_io_module_* must always be exported

Those symbols are not used by GIO itself but by external modules.
This commit is contained in:
Xavier Claessens 2022-10-05 17:40:57 -04:00
parent e5565f6635
commit 90fcbc7dfc
7 changed files with 23 additions and 18 deletions

View File

@ -103,7 +103,11 @@ GIO_AVAILABLE_IN_ALL
GTypeClass* g_io_extension_ref_class (GIOExtension *extension); GTypeClass* g_io_extension_ref_class (GIOExtension *extension);
/* API for the modules to implement */ /* API for the modules to implement.
* Note that those functions are not implemented by libgio, they are declared
* here to be implemented in modules, that's why it uses G_MODULE_EXPORT
* instead of GIO_AVAILABLE_IN_ALL.
*/
/** /**
* g_io_module_load: (skip) * g_io_module_load: (skip)
@ -123,7 +127,7 @@ GTypeClass* g_io_extension_ref_class (GIOExtension
* statically. The old symbol names continue to be supported, but cannot be used * statically. The old symbol names continue to be supported, but cannot be used
* for static builds. * for static builds.
**/ **/
GIO_AVAILABLE_IN_ALL G_MODULE_EXPORT
void g_io_module_load (GIOModule *module); void g_io_module_load (GIOModule *module);
/** /**
@ -143,7 +147,7 @@ void g_io_module_load (GIOModule *module);
* statically. The old symbol names continue to be supported, but cannot be used * statically. The old symbol names continue to be supported, but cannot be used
* for static builds. * for static builds.
**/ **/
GIO_AVAILABLE_IN_ALL G_MODULE_EXPORT
void g_io_module_unload (GIOModule *module); void g_io_module_unload (GIOModule *module);
/** /**
@ -187,7 +191,7 @@ void g_io_module_unload (GIOModule *module);
* *
* Since: 2.24 * Since: 2.24
**/ **/
GIO_AVAILABLE_IN_ALL G_MODULE_EXPORT
char **g_io_module_query (void); char **g_io_module_query (void);
G_END_DECLS G_END_DECLS

View File

@ -3,7 +3,7 @@
/* This is the same check that's done in configure to create config.h */ /* This is the same check that's done in configure to create config.h */
#ifdef _WIN32 #ifdef _WIN32
#ifdef GLIB_STATIC_COMPILATION #ifdef GLIB_TEST_STATIC_COMPILATION
#define GLIB_TEST_EXPORT_SYMBOL extern #define GLIB_TEST_EXPORT_SYMBOL extern
#else #else
#ifdef _MSC_VER #ifdef _MSC_VER

View File

@ -20,8 +20,6 @@
* if advised of the possibility of such damage. * if advised of the possibility of such damage.
*/ */
#include "config.h" /* for _GLIB_EXTERN */
#include <gio/gio.h> #include <gio/gio.h>
#include "symbol-visibility.h" #include "symbol-visibility.h"

View File

@ -20,8 +20,6 @@
* if advised of the possibility of such damage. * if advised of the possibility of such damage.
*/ */
#include "config.h" /* for _GLIB_EXTERN */
#include <gio/gio.h> #include <gio/gio.h>
#include "symbol-visibility.h" #include "symbol-visibility.h"

View File

@ -6,8 +6,6 @@
* g_io_module*() symbols, is defined to be _GLIB_EXTERN, * g_io_module*() symbols, is defined to be _GLIB_EXTERN,
* which must be overridden to export the symbols. * which must be overridden to export the symbols.
*/ */
#include "modules/symbol-visibility.h"
#define _GLIB_EXTERN GLIB_TEST_EXPORT_SYMBOL
#include <gio/gio.h> #include <gio/gio.h>

View File

@ -178,6 +178,11 @@
* non-default * non-default
* [visibility flag](https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fvisibility-1260) * [visibility flag](https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fvisibility-1260)
* such as `hidden`. * such as `hidden`.
*
* This macro must only be used when compiling a shared module. Modules that
* support both shared and static linking should define their own macro that
* expands to %G_MODULE_EXPORT when compiling the shared module, but is empty
* when compiling the static module on Windows.
*/ */
/** /**

View File

@ -35,14 +35,16 @@ G_BEGIN_DECLS
/* exporting and importing functions, this is special cased /* exporting and importing functions, this is special cased
* to feature Windows dll stubs. * to feature Windows dll stubs.
*/ */
#define G_MODULE_IMPORT extern #if defined(_WIN32) || defined(__CYGWIN__)
#ifdef G_PLATFORM_WIN32
# define G_MODULE_EXPORT __declspec(dllexport) # define G_MODULE_EXPORT __declspec(dllexport)
# define G_MODULE_IMPORT __declspec(dllimport) extern
#elif __GNUC__ >= 4 #elif __GNUC__ >= 4
# define G_MODULE_EXPORT __attribute__((visibility("default"))) # define G_MODULE_EXPORT __attribute__((visibility("default")))
#else /* !G_PLATFORM_WIN32 && __GNUC__ < 4 */ # define G_MODULE_IMPORT extern
#else /* !defined(_WIN32) && !defined(__CYGWIN__) && __GNUC__ < 4 */
# define G_MODULE_EXPORT # define G_MODULE_EXPORT
#endif /* !G_PLATFORM_WIN32 */ # define G_MODULE_IMPORT extern
#endif
/** /**
* GModuleFlags: * GModuleFlags: