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
163