-/* $Header: INTERN.h,v 4.0 91/03/20 00:58:35 lwall Locked $
+/* INTERN.h
*
- * Copyright (c) 1989, Larry Wall
+ * Copyright (c) 1991-2002, Larry Wall
*
- * You may distribute under the terms of the GNU General Public License
- * as specified in the README file that comes with the perl 3.0 kit.
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
*
- * $Log: INTERN.h,v $
- * Revision 4.0 91/03/20 00:58:35 lwall
- * 4.0 baseline.
- *
*/
+/*
+ * EXT designates a global var which is defined in perl.h
+ * dEXT designates a global var which is defined in another
+ * file, so we can't count on finding it in perl.h
+ * (this practice should be avoided).
+ */
#undef EXT
-#define EXT
+#undef dEXT
+#undef EXTCONST
+#undef dEXTCONST
+#if defined(VMS) && !defined(__GNUC__)
+ /* Suppress portability warnings from DECC for VMS-specific extensions */
+# ifdef __DECC
+# pragma message disable (GLOBALEXT,NOSHAREEXT,READONLYEXT)
+# endif
+# define EXT globaldef {"$GLOBAL_RW_VARS"} noshare
+# define dEXT globaldef {"$GLOBAL_RW_VARS"} noshare
+# define EXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
+# define dEXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
+#else
+#if defined(WIN32) && defined(__MINGW32__)
+# define EXT __declspec(dllexport)
+# define dEXT
+# define EXTCONST __declspec(dllexport) const
+# define dEXTCONST const
+#else
+#ifdef __cplusplus
+# define EXT
+# define dEXT
+# define EXTCONST extern const
+# define dEXTCONST const
+#else
+# define EXT
+# define dEXT
+# define EXTCONST const
+# define dEXTCONST const
+#endif
+#endif
+#endif
#undef INIT
#define INIT(x) = x