mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-10-31 08:22:16 +01:00 
			
		
		
		
	gmodule: Add the visibility attribute to G_MODULE_EXPORT on gcc
For versions of GCC which support it (≥ 4), define G_MODULE_EXPORT as
__attribute__((visibility("default"))). This is normally a no-op, unless
compiling with -fvisibility=hidden, in which case it marks a symbol to
be publicly exported from the library, which is what G_MODULE_EXPORT is
for. Previously G_MODULE_EXPORT has only worked on Windows.
The compatibility check for whether the compiler supports
__attribute__((visibility)) is based on the __GNUC__ define, and is
similar to the check done in configure.ac for defining G_GNUC_INTERNAL.
Signed-off-by: Philip Withnall <withnall@endlessm.com>
https://bugzilla.gnome.org/show_bug.cgi?id=778287
			
			
This commit is contained in:
		| @@ -167,9 +167,15 @@ | |||||||
| /** | /** | ||||||
|  * G_MODULE_EXPORT: |  * G_MODULE_EXPORT: | ||||||
|  * |  * | ||||||
|  * Used to declare functions exported by modules. This is a no-op on Linux |  * Used to declare functions exported by libraries or modules. | ||||||
|  * and Unices, but when compiling for Windows, it marks a symbol to be |  * | ||||||
|  * exported from the library or executable being built. |  * When compiling for Windows, it marks the symbol as `dllexport`. | ||||||
|  |  * | ||||||
|  |  * When compiling for Linux and Unices, it marks the symbol as having `default` | ||||||
|  |  * visibility. This is no-op unless the code is being compiled with a | ||||||
|  |  * non-default | ||||||
|  |  * [visibility flag](https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fvisibility-1260) | ||||||
|  |  * such as `hidden`. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| /** | /** | ||||||
|   | |||||||
| @@ -35,7 +35,9 @@ G_BEGIN_DECLS | |||||||
| #define	G_MODULE_IMPORT		extern | #define	G_MODULE_IMPORT		extern | ||||||
| #ifdef G_PLATFORM_WIN32 | #ifdef G_PLATFORM_WIN32 | ||||||
| #  define	G_MODULE_EXPORT		__declspec(dllexport) | #  define	G_MODULE_EXPORT		__declspec(dllexport) | ||||||
| #else /* !G_PLATFORM_WIN32 */ | #elif __GNUC__ >= 4 | ||||||
|  | #  define	G_MODULE_EXPORT		__attribute__((visibility("default"))) | ||||||
|  | #else /* !G_PLATFORM_WIN32 && __GNUC__ < 4 */ | ||||||
| #  define	G_MODULE_EXPORT | #  define	G_MODULE_EXPORT | ||||||
| #endif /* !G_PLATFORM_WIN32 */ | #endif /* !G_PLATFORM_WIN32 */ | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user