Don't use __declspec(dllexport) for MinGW gcc 4.5 and later.
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
This commit is contained in:
parent
eeac2326b0
commit
49d2c0adc3
@ -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__)
|
||||
|
Loading…
Reference in New Issue
Block a user