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