Move darwin sysroot determination into separate file
authorAndres Freund <[email protected]>
Thu, 1 Sep 2022 23:54:19 +0000 (16:54 -0700)
committerAndres Freund <[email protected]>
Thu, 1 Sep 2022 23:54:19 +0000 (16:54 -0700)
The sysroot determination is fairly complex and will soon also be needed when
building with meson. Instead of duplicating the logic, move it to a dedicated
shell script invoked both by configure and meson.

Reviewed-by: Peter Eisentraut <[email protected]>
Discussion: https://postgr.es/m/2180a97c-c026-1b6c-cec8-d6e499f97017@enterprisedb.com

src/template/darwin
src/tools/darwin_sysroot [new file with mode: 0755]

index fd30e19b6a787581ad1e89c3897c2af5c209800d..e8eb93906878032bb127f02c96c21536dde3ac54 100644 (file)
@@ -3,41 +3,12 @@
 # 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.
 
-# Select where system include files should be sought, if user didn't say.
-if test x"$PG_SYSROOT" = x"" ; then
-  # This is far more complicated than it ought to be.  We first ask
-  # "xcrun --show-sdk-path", which seems to match the default -isysroot
-  # setting of Apple's compilers.
-  PG_SYSROOT=`xcrun --show-sdk-path 2>/dev/null`
-  # That may fail, or produce a result that is not version-specific (i.e.,
-  # just ".../SDKs/MacOSX.sdk").  Using a version-specific sysroot seems
-  # desirable, so if the path is a non-version-specific symlink, expand it.
-  if test -L "$PG_SYSROOT"; then
-    if expr x"$PG_SYSROOT" : '.*[0-9]\.[0-9][^/]*$' >/dev/null ; then : okay
-    else
-      PG_SYSROOT=`expr "$PG_SYSROOT" : '\(.*\)/'`/`readlink "$PG_SYSROOT"`
-    fi
-  fi
-  # If there are still not digits in the directory name, try
-  # "xcrun --sdk macosx --show-sdk-path"; and if that still doesn't work,
-  # fall back to asking xcodebuild, which is often a good deal slower.
-  if expr x"$PG_SYSROOT" : '.*[0-9]\.[0-9][^/]*$' >/dev/null ; then : okay
-  else
-    PG_SYSROOT=`xcrun --sdk macosx --show-sdk-path 2>/dev/null`
-    if expr x"$PG_SYSROOT" : '.*[0-9]\.[0-9][^/]*$' >/dev/null ; then : okay
-    else
-      PG_SYSROOT=`xcodebuild -version -sdk macosx Path 2>/dev/null`
-    fi
-  fi
-fi
-# Validate the result: if it doesn't point at a directory, ignore it.
-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
+# Select where system include files should be sought
+PG_SYSROOT=`${srcdir}/src/tools/darwin_sysroot $PG_SYSROOT`
+
+if test -d "$PG_SYSROOT" ; then
+  CPPFLAGS="-isysroot $PG_SYSROOT $CPPFLAGS"
+  LDFLAGS="-isysroot $PG_SYSROOT $LDFLAGS"
 fi
 
 # Extra CFLAGS for code that will go into a shared library
diff --git a/src/tools/darwin_sysroot b/src/tools/darwin_sysroot
new file mode 100755 (executable)
index 0000000..1cdf812
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Select where system include files should be sought. If the user specified a
+# sysroot, validate it.
+#
+# A separate script so it can be shared between autoconf and meson.
+
+PG_SYSROOT=$1
+
+if test x"$PG_SYSROOT" = x"" ; then
+  # This is far more complicated than it ought to be.  We first ask
+  # "xcrun --show-sdk-path", which seems to match the default -isysroot
+  # setting of Apple's compilers.
+  PG_SYSROOT=`xcrun --show-sdk-path 2>/dev/null`
+  # That may fail, or produce a result that is not version-specific (i.e.,
+  # just ".../SDKs/MacOSX.sdk").  Using a version-specific sysroot seems
+  # desirable, so if the path is a non-version-specific symlink, expand it.
+  if test -L "$PG_SYSROOT"; then
+    if expr x"$PG_SYSROOT" : '.*[0-9]\.[0-9][^/]*$' >/dev/null ; then : okay
+    else
+      PG_SYSROOT=`expr "$PG_SYSROOT" : '\(.*\)/'`/`readlink "$PG_SYSROOT"`
+    fi
+  fi
+  # If there are still not digits in the directory name, try
+  # "xcrun --sdk macosx --show-sdk-path"; and if that still doesn't work,
+  # fall back to asking xcodebuild, which is often a good deal slower.
+  if expr x"$PG_SYSROOT" : '.*[0-9]\.[0-9][^/]*$' >/dev/null ; then : okay
+  else
+    PG_SYSROOT=`xcrun --sdk macosx --show-sdk-path 2>/dev/null`
+    if expr x"$PG_SYSROOT" : '.*[0-9]\.[0-9][^/]*$' >/dev/null ; then : okay
+    else
+      PG_SYSROOT=`xcodebuild -version -sdk macosx Path 2>/dev/null`
+    fi
+  fi
+fi
+# Validate the result: if it doesn't point at a directory, ignore it.
+if test x"$PG_SYSROOT" != x"" ; then
+  if test -d "$PG_SYSROOT" ; then
+    echo $PG_SYSROOT
+  fi
+fi