From 49407dc32a2931550e4ff1dea314b6a25afdfc35 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 20 Nov 2020 00:07:09 -0500 Subject: [PATCH] On macOS, use -isysroot in link steps as well as compile steps. We previously put the -isysroot switch only into CPPFLAGS, theorizing that it was only needed to find the right copies of include files. However, it seems that we also need to use it while linking programs, to find the right stub ".tbd" files for libraries. We got away without that up to now, but apparently that was mostly luck. It may also be that failures are only observed when the Xcode version is noticeably out of sync with the host macOS version; the case that's prompting action right now is that builds fail when using latest Xcode (12.2) on macOS Catalina, even though it's fine on Big Sur. Hence, add -isysroot to LDFLAGS as well. (It seems that the more common practice is to put it in CFLAGS, whence it'd be included at both compile and link steps. However, we can't mess with CFLAGS in the platform template file without confusing configure's logic for choosing default CFLAGS.) This should be back-patched, but first let's see if the buildfarm likes it on HEAD. Report and patch by James Hilliard (some cosmetic mods by me) Discussion: https://postgr.es/m/20201120003314.20560-1-james.hilliard1@gmail.com --- configure | 2 ++ configure.ac | 2 ++ src/template/darwin | 1 + 3 files changed, 5 insertions(+) diff --git a/configure b/configure index ace4ed5dec..3e3fd389dc 100755 --- a/configure +++ b/configure @@ -19192,8 +19192,10 @@ _ACEOF # literally, so that it's possible to override it at build time using # a command like "make ... PG_SYSROOT=path". This has to be done after # we've finished all configure checks that depend on CPPFLAGS. +# The same for LDFLAGS, too. if test x"$PG_SYSROOT" != x; then CPPFLAGS=`echo "$CPPFLAGS" | sed -e "s| $PG_SYSROOT | \\\$(PG_SYSROOT) |"` + LDFLAGS=`echo "$LDFLAGS" | sed -e "s| $PG_SYSROOT | \\\$(PG_SYSROOT) |"` fi diff --git a/configure.ac b/configure.ac index 5b91c83fd0..8fee479fb7 100644 --- a/configure.ac +++ b/configure.ac @@ -2360,8 +2360,10 @@ AC_SUBST(PG_VERSION_NUM) # literally, so that it's possible to override it at build time using # a command like "make ... PG_SYSROOT=path". This has to be done after # we've finished all configure checks that depend on CPPFLAGS. +# The same for LDFLAGS, too. if test x"$PG_SYSROOT" != x; then CPPFLAGS=`echo "$CPPFLAGS" | sed -e "s| $PG_SYSROOT | \\\$(PG_SYSROOT) |"` + LDFLAGS=`echo "$LDFLAGS" | sed -e "s| $PG_SYSROOT | \\\$(PG_SYSROOT) |"` fi AC_SUBST(PG_SYSROOT) diff --git a/src/template/darwin b/src/template/darwin index f4d4e9d7cf..32414d21a9 100644 --- a/src/template/darwin +++ b/src/template/darwin @@ -11,6 +11,7 @@ fi if test x"$PG_SYSROOT" != x"" ; then if test -d "$PG_SYSROOT" ; then CPPFLAGS="-isysroot $PG_SYSROOT $CPPFLAGS" + LDFLAGS="-isysroot $PG_SYSROOT $LDFLAGS" else PG_SYSROOT="" fi