From 228d6782235238ed0d03eb2443caf530b377ffd5 Mon Sep 17 00:00:00 2001 From: Michael Cho Date: Wed, 6 Nov 2024 00:48:20 -0500 Subject: [PATCH] Use `-exported_symbol` on macOS `--version-script` is not supported on macOS ld while `-export-symbols-regex` seems to be specific to libtool. Previous macOS ld may have skipped this but Xcode 16 fails: ``` clang: error: unknown argument: '-export-symbols-regex=^jose_.*' ``` macOS instead has: * `-exported_symbol ` * `-exported_symbols_list ` --- lib/meson.build | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/meson.build b/lib/meson.build index a997ca9..5b8d93a 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -1,15 +1,17 @@ -flags = '-Wl,--version-script=' + meson.current_source_dir() + '/libjose.map' +flags_name = '-Wl,--version-script=' +flags = flags_name + meson.current_source_dir() + '/libjose.map' code = 'int main() { return 0; }' cc = meson.get_compiler('c') if host_machine.system() == 'freebsd' - if not cc.links(code, args: flags + ',--undefined-version' , name: '-Wl,--version-script=...') - flags = [ '-export-symbols-regex=^jose_.*' ] - endif -else - if not cc.links(code, args: flags, name: '-Wl,--version-script=...') - flags = [ '-export-symbols-regex=^jose_.*' ] - endif + flags += ',--undefined-version' +elif host_machine.system() == 'darwin' + flags_name = '-Wl,-exported_symbol,' + flags = flags_name + '_jose_*' +endif + +if not cc.links(code, args: flags, name: flags_name + '...') + flags = [ '-export-symbols-regex=^jose_.*' ] endif libjose_lib = shared_library('jose',