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 (does not define _WIN32), GNU compiler */
135#if 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 extern
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
163