Apparently the __APPLE__ cpp symbol is not Officially Sanctioned
Jarkko Hietaniemi [Fri, 13 Jun 2003 14:33:51 +0000 (14:33 +0000)]
way of detecting Darwin/Mac OS X; instead it is recommended to
detect the OS at a higher level and pass the information manually
down to the application, using e.g. a -Ddefinition.

p4raw-id: //depot/perl@19764

hints/darwin.sh
perl.h
x2p/util.c

index 748a67f..affa83c 100644 (file)
@@ -71,7 +71,10 @@ esac
 
 # -pipe: makes compilation go faster.
 # -fno-common because common symbols are not allowed in MH_DYLIB
-ccflags="${ccflags} -pipe -fno-common"
+# -DDARWIN: apparently the __APPLE__ is not sanctioned by Apple
+# as the way to differentiate Mac OS X.  (The official line is that
+# *no* cpp symbol does differentiate Mac OS X.)
+ccflags="${ccflags} -pipe -fno-common -DDARWIN"
 
 # At least on Darwin 1.3.x:
 #
diff --git a/perl.h b/perl.h
index 89c683c..70a88d8 100644 (file)
--- a/perl.h
+++ b/perl.h
 
 /* Use the reentrant APIs like localtime_r and getpwent_r */
 /* Win32 has naturally threadsafe libraries, no need to use any _r variants. */
-#if defined(USE_ITHREADS) && !defined(USE_REENTRANT_API) && !defined(NETWARE) && !defined(WIN32) && !defined(__APPLE__)
+#if defined(USE_ITHREADS) && !defined(USE_REENTRANT_API) && !defined(NETWARE) && !defined(WIN32) && !defined(DARWIN)
 #   define USE_REENTRANT_API
 #endif
 
 /* <--- here ends the logic shared by perl.h and makedef.pl */
 
 /*
- * __APPLE__ for Darwin/MacOSX
+ * DARWIN for MacOSX (__APPLE__ exists but is not officially sanctioned)
+ * (The -DDARWIN comes from the hints/darwin.sh.)
  * __bsdi__ for BSD/OS
  */
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__bsdi__) || defined(BSD41) || defined(BSD42) || defined(BSD43) || defined(BSD44)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(DARWIN) || defined(__bsdi__) || defined(BSD41) || defined(BSD42) || defined(BSD43) || defined(BSD44)
 #   ifndef BSDish
 #       define BSDish
 #   endif
@@ -2919,13 +2920,13 @@ typedef OP* (CPERLscope(*PPADDR_t)[]) (pTHX);
 
 /* NeXT has problems with crt0.o globals */
 #if defined(__DYNAMIC__) && \
-    (defined(NeXT) || defined(__NeXT__) || defined(__APPLE__))
+    (defined(NeXT) || defined(__NeXT__) || defined(DARWIN))
 #  if defined(NeXT) || defined(__NeXT)
 #    include <mach-o/dyld.h>
 #    define environ (*environ_pointer)
 EXT char *** environ_pointer;
 #  else
-#    if defined(__APPLE__) && defined(PERL_CORE)
+#    if defined(DARWIN) && defined(PERL_CORE)
 #      include <crt_externs.h> /* for the env array */
 #      define environ (*_NSGetEnviron())
 #    endif
index d5a2e75..5759c5b 100644 (file)
@@ -206,7 +206,7 @@ fatal(char *pat,...)
     exit(1);
 }
 
-#if defined(__APPLE_CC__)
+#if defined(DARWIN)
 __private_extern__     /* warn() conflicts with libc */
 #endif
 void