X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c3ead1d1513a5eb79091a604f4e42b45d1bdf5d..7bd30a12ade503fd135c686ecc98a6f6d5fecbeb:/include/wx/dlimpexp.h diff --git a/include/wx/dlimpexp.h b/include/wx/dlimpexp.h index 13231ed6fd..12e98fea54 100644 --- a/include/wx/dlimpexp.h +++ b/include/wx/dlimpexp.h @@ -22,14 +22,25 @@ #elif defined(__WINDOWS__) /* __declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well - as VC++ and gcc + as VC++. */ -# if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__) +# if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__WATCOMC__) # define WXEXPORT __declspec(dllexport) # define WXIMPORT __declspec(dllimport) -# else /* compiler doesn't support __declspec() */ -# define WXEXPORT -# define WXIMPORT + /* + While gcc also supports __declspec(dllexport), it creates unusably huge + DLL files since gcc 4.5 (while taking horribly long amounts of time), + see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601. Because of this + we rely on binutils auto export/import support which seems to work + quite well for 4.5+. + */ +# elif defined(__GNUC__) && !wxCHECK_GCC_VERSION(4, 5) + /* + __declspec could be used here too but let's use the native + __attribute__ instead for clarity. + */ +# define WXEXPORT __attribute__((dllexport)) +# define WXIMPORT __attribute__((dllimport)) # endif #elif defined(__WXPM__) # if defined (__WATCOMC__) @@ -91,6 +102,7 @@ # define WXMAKINGDLL_RICHTEXT # define WXMAKINGDLL_MEDIA # define WXMAKINGDLL_STC +# define WXMAKINGDLL_WEB #endif /* WXMAKINGDLL */ /* @@ -263,6 +275,17 @@ # define WXDLLIMPEXP_DATA_STC(type) type #endif +#ifdef WXMAKINGDLL_WEB +# define WXDLLIMPEXP_WEB WXEXPORT +# define WXDLLIMPEXP_DATA_WEB(type) WXEXPORT type +#elif defined(WXUSINGDLL) +# define WXDLLIMPEXP_WEB WXIMPORT +# define WXDLLIMPEXP_DATA_WEB(type) WXIMPORT type +#else /* not making nor using DLL */ +# define WXDLLIMPEXP_WEB +# define WXDLLIMPEXP_DATA_WEB(type) type +#endif + /* GCC warns about using __attribute__ (and also __declspec in mingw32 case) on forward declarations while MSVC complains about forward declarations without @@ -284,6 +307,7 @@ #define WXDLLIMPEXP_FWD_RICHTEXT #define WXDLLIMPEXP_FWD_MEDIA #define WXDLLIMPEXP_FWD_STC + #define WXDLLIMPEXP_FWD_WEB #else #define WXDLLIMPEXP_FWD_BASE WXDLLIMPEXP_BASE #define WXDLLIMPEXP_FWD_NET WXDLLIMPEXP_NET @@ -299,6 +323,7 @@ #define WXDLLIMPEXP_FWD_RICHTEXT WXDLLIMPEXP_RICHTEXT #define WXDLLIMPEXP_FWD_MEDIA WXDLLIMPEXP_MEDIA #define WXDLLIMPEXP_FWD_STC WXDLLIMPEXP_STC + #define WXDLLIMPEXP_FWD_WEB WXDLLIMPEXP_WEB #endif /* for backwards compatibility, define suffix-less versions too */