Due to the changes in gcc 4.5, copies of dllexported inline functions are now
generated in all object files including their declarations, increasing their
sizes tenfold, and they are also now instantiated in the DLL itself increasing
its size fourfold. Moreover, linking such a gigantic DLL requires inordinate
amounts of memory and takes a very long time, see some statistics at
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601.
To avoid all these problems, don't use dllexport at all any more but rely on
binutils support for auto export/import which seems to work fine and results
in much smaller DLLs which are created much faster.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67971
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#elif defined(__WINDOWS__)
/*
__declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well
#elif defined(__WINDOWS__)
/*
__declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well
-# if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__)
+# if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__WATCOMC__)
# define WXEXPORT __declspec(dllexport)
# define WXIMPORT __declspec(dllimport)
# 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__)
# endif
#elif defined(__WXPM__)
# if defined (__WATCOMC__)