blob: 29a6f54f7788b3fddc229c0159f0523bfdf6f4e7 [file] [log] [blame]
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +00001/*
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * Summary: macros for marking symbols as exportable/importable.
3 * Description: macros for marking symbols as exportable/importable.
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +00004 *
Daniel Veillardbe586972003-11-18 20:56:51 +00005 * Copy: See Copyright for the status of this software.
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +00006 *
Daniel Veillardbe586972003-11-18 20:56:51 +00007 * Author: Igor Zlatovic <igor@zlatkovic.com>
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +00008 */
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
Daniel Veillard7a02cfe2003-09-25 12:18:34 +000025/**
26 * XMLPUBFUN:
27 *
28 * Macros which declare an exportable function
29 */
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000030#define XMLPUBFUN
Daniel Veillard7a02cfe2003-09-25 12:18:34 +000031/**
32 * XMLPUBVAR:
33 *
34 * Macros which declare an exportable variable
35 */
Igor Zlatkoviccd386352003-08-25 10:05:36 +000036#define XMLPUBVAR extern
Daniel Veillard7a02cfe2003-09-25 12:18:34 +000037/**
38 * XMLCALL:
39 *
40 * Macros which declare the called convention for exported functions
41 */
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000042#define XMLCALL
Daniel Veillardffa3c742005-07-21 13:24:09 +000043/**
Daniel Veillard5eee7672005-08-22 21:22:27 +000044 * XMLCDECL:
Daniel Veillardffa3c742005-07-21 13:24:09 +000045 *
46 * Macro which declares the calling convention for exported functions that
47 * use '...'.
48 */
49#define XMLCDECL
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000050
Daniel Veillard1e906612003-12-05 14:57:46 +000051/** DOC_DISABLE */
52
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000053/* Windows platform with MS compiler */
54#if defined(_WIN32) && defined(_MSC_VER)
55 #undef XMLPUBFUN
56 #undef XMLPUBVAR
57 #undef XMLCALL
Daniel Veillardffa3c742005-07-21 13:24:09 +000058 #undef XMLCDECL
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000059 #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
Igor Zlatkovic01d99952003-08-28 16:26:39 +000067 #define XMLPUBVAR extern
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000068 #endif
69 #endif
Daniel Veillardffa3c742005-07-21 13:24:09 +000070 #if defined(LIBXML_FASTCALL)
71 #define XMLCALL __fastcall
72 #else
73 #define XMLCALL __cdecl
74 #endif
75 #define XMLCDECL __cdecl
Igor Zlatkovic5e483c82003-09-02 14:01:32 +000076 #if !defined _REENTRANT
77 #define _REENTRANT
78 #endif
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000079#endif
80
81/* Windows platform with Borland compiler */
82#if defined(_WIN32) && defined(__BORLANDC__)
83 #undef XMLPUBFUN
84 #undef XMLPUBVAR
85 #undef XMLCALL
Daniel Veillardffa3c742005-07-21 13:24:09 +000086 #undef XMLCDECL
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000087 #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
88 #define XMLPUBFUN __declspec(dllexport)
Igor Zlatkovic5b316cd2003-08-27 08:01:18 +000089 #define XMLPUBVAR __declspec(dllexport) extern
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000090 #else
91 #define XMLPUBFUN
92 #if !defined(LIBXML_STATIC)
93 #define XMLPUBVAR __declspec(dllimport) extern
94 #else
Igor Zlatkovic5b316cd2003-08-27 08:01:18 +000095 #define XMLPUBVAR extern
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +000096 #endif
97 #endif
98 #define XMLCALL __cdecl
Daniel Veillardffa3c742005-07-21 13:24:09 +000099 #define XMLCDECL __cdecl
Igor Zlatkovic5e483c82003-09-02 14:01:32 +0000100 #if !defined _REENTRANT
101 #define _REENTRANT
102 #endif
103#endif
104
105/* Windows platform with GNU compiler (Mingw) */
Daniel Veillardd324ff02003-12-09 14:09:47 +0000106#if defined(_WIN32) && defined(__MINGW32__)
Daniel Veillard51e57932004-02-25 17:08:10 +0000107 #undef XMLPUBFUN
Daniel Veillardd324ff02003-12-09 14:09:47 +0000108 #undef XMLPUBVAR
Daniel Veillard51e57932004-02-25 17:08:10 +0000109 #undef XMLCALL
Daniel Veillardffa3c742005-07-21 13:24:09 +0000110 #undef XMLCDECL
Daniel Veillard51e57932004-02-25 17:08:10 +0000111 #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
112 #define XMLPUBFUN __declspec(dllexport)
113 #define XMLPUBVAR __declspec(dllexport)
Daniel Veillardd324ff02003-12-09 14:09:47 +0000114 #else
Daniel Veillard51e57932004-02-25 17:08:10 +0000115 #define XMLPUBFUN
116 #if !defined(LIBXML_STATIC)
117 #define XMLPUBVAR __declspec(dllimport) extern
118 #else
119 #define XMLPUBVAR extern
120 #endif
Daniel Veillardd324ff02003-12-09 14:09:47 +0000121 #endif
Daniel Veillard51e57932004-02-25 17:08:10 +0000122 #define XMLCALL __cdecl
Daniel Veillardffa3c742005-07-21 13:24:09 +0000123 #define XMLCDECL __cdecl
Igor Zlatkovic5e483c82003-09-02 14:01:32 +0000124 #if !defined _REENTRANT
125 #define _REENTRANT
126 #endif
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +0000127#endif
128
129/* Cygwin platform, GNU compiler */
130#if defined(_WIN32) && defined(__CYGWIN__)
131 #undef XMLPUBFUN
132 #undef XMLPUBVAR
133 #undef XMLCALL
Daniel Veillardffa3c742005-07-21 13:24:09 +0000134 #undef XMLCDECL
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +0000135 #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
136 #define XMLPUBFUN __declspec(dllexport)
137 #define XMLPUBVAR __declspec(dllexport)
138 #else
139 #define XMLPUBFUN
140 #if !defined(LIBXML_STATIC)
141 #define XMLPUBVAR __declspec(dllimport) extern
142 #else
143 #define XMLPUBVAR
144 #endif
145 #endif
146 #define XMLCALL __cdecl
Daniel Veillardffa3c742005-07-21 13:24:09 +0000147 #define XMLCDECL __cdecl
Igor Zlatkovicf05e5d12003-08-25 09:15:36 +0000148#endif
149
150/* Compatibility */
151#if !defined(LIBXML_DLL_IMPORT)
152#define LIBXML_DLL_IMPORT XMLPUBVAR
153#endif
154
155#endif /* __XML_EXPORTS_H__ */
156
157