mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Back off using -isysroot on Darwin.
Rethink the solution applied in commit 5e2217131 to get PL/Tcl to build on macOS Mojave. I feared that adding -isysroot globally might have undesirable consequences, and sure enough Jakob Egger reported one: it complicates building extensions with a different Xcode version than was used for the core server. (I find that a risky proposition in general, but apparently it works most of the time, so we shouldn't break it if we don't have to.) We'd already adopted the solution for PL/Perl of inserting the sysroot path directly into the -I switches used to find Perl's headers, and we can do the same thing for PL/Tcl by changing the -iwithsysroot switch that Apple's tclConfig.sh reports. This restricts the risks to PL/Perl and PL/Tcl themselves and directly-dependent extensions, which is a lot more pleasing in general than a global -isysroot switch. Along the way, tighten the test to see if we need to inject the sysroot path into $perl_includedir, as I'd speculated about upthread but not gotten round to doing. As before, back-patch to all supported versions. Discussion: https://postgr.es/m/20840.1537850987@sss.pgh.pa.us
This commit is contained in:
parent
49a1c22889
commit
1a69f738d2
7
configure
vendored
7
configure
vendored
@ -9552,7 +9552,7 @@ PL/Perl." "$LINENO" 5
|
|||||||
perl_includedir="$perl_archlibexp"
|
perl_includedir="$perl_archlibexp"
|
||||||
# ... but on some macOS versions, we must look under $PG_SYSROOT instead
|
# ... but on some macOS versions, we must look under $PG_SYSROOT instead
|
||||||
if test x"$PG_SYSROOT" != x"" ; then
|
if test x"$PG_SYSROOT" != x"" ; then
|
||||||
if test -d "$PG_SYSROOT$perl_archlibexp" ; then
|
if test -f "$PG_SYSROOT$perl_archlibexp/CORE/perl.h" ; then
|
||||||
perl_includedir="$PG_SYSROOT$perl_archlibexp"
|
perl_includedir="$PG_SYSROOT$perl_archlibexp"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -18135,6 +18135,11 @@ eval TCL_SHARED_BUILD=\"$TCL_SHARED_BUILD\"
|
|||||||
as_fn_error $? "cannot build PL/Tcl because Tcl is not a shared library
|
as_fn_error $? "cannot build PL/Tcl because Tcl is not a shared library
|
||||||
Use --without-tcl to disable building PL/Tcl." "$LINENO" 5
|
Use --without-tcl to disable building PL/Tcl." "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
|
# Some macOS versions report an include spec that uses -iwithsysroot.
|
||||||
|
# We don't really want to use -isysroot, so translate that if we can.
|
||||||
|
if test x"$PG_SYSROOT" != x"" ; then
|
||||||
|
TCL_INCLUDE_SPEC="`echo "$TCL_INCLUDE_SPEC" | sed "s|-iwithsysroot */|-I $PG_SYSROOT/|"`"
|
||||||
|
fi
|
||||||
# now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
|
# now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
|
||||||
ac_save_CPPFLAGS=$CPPFLAGS
|
ac_save_CPPFLAGS=$CPPFLAGS
|
||||||
CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS"
|
CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS"
|
||||||
|
@ -1037,7 +1037,7 @@ PL/Perl.])
|
|||||||
perl_includedir="$perl_archlibexp"
|
perl_includedir="$perl_archlibexp"
|
||||||
# ... but on some macOS versions, we must look under $PG_SYSROOT instead
|
# ... but on some macOS versions, we must look under $PG_SYSROOT instead
|
||||||
if test x"$PG_SYSROOT" != x"" ; then
|
if test x"$PG_SYSROOT" != x"" ; then
|
||||||
if test -d "$PG_SYSROOT$perl_archlibexp" ; then
|
if test -f "$PG_SYSROOT$perl_archlibexp/CORE/perl.h" ; then
|
||||||
perl_includedir="$PG_SYSROOT$perl_archlibexp"
|
perl_includedir="$PG_SYSROOT$perl_archlibexp"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -2213,6 +2213,11 @@ if test "$with_tcl" = yes; then
|
|||||||
AC_MSG_ERROR([cannot build PL/Tcl because Tcl is not a shared library
|
AC_MSG_ERROR([cannot build PL/Tcl because Tcl is not a shared library
|
||||||
Use --without-tcl to disable building PL/Tcl.])
|
Use --without-tcl to disable building PL/Tcl.])
|
||||||
fi
|
fi
|
||||||
|
# Some macOS versions report an include spec that uses -iwithsysroot.
|
||||||
|
# We don't really want to use -isysroot, so translate that if we can.
|
||||||
|
if test x"$PG_SYSROOT" != x"" ; then
|
||||||
|
TCL_INCLUDE_SPEC="`echo "$TCL_INCLUDE_SPEC" | sed "s|-iwithsysroot */|-I $PG_SYSROOT/|"`"
|
||||||
|
fi
|
||||||
# now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
|
# now that we have TCL_INCLUDE_SPEC, we can check for <tcl.h>
|
||||||
ac_save_CPPFLAGS=$CPPFLAGS
|
ac_save_CPPFLAGS=$CPPFLAGS
|
||||||
CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS"
|
CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS"
|
||||||
|
@ -3,14 +3,15 @@
|
|||||||
# Note: Darwin is the original code name for macOS, also known as OS X.
|
# Note: Darwin is the original code name for macOS, also known as OS X.
|
||||||
# We still use "darwin" as the port name, partly because config.guess does.
|
# We still use "darwin" as the port name, partly because config.guess does.
|
||||||
|
|
||||||
# Select where system include files should be sought.
|
# Select where some include files should be sought.
|
||||||
|
# We may eventually be forced to use "-isysroot" with this value,
|
||||||
|
# but for now, it only affects Perl and Tcl include files.
|
||||||
if test x"$PG_SYSROOT" = x"" ; then
|
if test x"$PG_SYSROOT" = x"" ; then
|
||||||
PG_SYSROOT=`xcodebuild -version -sdk macosx Path 2>/dev/null`
|
PG_SYSROOT=`xcodebuild -version -sdk macosx Path 2>/dev/null`
|
||||||
fi
|
fi
|
||||||
|
# Old xcodebuild versions may produce garbage, so validate the result.
|
||||||
if test x"$PG_SYSROOT" != x"" ; then
|
if test x"$PG_SYSROOT" != x"" ; then
|
||||||
if test -d "$PG_SYSROOT" ; then
|
if test \! -d "$PG_SYSROOT" ; then
|
||||||
CPPFLAGS="$CPPFLAGS -isysroot $PG_SYSROOT"
|
|
||||||
else
|
|
||||||
PG_SYSROOT=""
|
PG_SYSROOT=""
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user