summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2024-03-13 01:40:48 -0700
committerAndres Freund <andres@anarazel.de>2024-03-13 01:40:48 -0700
commit9158e4b9eb9916fa586feb26a6149b59566b78e1 (patch)
tree248e0ba60928954833ca2c21424418e9da360179
parent40d1bdeb72b2d7dfa9e0d91785f0a056b719ebb1 (diff)
meson: macos: Avoid warnings on Sonoma
Starting with the Sonoma toolchain macos' linker emits warnings when the same library is linked to twice. That's ill considered, as the same library can be used by multiple subsidiary libraries. Luckily there's a flag to suppress that warning. On Ventura meson's default of -Wl,-undefined,dynamic_lookup caused warnings, which we suppressed with -Wl,-undefined,error. Unfortunately that causes a warning on Sonoma, which is absurd, as it's documented linker default. To avoid that warning, only add -Wl,-undefined,error if it does not trigger warnings. Luckily dynamic_lookup doesn't trigger a warning on Sonoma anymore. Discussion: https://postgr.es/m/20231201040515.p5bshhhtfru7d3da@awork3.anarazel.de Backpatch: 16-, where the meson build was added
-rw-r--r--meson.build14
1 files changed, 12 insertions, 2 deletions
diff --git a/meson.build b/meson.build
index 6804f941be8..077edc8644a 100644
--- a/meson.build
+++ b/meson.build
@@ -237,10 +237,20 @@ elif host_system == 'darwin'
cflags += ['-isysroot', pg_sysroot]
ldflags += ['-isysroot', pg_sysroot]
endif
+
# meson defaults to -Wl,-undefined,dynamic_lookup for modules, which we
# don't want because a) it's different from what we do for autoconf, b) it
- # causes warnings starting in macOS Ventura
- ldflags_mod += ['-Wl,-undefined,error']
+ # causes warnings in macOS Ventura. But using -Wl,-undefined,error causes a
+ # warning starting in Sonoma. So only add -Wl,-undefined,error if it does
+ # not cause a warning.
+ if cc.has_multi_link_arguments('-Wl,-undefined,error', '-Werror')
+ ldflags_mod += '-Wl,-undefined,error'
+ endif
+
+ # Starting in Sonoma, the linker warns about the same library being
+ # linked twice. Which can easily happen when multiple dependencies
+ # depend on the same library. Quiesce the ill considered warning.
+ ldflags += cc.get_supported_link_arguments('-Wl,-no_warn_duplicate_libraries')
elif host_system == 'freebsd'
sema_kind = 'unnamed_posix'