This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove #ifdef PERL_CUSTOM_OPS, always build with PERL_CUSTOM_OPS
[perl5.git] / EXTERN.h
index 9a5f450..8329089 100644 (file)
--- a/EXTERN.h
+++ b/EXTERN.h
@@ -1,21 +1,58 @@
-/* $RCSfile: EXTERN.h,v $$Revision: 4.0.1.1 $$Date: 91/06/07 10:10:32 $
+/*    EXTERN.h
  *
- *    Copyright (c) 1991, Larry Wall
+ *    Copyright (c) 1991-2001, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
  *
- * $Log:       EXTERN.h,v $
- * Revision 4.0.1.1  91/06/07  10:10:32  lwall
- * patch4: new copyright notice
- * 
- * Revision 4.0  91/03/20  00:58:26  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 extern
+#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 globalref
+#  define dEXT globaldef {"$GLOBAL_RW_VARS"} noshare
+#  define EXTCONST globalref
+#  define dEXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
+#else
+#  if defined(WIN32) && !defined(PERL_STATIC_SYMS)
+#    ifdef PERLDLL
+#      define EXT extern __declspec(dllexport)
+#      define dEXT 
+#      define EXTCONST extern __declspec(dllexport) const
+#      define dEXTCONST const
+#    else
+#      define EXT extern __declspec(dllimport)
+#      define dEXT 
+#      define EXTCONST extern __declspec(dllimport) const
+#      define dEXTCONST const
+#    endif
+#  else
+#    if defined(__CYGWIN__) && defined(USEIMPORTLIB)
+#      define EXT extern __declspec(dllimport)
+#      define dEXT 
+#      define EXTCONST extern __declspec(dllimport) const
+#      define dEXTCONST const
+#    else
+#      define EXT extern
+#      define dEXT
+#      define EXTCONST extern const
+#      define dEXTCONST const
+#    endif
+#  endif
+#endif
 
 #undef INIT
 #define INIT(x)