This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
android hints: Always define d_libname_unique
[perl5.git] / hints / darwin.sh
index 3e1c603..f9b697b 100644 (file)
@@ -13,11 +13,16 @@ perl_version=`awk '/define[         ]+PERL_VERSION/ {print $3}' $src/patchlevel.h`
 perl_subversion=`awk '/define[         ]+PERL_SUBVERSION/ {print $3}' $src/patchlevel.h`
 version="${perl_revision}.${perl_version}.${perl_subversion}"
 
-# Pretend that Darwin doesn't know about those system calls [perl #24122]
-d_setregid='undef'
-d_setreuid='undef'
-d_setrgid='undef'
-d_setruid='undef'
+# Pretend that Darwin doesn't know about those system calls in Tiger
+# (10.4/darwin 8) and earlier [perl #24122]
+case "$osvers" in
+[1-8].*)
+    d_setregid='undef'
+    d_setreuid='undef'
+    d_setrgid='undef'
+    d_setruid='undef'
+    ;;
+esac
 
 # This was previously used in all but causes three cases
 # (no -Ddprefix=, -Dprefix=/usr, -Dprefix=/some/thing/else)
@@ -68,8 +73,10 @@ esac
 # Since we can build fat, the archname doesn't need the processor type
 archname='darwin';
 
-# nm works.
-usenm='true';
+# nm isn't known to work after Snow Leopard and XCode 4; testing with OS X 10.5
+# and Xcode 3 shows a working nm, but pretending it doesn't work produces no
+# problems.
+usenm='false';
 
 case "$optimize" in
 '')
@@ -121,11 +128,13 @@ case "$(grep '^#define INT32_MIN' /usr/include/stdint.h)" in
 esac
 
 # Avoid Apple's cpp precompiler, better for extensions
-cppflags="${cppflags} -no-cpp-precomp"
+if [ "X`echo | ${cc} -no-cpp-precomp -E - 2>&1 >/dev/null`" = "X" ]; then
+    cppflags="${cppflags} -no-cpp-precomp"
 
-# This is necessary because perl's build system doesn't
-# apply cppflags to cc compile lines as it should.
-ccflags="${ccflags} ${cppflags}"
+    # This is necessary because perl's build system doesn't
+    # apply cppflags to cc compile lines as it should.
+    ccflags="${ccflags} ${cppflags}"
+fi
 
 # Known optimizer problems.
 case "`cc -v 2>&1`" in
@@ -196,8 +205,8 @@ esac
 EOCBU
 
 # 64-bit addressing support. Currently strictly experimental. DFD 2005-06-06
-if [ "$use64bitall" ]
-then
+case "$use64bitall" in
+$define|true|[yY]*)
 case "$osvers" in
 [1-7].*)
      cat <<EOM >&4
@@ -206,30 +215,52 @@ case "$osvers" in
 
 *** 64-bit addressing is not supported for Mac OS X versions
 *** below 10.4 ("Tiger") or Darwin versions below 8. Please try
-*** again without -D64bitall. (-D64bitint will work, however.)
+*** again without -Duse64bitall. (-Duse64bitint will work, however.)
 
 EOM
      exit 1
   ;;
 *)
-    cat <<EOM >&4
+    case "$osvers" in
+    8.*)
+        cat <<EOM >&4
 
 
 
 *** Perl 64-bit addressing support is experimental for Mac OS X
-*** 10.4 ("Tiger") and Darwin version 8. Expect a number of test
-*** failures:
-***    ext/IO/io_*   ext/IPC/sysV/t/*   lib/Net/Ping/t/450_service
-***    Any test that uses sdbm
+*** 10.4 ("Tiger") and Darwin version 8. System V IPC is disabled
+*** due to problems with the 64-bit versions of msgctl, semctl,
+*** and shmctl. You should also expect the following test failures:
+***
+***    ext/threads-shared/t/wait (threaded builds only)
 
 EOM
+
+        [ "$d_msgctl" ] || d_msgctl='undef'
+        [ "$d_semctl" ] || d_semctl='undef'
+        [ "$d_shmctl" ] || d_shmctl='undef'
+    ;;
+    esac
+
+    case `uname -p` in 
+    powerpc) arch=ppc64 ;;
+    i386) arch=x86_64 ;;
+    *) cat <<EOM >&4
+
+*** Don't recognize processor, can't specify 64 bit compilation.
+
+EOM
+    ;;
+    esac
     for var in ccflags cppflags ld ldflags
     do
-       eval $var="\$${var}\ -arch\ ppc64"
+       eval $var="\$${var}\ -arch\ $arch"
     done
+
     ;;
 esac
-fi
+;;
+esac
 
 ##
 # System libraries