Home | History | Annotate | Download | only in libxml
      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 (at) 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