mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-05-29 00:40:07 +02:00
meson: add -fvisibility=hidden explicitly to selected targets
Don't use it project-wide for building everything. Otherwise symbols for shared modules won't be exposed, e.g. in the resourceplugin used by the gio resource unit test.
This commit is contained in:
parent
1224ff0c39
commit
2f29ee1735
@ -4,6 +4,8 @@ gio_c_args = [
|
|||||||
'-DGIO_MODULE_DIR="@0@"'.format(glib_giomodulesdir),
|
'-DGIO_MODULE_DIR="@0@"'.format(glib_giomodulesdir),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
gio_c_args += glib_hidden_visibility_args
|
||||||
|
|
||||||
# FIXME: Install empty glib_giomodulesdir
|
# FIXME: Install empty glib_giomodulesdir
|
||||||
|
|
||||||
gnetworking_h_conf = configuration_data()
|
gnetworking_h_conf = configuration_data()
|
||||||
@ -747,6 +749,7 @@ gio_tool_sources = [
|
|||||||
'gio-tool-tree.c',
|
'gio-tool-tree.c',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# FIXME: are all these HAVE_CONFIG_H needed/used here?
|
||||||
executable('gio', gio_tool_sources,
|
executable('gio', gio_tool_sources,
|
||||||
install : true,
|
install : true,
|
||||||
c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
|
c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
|
||||||
|
@ -13,4 +13,4 @@ xdgmime_lib = static_library('xdgmime',
|
|||||||
sources : xdgmime_sources,
|
sources : xdgmime_sources,
|
||||||
include_directories : [configinc],
|
include_directories : [configinc],
|
||||||
pic : true,
|
pic : true,
|
||||||
c_args : [ '-DHAVE_CONFIG_H', '-DXDG_PREFIX=_gio_xdg' ])
|
c_args : [ '-DHAVE_CONFIG_H', '-DXDG_PREFIX=_gio_xdg' ] + glib_hidden_visibility_args)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
charset_lib = static_library('charset', 'localcharset.c',
|
charset_lib = static_library('charset', 'localcharset.c',
|
||||||
include_directories : configinc,
|
include_directories : configinc,
|
||||||
pic : true,
|
pic : true,
|
||||||
c_args : [ '-DLIBDIR="@0@"'.format(get_option('libdir')) ])
|
c_args : [ '-DLIBDIR="@0@"'.format(get_option('libdir')) ] + glib_hidden_visibility_args)
|
||||||
|
@ -218,7 +218,7 @@ libglib = shared_library('glib-2.0',
|
|||||||
include_directories : configinc,
|
include_directories : configinc,
|
||||||
link_with : charset_lib,
|
link_with : charset_lib,
|
||||||
dependencies : [pcre, thread_dep, libintl, librt] + libiconv + platform_deps,
|
dependencies : [pcre, thread_dep, libintl, librt] + libiconv + platform_deps,
|
||||||
c_args : ['-DG_LOG_DOMAIN="GLib"', '-DGLIB_COMPILATION', '-DPCRE_STATIC']
|
c_args : ['-DG_LOG_DOMAIN="GLib"', '-DGLIB_COMPILATION', '-DPCRE_STATIC'] + glib_hidden_visibility_args
|
||||||
)
|
)
|
||||||
|
|
||||||
libglib_dep = declare_dependency(link_with : libglib,
|
libglib_dep = declare_dependency(link_with : libglib,
|
||||||
|
@ -44,7 +44,7 @@ libpcre = static_library('pcre',
|
|||||||
'-UBSR_ANYCRLF',
|
'-UBSR_ANYCRLF',
|
||||||
'-UEBCDIC',
|
'-UEBCDIC',
|
||||||
'-DGLIB_COMPILATION'
|
'-DGLIB_COMPILATION'
|
||||||
]
|
] + glib_hidden_visibility_args
|
||||||
)
|
)
|
||||||
|
|
||||||
pcre = declare_dependency(link_with : libpcre)
|
pcre = declare_dependency(link_with : libpcre)
|
||||||
|
@ -91,8 +91,7 @@ libgmodule = shared_library('gmodule-2.0',
|
|||||||
install : true,
|
install : true,
|
||||||
include_directories : [configinc, gmoduleinc],
|
include_directories : [configinc, gmoduleinc],
|
||||||
dependencies : [libdl_dep, libglib_dep],
|
dependencies : [libdl_dep, libglib_dep],
|
||||||
c_args : ['-DG_LOG_DOMAIN="GModule"', '-DG_DISABLE_DEPRECATED'],
|
c_args : ['-DG_LOG_DOMAIN="GModule"', '-DG_DISABLE_DEPRECATED'] + glib_hidden_visibility_args)
|
||||||
)
|
|
||||||
|
|
||||||
libgmodule_dep = declare_dependency(link_with : libgmodule,
|
libgmodule_dep = declare_dependency(link_with : libgmodule,
|
||||||
include_directories : gmoduleinc)
|
include_directories : gmoduleinc)
|
||||||
|
@ -61,7 +61,7 @@ libgobject = shared_library('gobject-2.0',
|
|||||||
install : true,
|
install : true,
|
||||||
include_directories : [configinc],
|
include_directories : [configinc],
|
||||||
dependencies : [libffi_dep, libglib_dep],
|
dependencies : [libffi_dep, libglib_dep],
|
||||||
c_args : ['-DG_LOG_DOMAIN="GLib-GObject"', '-DGOBJECT_COMPILATION'])
|
c_args : ['-DG_LOG_DOMAIN="GLib-GObject"', '-DGOBJECT_COMPILATION'] + glib_hidden_visibility_args)
|
||||||
|
|
||||||
libgobject_dep = declare_dependency(link_with : libgobject,
|
libgobject_dep = declare_dependency(link_with : libgobject,
|
||||||
include_directories : gobjectinc)
|
include_directories : gobjectinc)
|
||||||
|
@ -6,5 +6,4 @@ libgthread = shared_library('gthread-2.0',
|
|||||||
soversion : soversion,
|
soversion : soversion,
|
||||||
install : true,
|
install : true,
|
||||||
dependencies : [libglib_dep],
|
dependencies : [libglib_dep],
|
||||||
c_args : ['-DG_LOG_DOMAIN="GThread"' ],
|
c_args : ['-DG_LOG_DOMAIN="GThread"' ] + glib_hidden_visibility_args)
|
||||||
)
|
|
||||||
|
@ -99,6 +99,7 @@ if host_system == 'windows'
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# Detect and set symbol visibility
|
# Detect and set symbol visibility
|
||||||
|
glib_hidden_visibility_args = []
|
||||||
if get_option('default_library') != 'static'
|
if get_option('default_library') != 'static'
|
||||||
if host_system == 'windows'
|
if host_system == 'windows'
|
||||||
glib_conf.set('DLL_EXPORT', true)
|
glib_conf.set('DLL_EXPORT', true)
|
||||||
@ -106,11 +107,11 @@ if get_option('default_library') != 'static'
|
|||||||
glib_conf.set('_GLIB_EXTERN', '__declspec(dllexport) extern')
|
glib_conf.set('_GLIB_EXTERN', '__declspec(dllexport) extern')
|
||||||
elif cc.has_argument('-fvisibility=hidden')
|
elif cc.has_argument('-fvisibility=hidden')
|
||||||
glib_conf.set('_GLIB_EXTERN', '__attribute__((visibility("default"))) __declspec(dllexport) extern')
|
glib_conf.set('_GLIB_EXTERN', '__attribute__((visibility("default"))) __declspec(dllexport) extern')
|
||||||
add_global_arguments('-fvisibility=hidden', language : 'c')
|
glib_hidden_visibility_args = ['-fvisibility=hidden']
|
||||||
endif
|
endif
|
||||||
elif cc.has_argument('-fvisibility=hidden')
|
elif cc.has_argument('-fvisibility=hidden')
|
||||||
glib_conf.set('_GLIB_EXTERN', '__attribute__((visibility("default"))) extern')
|
glib_conf.set('_GLIB_EXTERN', '__attribute__((visibility("default"))) extern')
|
||||||
add_global_arguments('-fvisibility=hidden', language : 'c')
|
glib_hidden_visibility_args = ['-fvisibility=hidden']
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user