This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Test-Harness: don't assume symlink succeeds
[perl5.git] / hints / darwin.sh
index 690fe4e..fdfbdd4 100644 (file)
@@ -301,7 +301,7 @@ case "$osvers" in  # Note: osvers is the kernel version, not the 10.x
    # We now use MACOSX_DEPLOYMENT_TARGET, if set, as an override by
    # capturing its value and adding it to the flags.
     case "$MACOSX_DEPLOYMENT_TARGET" in
-    10.*)
+    [1-9][0-9].*)
       add_macosx_version_min ccflags $MACOSX_DEPLOYMENT_TARGET
       add_macosx_version_min ldflags $MACOSX_DEPLOYMENT_TARGET
       ;;
@@ -313,7 +313,7 @@ case "$osvers" in  # Note: osvers is the kernel version, not the 10.x
 
 *** Unexpected MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET
 ***
-*** Please either set it to 10.something, or to empty.
+*** Please either set it to a valid macOS version number (e.g., 10.15) or to empty.
 
 EOM
       exit 1
@@ -327,7 +327,7 @@ EOM
     # "ProductVersion:    10.11"     "10.11"
         prodvers=`sw_vers|awk '/^ProductVersion:/{print $2}'|awk -F. '{print $1"."$2}'`
     case "$prodvers" in
-    10.*)
+    [1-9][0-9].*)
       add_macosx_version_min ccflags $prodvers
       add_macosx_version_min ldflags $prodvers
       ;;
@@ -342,12 +342,19 @@ EOM
       exit 1
     esac
 
-    # The X in 10.X
-    prodvers_minor=$(echo $prodvers|awk -F. '{print $2}')
+    darwin_major=$(echo $osvers|awk -F. '{print $1}')
 
-    # macOS (10.12) deprecated syscall().
-    if [ "$prodvers_minor" -ge 12 ]; then
+    # macOS 10.12 (darwin 16.0.0) deprecated syscall().
+    if [ "$darwin_major" -ge 16 ]; then
         d_syscall='undef'
+        # If deploying to pre-10.12, suppress Time::HiRes's detection of the system clock_gettime()
+        case "$MACOSX_DEPLOYMENT_TARGET" in
+          10.[6-9]|10.10|10.11)
+          ccflags="$ccflags -Werror=partial-availability -D_DARWIN_FEATURE_CLOCK_GETTIME=0"
+          ;;
+        *)
+          ;;
+        esac
     fi
 
    lddlflags="${ldflags} -bundle -undefined dynamic_lookup"
@@ -511,3 +518,20 @@ if test "$d_unsetenv" = "$define" -a \
         ccflags="$ccflags -DPERL_USE_SAFE_PUTENV"
 fi
 EOOVER
+
+# if you use a newer toolchain before OS X 10.9 these functions may be
+# incorrectly detected, so disable them
+# OS X 10.10.x corresponds to kernel 14.x
+case "$osvers" in
+    [1-9].*|1[0-3].*)
+       d_linkat=undef
+       d_openat=undef
+       d_renameat=undef
+       d_unlinkat=undef
+       d_fchmodat=undef
+       ;;
+esac
+
+# mkostemp() was autodetected as present but found to not be linkable
+# on 15.6.0.  Unknown what other OS versions are affected.
+d_mkostemp=undef