meson: Make private static library symbols local
Static libraries are not affected by our symbol file, so private symbols are globally visible by default. Use objcopy to make symbols that we do not want to expose local. Closes: https://github.com/swaywm/wlroots/issues/1892 Closes: https://github.com/swaywm/wlroots/issues/2952
This commit is contained in:
parent
72ee196efa
commit
cb6db86a28
22
meson.build
22
meson.build
|
@ -150,8 +150,30 @@ lib_wlr = library(
|
||||||
install: true,
|
install: true,
|
||||||
link_args: symbols_flag,
|
link_args: symbols_flag,
|
||||||
link_depends: symbols_file,
|
link_depends: symbols_file,
|
||||||
|
prelink: true,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if get_option('default_library') != 'shared'
|
||||||
|
lib_target = lib_wlr
|
||||||
|
if get_option('default_library') == 'both'
|
||||||
|
lib_target = lib_wlr.get_static_lib()
|
||||||
|
endif
|
||||||
|
objcopy_prog = find_program('objcopy', native: true)
|
||||||
|
custom_target('libwlroots',
|
||||||
|
input: lib_target,
|
||||||
|
output: lib_target.name() + '.is-stripped',
|
||||||
|
capture: true,
|
||||||
|
command: [
|
||||||
|
objcopy_prog.full_path(), '-w',
|
||||||
|
'--localize-symbol=!wlr_*',
|
||||||
|
'--localize-symbol=!_wlr_*',
|
||||||
|
'--localize-symbol=*',
|
||||||
|
'@INPUT@',
|
||||||
|
],
|
||||||
|
build_by_default: true,
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
wlr_vars = {}
|
wlr_vars = {}
|
||||||
foreach name, have : features
|
foreach name, have : features
|
||||||
wlr_vars += { 'have_' + name.underscorify(): have.to_string() }
|
wlr_vars += { 'have_' + name.underscorify(): have.to_string() }
|
||||||
|
|
Loading…
Reference in New Issue