This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add test for change#4417
[perl5.git] / EXTERN.h
1 /*    EXTERN.h
2  *
3  *    Copyright (c) 1991-1999, Larry Wall
4  *
5  *    You may distribute under the terms of either the GNU General Public
6  *    License or the Artistic License, as specified in the README file.
7  *
8  */
9
10 /*
11  * EXT  designates a global var which is defined in perl.h
12  * dEXT designates a global var which is defined in another
13  *      file, so we can't count on finding it in perl.h
14  *      (this practice should be avoided).
15  */
16 #undef EXT
17 #undef dEXT
18 #undef EXTCONST
19 #undef dEXTCONST
20 #if defined(VMS) && !defined(__GNUC__)
21     /* Suppress portability warnings from DECC for VMS-specific extensions */
22 #  ifdef __DECC
23 #    pragma message disable (GLOBALEXT,NOSHAREEXT,READONLYEXT)
24 #  endif
25 #  define EXT globalref
26 #  define dEXT globaldef {"$GLOBAL_RW_VARS"} noshare
27 #  define EXTCONST globalref
28 #  define dEXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
29 #else
30 #  if defined(WIN32) && !defined(PERL_STATIC_SYMS) && !defined(__GNUC__) && !defined(PERL_OBJECT)
31 #    ifdef PERLDLL
32 #      define EXT extern __declspec(dllexport)
33 #      define dEXT 
34 #      define EXTCONST extern __declspec(dllexport) const
35 #      define dEXTCONST const
36 #    else
37 #      define EXT extern __declspec(dllimport)
38 #      define dEXT 
39 #      define EXTCONST extern __declspec(dllimport) const
40 #      define dEXTCONST const
41 #    endif
42 #  else
43 #    if defined(CYGWIN) && defined(USEIMPORTLIB)
44 #      define EXT extern __declspec(dllimport)
45 #      define dEXT 
46 #      define EXTCONST extern __declspec(dllimport) const
47 #      define dEXTCONST const
48 #    else
49 #      define EXT extern
50 #      define dEXT
51 #      define EXTCONST extern const
52 #      define dEXTCONST const
53 #    endif
54 #  endif
55 #endif
56
57 #undef INIT
58 #define INIT(x)
59
60 #undef DOINIT