~emersion/mrsh

090c33b64134100253b2ecf0f843584a6a790f76 — emersion 1 year, 6 months ago 7301b28
meson: fix FreeBSD -Wl,--version-script detection
3 files changed, 13 insertions(+), 7 deletions(-)

R libmrsh.clang.sym => libmrsh.darwin.sym
R libmrsh.sym => libmrsh.gnu.sym
M meson.build
R libmrsh.clang.sym => libmrsh.darwin.sym +1 -0
@@ 1,1 1,2 @@
# On Darwin, symbols are prefixed with an underscore
_mrsh_*

R libmrsh.sym => libmrsh.gnu.sym +0 -0

M meson.build => meson.build +12 -7
@@ 39,14 39,19 @@ mrsh_inc = include_directories('include')

install_subdir('include/mrsh', install_dir: get_option('includedir'))

libmrsh_sym_path = meson.current_source_dir() + '/libmrsh.sym'
libmrsh_clang_sym_path = meson.current_source_dir() + '/libmrsh.clang.sym'
if cc.has_link_argument('-Wl,--version-script=' + libmrsh_sym_path) # GNU ld
	link_args = ['-Wl,--version-script=' + libmrsh_sym_path]
elif cc.has_multi_link_arguments('-Wl,-exported_symbols_list', libmrsh_clang_sym_path) # clang
	link_args = ['-Wl,-exported_symbols_list', libmrsh_clang_sym_path]
libmrsh_gnu_sym_path = join_paths(meson.current_source_dir(), 'libmrsh.gnu.sym')
libmrsh_gnu_sym_ldflag = '-Wl,--version-script=' + libmrsh_gnu_sym_path
libmrsh_darwin_sym_path = join_paths(meson.current_source_dir(), 'libmrsh.darwin.sym')
# On FreeBSD, -Wl,--version-script only works with -shared
if cc.links('', name: '-Wl,--version-script', args: ['-shared', libmrsh_gnu_sym_ldflag])
	# GNU ld
	link_args = [libmrsh_gnu_sym_ldflag]
elif host_machine.system() == 'darwin' and
		cc.has_multi_link_arguments('-Wl,-exported_symbols_list', libmrsh_darwin_sym_path)
	# Clang on Darwin
	link_args = ['-Wl,-exported_symbols_list', libmrsh_darwin_sym_path]
else
	error('Linker doesn\'t support --version-script or -exported_symbol')
	error('Linker doesn\'t support --version-script or -exported_symbols_list')
endif

lib_mrsh = library(