summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/tcl.m413
-rwxr-xr-xconfigure20
-rw-r--r--configure.in11
-rw-r--r--src/Makefile.global.in1
-rw-r--r--src/pl/plperl/GNUmakefile2
-rw-r--r--src/template/darwin23
6 files changed, 61 insertions, 9 deletions
diff --git a/config/tcl.m4 b/config/tcl.m4
index a9fe7ba5cc1..4010eb42eab 100644
--- a/config/tcl.m4
+++ b/config/tcl.m4
@@ -13,6 +13,10 @@ fi
# PGAC_PATH_TCLCONFIGSH([SEARCH-PATH])
# ------------------------------------
+# If the user doesn't specify $TCL_CONFIG_SH directly, search for it in
+# the list of directories passed as parameter (from --with-tclconfig).
+# If no list is given, try the Tcl shell's $auto_path.
+
AC_DEFUN([PGAC_PATH_TCLCONFIGSH],
[AC_REQUIRE([PGAC_PATH_TCLSH])[]dnl
AC_BEFORE([$0], [PGAC_PATH_TKCONFIGSH])[]dnl
@@ -24,7 +28,14 @@ if test -z "$TCL_CONFIG_SH"; then
set X $pgac_test_dirs; shift
if test $[#] -eq 0; then
test -z "$TCLSH" && AC_MSG_ERROR([unable to locate tclConfig.sh because no Tcl shell was found])
- set X `echo 'puts $auto_path' | $TCLSH`; shift
+ pgac_test_dirs=`echo 'puts $auto_path' | $TCLSH`
+ # On newer macOS, $auto_path frequently doesn't include the place
+ # where tclConfig.sh actually lives. Append that to the end, so as not
+ # to break cases where a non-default Tcl installation is being used.
+ if test -d "$PG_SYSROOT/System/Library/Frameworks/Tcl.framework" ; then
+ pgac_test_dirs="$pgac_test_dirs $PG_SYSROOT/System/Library/Frameworks/Tcl.framework"
+ fi
+ set X $pgac_test_dirs; shift
fi
for pgac_dir do
diff --git a/configure b/configure
index d88a9f9ca74..00986168f68 100755
--- a/configure
+++ b/configure
@@ -670,6 +670,7 @@ python_majorversion
PYTHON
perl_embed_ldflags
perl_embed_ccflags
+perl_includedir
perl_useshrplib
perl_privlibexp
perl_archlibexp
@@ -7503,6 +7504,14 @@ perl_useshrplib=`$PERL -MConfig -e 'print $Config{useshrplib}'`
test "$PORTNAME" = "win32" && perl_useshrplib=`echo $perl_useshrplib | sed 's,\\\\,/,g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $perl_useshrplib" >&5
$as_echo "$perl_useshrplib" >&6; }
+ # On most platforms, archlibexp is also where the Perl include files live ...
+ perl_includedir="$perl_archlibexp"
+ # ... but on some macOS versions, we must look under $PG_SYSROOT instead
+ if test x"$PG_SYSROOT" != x"" ; then
+ if test -d "$PG_SYSROOT$perl_archlibexp" ; then
+ perl_includedir="$PG_SYSROOT$perl_archlibexp"
+ fi
+ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAGS recommended by Perl" >&5
$as_echo_n "checking for CFLAGS recommended by Perl... " >&6; }
@@ -14637,7 +14646,14 @@ if test -z "$TCL_CONFIG_SH"; then
set X $pgac_test_dirs; shift
if test $# -eq 0; then
test -z "$TCLSH" && as_fn_error $? "unable to locate tclConfig.sh because no Tcl shell was found" "$LINENO" 5
- set X `echo 'puts $auto_path' | $TCLSH`; shift
+ pgac_test_dirs=`echo 'puts $auto_path' | $TCLSH`
+ # On newer macOS, $auto_path frequently doesn't include the place
+ # where tclConfig.sh actually lives. Append that to the end, so as not
+ # to break cases where a non-default Tcl installation is being used.
+ if test -d "$PG_SYSROOT/System/Library/Frameworks/Tcl.framework" ; then
+ pgac_test_dirs="$pgac_test_dirs $PG_SYSROOT/System/Library/Frameworks/Tcl.framework"
+ fi
+ set X $pgac_test_dirs; shift
fi
for pgac_dir do
@@ -14683,7 +14699,7 @@ fi
# check for <perl.h>
if test "$with_perl" = yes; then
ac_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$perl_archlibexp/CORE"
+ CPPFLAGS="$CPPFLAGS -I$perl_includedir/CORE"
ac_fn_c_check_header_compile "$LINENO" "perl.h" "ac_cv_header_perl_h" "#include <EXTERN.h>
"
if test "x$ac_cv_header_perl_h" = xyes; then :
diff --git a/configure.in b/configure.in
index d1cc35458ca..11b4af801a4 100644
--- a/configure.in
+++ b/configure.in
@@ -915,6 +915,15 @@ if test "$with_perl" = yes; then
AC_MSG_ERROR([Perl not found])
fi
PGAC_CHECK_PERL_CONFIGS([archlibexp,privlibexp,useshrplib])
+ # On most platforms, archlibexp is also where the Perl include files live ...
+ perl_includedir="$perl_archlibexp"
+ # ... but on some macOS versions, we must look under $PG_SYSROOT instead
+ if test x"$PG_SYSROOT" != x"" ; then
+ if test -d "$PG_SYSROOT$perl_archlibexp" ; then
+ perl_includedir="$PG_SYSROOT$perl_archlibexp"
+ fi
+ fi
+ AC_SUBST(perl_includedir)dnl
PGAC_CHECK_PERL_EMBED_CCFLAGS
PGAC_CHECK_PERL_EMBED_LDFLAGS
fi
@@ -1934,7 +1943,7 @@ fi
# check for <perl.h>
if test "$with_perl" = yes; then
ac_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$perl_archlibexp/CORE"
+ CPPFLAGS="$CPPFLAGS -I$perl_includedir/CORE"
AC_CHECK_HEADER(perl.h, [], [AC_MSG_ERROR([header file <perl.h> is required for Perl])],
[#include <EXTERN.h>])
# While we're at it, check that we can link to libperl.
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index f6b299bcf59..9c299a87b5d 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -306,6 +306,7 @@ else
endif
perl_archlibexp = @perl_archlibexp@
perl_privlibexp = @perl_privlibexp@
+perl_includedir = @perl_includedir@
perl_useshrplib = @perl_useshrplib@
perl_embed_ccflags = @perl_embed_ccflags@
perl_embed_ldflags = @perl_embed_ldflags@
diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile
index 993b8f65558..1171881aa15 100644
--- a/src/pl/plperl/GNUmakefile
+++ b/src/pl/plperl/GNUmakefile
@@ -26,7 +26,7 @@ endif
# probably because it sometimes contains some header files with names
# that clash with some of ours, or with some that we include, notably on
# Windows.
-override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) $(perl_embed_ccflags) -I$(perl_archlibexp)/CORE
+override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) $(perl_embed_ccflags) -I$(perl_includedir)/CORE
rpathdir = $(perl_archlibexp)/CORE
diff --git a/src/template/darwin b/src/template/darwin
index 542f706b0fa..cff258be26b 100644
--- a/src/template/darwin
+++ b/src/template/darwin
@@ -1,9 +1,24 @@
# src/template/darwin
-# Select appropriate semaphore support. Darwin 6.0 (Mac OS X 10.2) and up
-# support System V semaphores; before that we have to use POSIX semaphores,
-# which are less good for our purposes because they eat a file descriptor
-# per backend per max_connection slot.
+# 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 test x"$PG_SYSROOT" = x"" ; then
+ PG_SYSROOT=`xcodebuild -version -sdk macosx Path 2>/dev/null`
+fi
+if test x"$PG_SYSROOT" != x"" ; then
+ if test -d "$PG_SYSROOT" ; then
+ CPPFLAGS="$CPPFLAGS -isysroot $PG_SYSROOT"
+ else
+ PG_SYSROOT=""
+ fi
+fi
+
+# Select appropriate semaphore support. Darwin 6.0 (macOS 10.2) and up
+# support System V semaphores; before that we have to use named POSIX
+# semaphores, which are less good for our purposes because they eat a
+# file descriptor per backend per max_connection slot.
case $host_os in
darwin[015].*)
USE_NAMED_POSIX_SEMAPHORES=1