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);
/* 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)
@ -123,7 +127,7 @@ GTypeClass* g_io_extension_ref_class (GIOExtension
* statically. The old symbol names continue to be supported, but cannot be used
* for static builds.
**/
GIO_AVAILABLE_IN_ALL
G_MODULE_EXPORT
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
* for static builds.
**/
GIO_AVAILABLE_IN_ALL
G_MODULE_EXPORT
void g_io_module_unload (GIOModule *module);
/**
@ -187,7 +191,7 @@ void g_io_module_unload (GIOModule *module);
*
* Since: 2.24
**/
GIO_AVAILABLE_IN_ALL
G_MODULE_EXPORT
char **g_io_module_query (void);
G_END_DECLS

View File

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

View File

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

View File

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

View File

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

View File

@ -178,6 +178,11 @@
* non-default
* [visibility flag](https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fvisibility-1260)
* 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
* to feature Windows dll stubs.
*/
#define G_MODULE_IMPORT extern
#ifdef G_PLATFORM_WIN32
# define G_MODULE_EXPORT __declspec(dllexport)
#if defined(_WIN32) || defined(__CYGWIN__)
# define G_MODULE_EXPORT __declspec(dllexport)
# define G_MODULE_IMPORT __declspec(dllimport) extern
#elif __GNUC__ >= 4
# define G_MODULE_EXPORT __attribute__((visibility("default")))
#else /* !G_PLATFORM_WIN32 && __GNUC__ < 4 */
# define G_MODULE_EXPORT
#endif /* !G_PLATFORM_WIN32 */
# define G_MODULE_EXPORT __attribute__((visibility("default")))
# define G_MODULE_IMPORT extern
#else /* !defined(_WIN32) && !defined(__CYGWIN__) && __GNUC__ < 4 */
# define G_MODULE_EXPORT
# define G_MODULE_IMPORT extern
#endif
/**
* GModuleFlags: