diff --git a/configure b/configure index fb5d4a2fcb..feee12b538 100755 --- a/configure +++ b/configure @@ -670,7 +670,7 @@ python_majorversion PYTHON perl_embed_ldflags perl_embed_ccflags -perl_includedir +perl_includespec perl_useshrplib perl_privlibexp perl_archlibexp @@ -7505,11 +7505,12 @@ test "$PORTNAME" = "win32" && perl_useshrplib=`echo $perl_useshrplib | sed 's,\\ { $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 + perl_includespec="-I$perl_archlibexp/CORE" + # ... but on newer macOS versions, we must use -iwithsysroot to look + # under $PG_SYSROOT + if test \! -f "$perl_archlibexp/CORE/perl.h" ; then if test -f "$PG_SYSROOT$perl_archlibexp/CORE/perl.h" ; then - perl_includedir="$PG_SYSROOT$perl_archlibexp" + perl_includespec="-iwithsysroot $perl_archlibexp/CORE" fi fi @@ -14680,12 +14681,7 @@ eval TCL_LIBS=\"$TCL_LIBS\" eval TCL_LIB_SPEC=\"$TCL_LIB_SPEC\" eval TCL_SHARED_BUILD=\"$TCL_SHARED_BUILD\" - # 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 + # now that we have TCL_INCLUDE_SPEC, we can check for ac_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS" ac_fn_c_check_header_mongrel "$LINENO" "tcl.h" "ac_cv_header_tcl_h" "$ac_includes_default" @@ -14702,7 +14698,7 @@ fi # check for if test "$with_perl" = yes; then ac_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$perl_includedir/CORE" + CPPFLAGS="$CPPFLAGS $perl_includespec" ac_fn_c_check_header_compile "$LINENO" "perl.h" "ac_cv_header_perl_h" "#include " if test "x$ac_cv_header_perl_h" = xyes; then : diff --git a/configure.in b/configure.in index 9a29fd7887..68486fd9fe 100644 --- a/configure.in +++ b/configure.in @@ -916,14 +916,15 @@ if test "$with_perl" = yes; then 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 + perl_includespec="-I$perl_archlibexp/CORE" + # ... but on newer macOS versions, we must use -iwithsysroot to look + # under $PG_SYSROOT + if test \! -f "$perl_archlibexp/CORE/perl.h" ; then if test -f "$PG_SYSROOT$perl_archlibexp/CORE/perl.h" ; then - perl_includedir="$PG_SYSROOT$perl_archlibexp" + perl_includespec="-iwithsysroot $perl_archlibexp/CORE" fi fi - AC_SUBST(perl_includedir)dnl + AC_SUBST(perl_includespec)dnl PGAC_CHECK_PERL_EMBED_CCFLAGS PGAC_CHECK_PERL_EMBED_LDFLAGS fi @@ -1933,11 +1934,6 @@ if test "$with_tcl" = yes; then PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH], [TCL_INCLUDE_SPEC,TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD]) AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one - # 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 ac_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$TCL_INCLUDE_SPEC $CPPFLAGS" @@ -1948,7 +1944,7 @@ fi # check for if test "$with_perl" = yes; then ac_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$perl_includedir/CORE" + CPPFLAGS="$CPPFLAGS $perl_includespec" AC_CHECK_HEADER(perl.h, [], [AC_MSG_ERROR([header file is required for Perl])], [#include ]) # 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 9c299a87b5..363b643f72 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -306,7 +306,7 @@ else endif perl_archlibexp = @perl_archlibexp@ perl_privlibexp = @perl_privlibexp@ -perl_includedir = @perl_includedir@ +perl_includespec = @perl_includespec@ 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 1171881aa1..97a94c727e 100644 --- a/src/pl/plperl/GNUmakefile +++ b/src/pl/plperl/GNUmakefile @@ -22,12 +22,13 @@ override CPPFLAGS += -DPLPERL_HAVE_UID_GID override CFLAGS += -Wno-comment endif -# Note: we need to make sure that the CORE directory is included last, +# Note: we need to include the perl_includespec directory last, # 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_includedir)/CORE +override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) $(perl_embed_ccflags) $(perl_includespec) +# this is often, but not always, the same directory named by perl_includespec rpathdir = $(perl_archlibexp)/CORE diff --git a/src/template/darwin b/src/template/darwin index 7022733566..159d8bb127 100644 --- a/src/template/darwin +++ b/src/template/darwin @@ -3,9 +3,8 @@ # 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 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. +# Some configure tests require explicit knowledge of where the Xcode "sysroot" +# is. We try to avoid having this leak into configure's results, though. if test x"$PG_SYSROOT" = x"" ; then PG_SYSROOT=`xcodebuild -version -sdk macosx Path 2>/dev/null` fi