diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2018-11-02 18:54:00 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2018-11-02 18:54:00 -0400 |
commit | 94ea1cf731834baff3a17b266c202d482fb1d9a1 (patch) | |
tree | 421e271634ebe1dbbc11e323d505881c3700674f /src | |
parent | d403ed2acd35c326df7e20f91ce679f2c2e7ad1a (diff) | |
download | postgresql-94ea1cf731834baff3a17b266c202d482fb1d9a1.tar.gz postgresql-94ea1cf731834baff3a17b266c202d482fb1d9a1.zip |
Yet further rethinking of build changes for macOS Mojave.
The solution arrived at in commit e74dd00f5 presumes that the compiler
has a suitable default -isysroot setting ... but further experience
shows that in many combinations of macOS version, XCode version, Xcode
command line tools version, and phase of the moon, Apple's compiler
will *not* supply a default -isysroot value.
We could potentially go back to the approach used in commit 68fc227dd,
but I don't have a lot of faith in the reliability or life expectancy of
that either. Let's just revert to the approach already shipped in 11.0,
namely specifying an -isysroot switch globally. As a partial response to
the concerns raised by Jakob Egger, adjust the contents of Makefile.global
to look like
CPPFLAGS = -isysroot $(PG_SYSROOT) ...
PG_SYSROOT = /path/to/sysroot
This allows overriding the sysroot path at build time in a relatively
painless way.
Add documentation to installation.sgml about how to use the PG_SYSROOT
option. I also took the opportunity to document how to work around
macOS's "System Integrity Protection" feature.
As before, back-patch to all supported versions.
Discussion: https://postgr.es/m/20840.1537850987@sss.pgh.pa.us
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.global.in | 1 | ||||
-rw-r--r-- | src/template/darwin | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 5d6a2ceaa92..3902d16d98a 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -225,6 +225,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +PG_SYSROOT = @PG_SYSROOT@ ifdef PGXS override CPPFLAGS := -I$(includedir_server) -I$(includedir_internal) $(CPPFLAGS) diff --git a/src/template/darwin b/src/template/darwin index 159d8bb1275..c05adca0bfb 100644 --- a/src/template/darwin +++ b/src/template/darwin @@ -3,14 +3,15 @@ # 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. -# Some configure tests require explicit knowledge of where the Xcode "sysroot" -# is. We try to avoid having this leak into configure's results, though. +# Select where system include files should be sought. if test x"$PG_SYSROOT" = x"" ; then PG_SYSROOT=`xcodebuild -version -sdk macosx Path 2>/dev/null` fi # Old xcodebuild versions may produce garbage, so validate the result. if test x"$PG_SYSROOT" != x"" ; then - if test \! -d "$PG_SYSROOT" ; then + if test -d "$PG_SYSROOT" ; then + CPPFLAGS="-isysroot $PG_SYSROOT $CPPFLAGS" + else PG_SYSROOT="" fi fi |