#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__)
#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
/*