Merge some changes from ActivePerl 5.8.8.816
Steve Hay [Mon, 20 Mar 2006 17:21:15 +0000 (17:21 +0000)]
See:
http://downloads.activestate.com/ActivePerl/src/5.8/AP816_diff.txt

These changes provide better support for building XS extension modules
using VC++ or MinGW when perl itself was built with the opposite of
those two compilers.

p4raw-id: //depot/perl@27555

win32/config_H.gc
win32/config_H.vc

index 4f9837d..c28f1a4 100644 (file)
  *     This symbol is intended to be used along with CPPRUN in the same manner
  *     symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
  */
-#define CPPSTDIN "gcc -E"
-#define CPPMINUS "-"
-#define CPPRUN "gcc -E"
+#ifndef _MSC_VER
+#   define CPPSTDIN "gcc -E"
+#   define CPPMINUS "-"
+#   define CPPRUN "gcc -E"
+#else
+#   define CPPSTDIN "cppstdin"
+#   define CPPMINUS ""
+#   define CPPRUN "cl -nologo -E"
+#endif
 #define CPPLAST ""
 
 /* HAS__FWALK:
  *     This symbol is defined if the C compiler can cast negative
  *     or large floating point numbers to 32-bit ints.
  */
-#define        CASTI32         /**/
+#ifndef _MSC_VER
+#   define     CASTI32         /**/
+#endif
 
 /* CASTNEGFLOAT:
  *     This symbol is defined if the C compiler can cast negative
  */
 #define HAS_LONG_DOUBLE                /**/
 #ifdef HAS_LONG_DOUBLE
-#define LONG_DOUBLESIZE 12             /**/
+#   ifndef _MSC_VER
+#      define LONG_DOUBLESIZE 12               /**/
+#   else
+#      define LONG_DOUBLESIZE 10               /**/
+#   endif
 #endif
 
 /* HAS_LONG_LONG:
 /* Off_t_size:
  *     This symbol holds the number of bytes used by the Off_t.
  */
-#define Off_t long long                /* <offset> type */
+#ifndef _MSC_VER
+#   define Off_t long long             /* <offset> type */
+#else
+#   define Off_t __int64               /* <offset> type */
+#endif
 #define LSEEKSIZE 8            /* <offset> size */
 #define Off_t_size 8   /* <offset> size */
 
  */
 /*#define HAS_QUAD     /**/
 #ifdef HAS_QUAD
-#   define Quad_t long long    /**/
-#   define Uquad_t unsigned long long  /**/
+#   ifndef _MSC_VER
+#      define Quad_t long long /**/
+#      define Uquad_t unsigned long long       /**/
+#   else
+#      define Quad_t __int64   /**/
+#      define Uquad_t unsigned __int64 /**/
+#   endif
 #   define QUADKIND 5  /**/
 #   define QUAD_IS_INT 1
 #   define QUAD_IS_LONG        2
 #define        I32TYPE         long    /**/
 #define        U32TYPE         unsigned long   /**/
 #ifdef HAS_QUAD
-#define        I64TYPE         long long       /**/
-#define        U64TYPE         unsigned long long      /**/
+#   ifndef _MSC_VER
+#      define  I64TYPE         long long       /**/
+#      define  U64TYPE         unsigned long long      /**/
+#   else
+#      define  I64TYPE         __int64 /**/
+#      define  U64TYPE         unsigned __int64        /**/
+#   endif
 #endif
 #define        NVTYPE          double          /**/
 #define        IVSIZE          4               /**/
index 12e523d..f394791 100644 (file)
  *     This symbol is intended to be used along with CPPRUN in the same manner
  *     symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
  */
-#define CPPSTDIN "cppstdin"
-#define CPPMINUS ""
-#define CPPRUN "cl -nologo -E"
+
+#ifndef __GNUC__
+#   define CPPSTDIN "cppstdin"
+#   define CPPMINUS ""
+#   define CPPRUN "cl -nologo -E"
+#else
+#   define CPPSTDIN "gcc -E"
+#   define CPPMINUS "-"
+#   define CPPRUN "gcc -E"
+#endif
 #define CPPLAST ""
 
 /* HAS__FWALK:
  *     This symbol is defined if the C compiler can cast negative
  *     or large floating point numbers to 32-bit ints.
  */
-/*#define      CASTI32         /**/
+#ifdef __GNUC__
+#   define     CASTI32         /**/
+#endif
 
 /* CASTNEGFLOAT:
  *     This symbol is defined if the C compiler can cast negative
  */
 #define HAS_LONG_DOUBLE                /**/
 #ifdef HAS_LONG_DOUBLE
-#define LONG_DOUBLESIZE 10             /**/
+#   ifndef __GNUC__
+#      define LONG_DOUBLESIZE 10               /**/
+#   else
+#      define LONG_DOUBLESIZE 12               /**/
+#   endif
 #endif
 
 /* HAS_LONG_LONG:
 /* Off_t_size:
  *     This symbol holds the number of bytes used by the Off_t.
  */
-#define Off_t __int64          /* <offset> type */
+#ifndef __GNUC__
+#   define Off_t __int64               /* <offset> type */
+#else
+#   define Off_t long long             /* <offset> type */
+#endif
 #define LSEEKSIZE 8            /* <offset> size */
 #define Off_t_size 8   /* <offset> size */
 
  */
 /*#define HAS_QUAD     /**/
 #ifdef HAS_QUAD
-#   define Quad_t __int64      /**/
-#   define Uquad_t unsigned __int64    /**/
+#   ifndef __GNUC__
+#      define Quad_t __int64   /**/
+#      define Uquad_t unsigned __int64 /**/
+#   else
+#      define Quad_t long long /**/
+#      define Uquad_t unsigned long long       /**/
+#   endif
 #   define QUADKIND 5  /**/
 #   define QUAD_IS_INT 1
 #   define QUAD_IS_LONG        2
 #define        I32TYPE         long    /**/
 #define        U32TYPE         unsigned long   /**/
 #ifdef HAS_QUAD
-#define        I64TYPE         __int64 /**/
-#define        U64TYPE         unsigned __int64        /**/
+#   ifndef __GNUC__
+#      define  I64TYPE         __int64 /**/
+#      define  U64TYPE         unsigned __int64        /**/
+#   else
+#      define  I64TYPE         long long       /**/
+#      define  U64TYPE         unsigned long long      /**/
+#   endif
 #endif
 #define        NVTYPE          double          /**/
 #define        IVSIZE          4               /**/