1 /* libxml2 - Library for parsing XML documents
2  * Copyright (C) 2006-2019 Free Software Foundation, Inc.
3  *
4  * This file is not part of the GNU gettext program, but is used with
5  * GNU gettext.
6  *
7  * The original copyright notice is as follows:
8  */
9 
10 /*
11  * Copyright (C) 1998-2012 Daniel Veillard.  All Rights Reserved.
12  *
13  * Permission is hereby granted, free of charge, to any person obtaining a copy
14  * of this software and associated documentation files (the "Software"), to deal
15  * in the Software without restriction, including without limitation the rights
16  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17  * copies of the Software, and to permit persons to whom the Software is fur-
18  * nished to do so, subject to the following conditions:
19  *
20  * The above copyright notice and this permission notice shall be included in
21  * all copies or substantial portions of the Software.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
25  * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
26  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
29  * THE SOFTWARE.
30  *
31  * Author: Igor Zlatovic <igor@zlatkovic.com>
32  */
33 
34 /*
35  * Summary: macros for marking symbols as exportable/importable.
36  * Description: macros for marking symbols as exportable/importable.
37  */
38 
39 #ifndef __XML_EXPORTS_H__
40 #define __XML_EXPORTS_H__
41 
42 /**
43  * XMLPUBFUN, XMLPUBVAR, XMLCALL
44  *
45  * Macros which declare an exportable function, an exportable variable and
46  * the calling convention used for functions.
47  *
48  * Please use an extra block for every platform/compiler combination when
49  * modifying this, rather than overlong #ifdef lines. This helps
50  * readability as well as the fact that different compilers on the same
51  * platform might need different definitions.
52  */
53 
54 /**
55  * XMLPUBFUN:
56  *
57  * Macros which declare an exportable function
58  */
59 #define XMLPUBFUN
60 /**
61  * XMLPUBVAR:
62  *
63  * Macros which declare an exportable variable
64  */
65 #define XMLPUBVAR extern
66 /**
67  * XMLCALL:
68  *
69  * Macros which declare the called convention for exported functions
70  */
71 #define XMLCALL
72 /**
73  * XMLCDECL:
74  *
75  * Macro which declares the calling convention for exported functions that
76  * use '...'.
77  */
78 #define XMLCDECL
79 
80 /** DOC_DISABLE */
81 
82 /* Windows platform with MS compiler */
83 #if defined(_WIN32) && defined(_MSC_VER)
84   #undef XMLPUBFUN
85   #undef XMLPUBVAR
86   #undef XMLCALL
87   #undef XMLCDECL
88   #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
89     #define XMLPUBFUN __declspec(dllexport)
90     #define XMLPUBVAR __declspec(dllexport)
91   #else
92     #define XMLPUBFUN
93     #if !defined(LIBXML_STATIC)
94       #define XMLPUBVAR __declspec(dllimport) extern
95     #else
96       #define XMLPUBVAR extern
97     #endif
98   #endif
99   #if defined(LIBXML_FASTCALL)
100     #define XMLCALL __fastcall
101   #else
102     #define XMLCALL __cdecl
103   #endif
104   #define XMLCDECL __cdecl
105   #if !defined _REENTRANT
106     #define _REENTRANT
107   #endif
108 #endif
109 
110 /* Windows platform with Borland compiler */
111 #if defined(_WIN32) && defined(__BORLANDC__)
112   #undef XMLPUBFUN
113   #undef XMLPUBVAR
114   #undef XMLCALL
115   #undef XMLCDECL
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 /* Windows platform with GNU compiler (Mingw) */
135 #if defined(_WIN32) && defined(__MINGW32__)
136   #undef XMLPUBFUN
137   #undef XMLPUBVAR
138   #undef XMLCALL
139   #undef XMLCDECL
140   /*
141    * if defined(IN_LIBXML) this raises problems on mingw with msys
142    * _imp__xmlFree listed as missing. Try to workaround the problem
143    * by also making that declaration when compiling client code.
144    */
145   #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
146     #define XMLPUBFUN __declspec(dllexport)
147     #define XMLPUBVAR __declspec(dllexport) extern
148   #else
149     #define XMLPUBFUN
150     #if !defined(LIBXML_STATIC)
151       #define XMLPUBVAR __declspec(dllimport) extern
152     #else
153       #define XMLPUBVAR extern
154     #endif
155   #endif
156   #define XMLCALL __cdecl
157   #define XMLCDECL __cdecl
158   #if !defined _REENTRANT
159     #define _REENTRANT
160   #endif
161 #endif
162 
163 /* Cygwin platform (does not define _WIN32), GNU compiler */
164 #if defined(__CYGWIN__)
165   #undef XMLPUBFUN
166   #undef XMLPUBVAR
167   #undef XMLCALL
168   #undef XMLCDECL
169   #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
170     #define XMLPUBFUN __declspec(dllexport)
171     #define XMLPUBVAR __declspec(dllexport)
172   #else
173     #define XMLPUBFUN
174     #if !defined(LIBXML_STATIC)
175       #define XMLPUBVAR __declspec(dllimport) extern
176     #else
177       #define XMLPUBVAR extern
178     #endif
179   #endif
180   #define XMLCALL __cdecl
181   #define XMLCDECL __cdecl
182 #endif
183 
184 /* Compatibility */
185 #if !defined(LIBXML_DLL_IMPORT)
186 #define LIBXML_DLL_IMPORT XMLPUBVAR
187 #endif
188 
189 #endif /* __XML_EXPORTS_H__ */
190 
191 
192