1: /*
2: * Summary: macros for marking symbols as exportable/importable.
3: * Description: macros for marking symbols as exportable/importable.
4: *
5: * Copy: See Copyright for the status of this software.
6: *
7: * Author: Igor Zlatovic <igor@zlatkovic.com>
8: */
9:
10: #ifndef __XML_EXPORTS_H__
11: #define __XML_EXPORTS_H__
12:
13: /**
14: * XMLPUBFUN, XMLPUBVAR, XMLCALL
15: *
16: * Macros which declare an exportable function, an exportable variable and
17: * the calling convention used for functions.
18: *
19: * Please use an extra block for every platform/compiler combination when
20: * modifying this, rather than overlong #ifdef lines. This helps
21: * readability as well as the fact that different compilers on the same
22: * platform might need different definitions.
23: */
24:
25: /**
26: * XMLPUBFUN:
27: *
28: * Macros which declare an exportable function
29: */
30: #define XMLPUBFUN
31: /**
32: * XMLPUBVAR:
33: *
34: * Macros which declare an exportable variable
35: */
36: #define XMLPUBVAR extern
37: /**
38: * XMLCALL:
39: *
40: * Macros which declare the called convention for exported functions
41: */
42: #define XMLCALL
43: /**
44: * XMLCDECL:
45: *
46: * Macro which declares the calling convention for exported functions that
47: * use '...'.
48: */
49: #define XMLCDECL
50:
51: /** DOC_DISABLE */
52:
53: /* Windows platform with MS compiler */
54: #if defined(_WIN32) && defined(_MSC_VER)
55: #undef XMLPUBFUN
56: #undef XMLPUBVAR
57: #undef XMLCALL
58: #undef XMLCDECL
59: #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
60: #define XMLPUBFUN __declspec(dllexport)
61: #define XMLPUBVAR __declspec(dllexport)
62: #else
63: #define XMLPUBFUN
64: #if !defined(LIBXML_STATIC)
65: #define XMLPUBVAR __declspec(dllimport) extern
66: #else
67: #define XMLPUBVAR extern
68: #endif
69: #endif
70: #if defined(LIBXML_FASTCALL)
71: #define XMLCALL __fastcall
72: #else
73: #define XMLCALL __cdecl
74: #endif
75: #define XMLCDECL __cdecl
76: #if !defined _REENTRANT
77: #define _REENTRANT
78: #endif
79: #endif
80:
81: /* Windows platform with Borland compiler */
82: #if defined(_WIN32) && defined(__BORLANDC__)
83: #undef XMLPUBFUN
84: #undef XMLPUBVAR
85: #undef XMLCALL
86: #undef XMLCDECL
87: #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
88: #define XMLPUBFUN __declspec(dllexport)
89: #define XMLPUBVAR __declspec(dllexport) extern
90: #else
91: #define XMLPUBFUN
92: #if !defined(LIBXML_STATIC)
93: #define XMLPUBVAR __declspec(dllimport) extern
94: #else
95: #define XMLPUBVAR extern
96: #endif
97: #endif
98: #define XMLCALL __cdecl
99: #define XMLCDECL __cdecl
100: #if !defined _REENTRANT
101: #define _REENTRANT
102: #endif
103: #endif
104:
105: /* Windows platform with GNU compiler (Mingw) */
106: #if defined(_WIN32) && defined(__MINGW32__)
107: #undef XMLPUBFUN
108: #undef XMLPUBVAR
109: #undef XMLCALL
110: #undef XMLCDECL
111: /*
112: * if defined(IN_LIBXML) this raises problems on mingw with msys
113: * _imp__xmlFree listed as missing. Try to workaround the problem
114: * by also making that declaration when compiling client code.
115: */
116: #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
117: #define XMLPUBFUN __declspec(dllexport)
118: #define XMLPUBVAR __declspec(dllexport) extern
119: #else
120: #define XMLPUBFUN
121: #if !defined(LIBXML_STATIC)
122: #define XMLPUBVAR __declspec(dllimport) extern
123: #else
124: #define XMLPUBVAR extern
125: #endif
126: #endif
127: #define XMLCALL __cdecl
128: #define XMLCDECL __cdecl
129: #if !defined _REENTRANT
130: #define _REENTRANT
131: #endif
132: #endif
133:
134: /* Cygwin platform, GNU compiler */
135: #if defined(_WIN32) && defined(__CYGWIN__)
136: #undef XMLPUBFUN
137: #undef XMLPUBVAR
138: #undef XMLCALL
139: #undef XMLCDECL
140: #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
141: #define XMLPUBFUN __declspec(dllexport)
142: #define XMLPUBVAR __declspec(dllexport)
143: #else
144: #define XMLPUBFUN
145: #if !defined(LIBXML_STATIC)
146: #define XMLPUBVAR __declspec(dllimport) extern
147: #else
148: #define XMLPUBVAR
149: #endif
150: #endif
151: #define XMLCALL __cdecl
152: #define XMLCDECL __cdecl
153: #endif
154:
155: /* Compatibility */
156: #if !defined(LIBXML_DLL_IMPORT)
157: #define LIBXML_DLL_IMPORT XMLPUBVAR
158: #endif
159:
160: #endif /* __XML_EXPORTS_H__ */
161:
162:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>