diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-11-26 10:11:27 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2014-01-16 09:44:37 +0100 |
commit | 99113b7cc7877d3ff1a4ed522ae0517edcde081b (patch) | |
tree | 6b4c5076e94192539e3a9e4e2a3a5ccd57f33b97 /Tools | |
parent | 9b0de4a45f7172710d5722ff302d43efde2c5365 (diff) | |
download | qtwebkit-99113b7cc7877d3ff1a4ed522ae0517edcde081b.tar.gz |
Reduce memory footprint when linkingv5.2.1
Linking QtWebKit on Linux x64 with debug symbols can use up to 11Gbyte
of memory. This can make it impossible to link on many systems.
This patch forces GCC 4.8+ to fully use DWARF-4 debug-types sections
to eleminate duplicate symbols and makes earlier GCC versions STABS
which also uses much less memory.
Task-number: QTBUG-36131
Change-Id: Ib1ba3e073b5984ead3a0badb935e7b89c01b962b
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/qmake/mkspecs/features/unix/default_post.prf | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/Tools/qmake/mkspecs/features/unix/default_post.prf b/Tools/qmake/mkspecs/features/unix/default_post.prf index 2df72d909..79b72087c 100644 --- a/Tools/qmake/mkspecs/features/unix/default_post.prf +++ b/Tools/qmake/mkspecs/features/unix/default_post.prf @@ -12,10 +12,27 @@ linux-g++*:isEqual(QT_ARCH,i386) { QMAKE_CFLAGS += -march=pentium4 -msse2 -mfpmath=sse QMAKE_CXXFLAGS += -march=pentium4 -msse2 -mfpmath=sse } +} - # Use the stabs format for 32 bit debug builds to make the object files a bit smaller. - QMAKE_CXXFLAGS_DEBUG -= -g - QMAKE_CXXFLAGS_DEBUG += -gstabs +*g++* { + # Use DWARF-4 optimally with GCC 4.8+, otherwise use STABS which uses much less memory. + greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 7) { + QMAKE_CXXFLAGS_DEBUG += -fdebug-types-section + QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -fdebug-types-section + separate_debug_info: QMAKE_CXXFLAGS_RELEASE += -fdebug-types-section + QMAKE_LFLAGS += -fdebug-types-section + } else { + # If DWARF-2 is desired -feliminate-dwarf2-dups can be used with GCC 4.7, + # but it causes internal compiler errors in older versions of GCC. + QMAKE_CXXFLAGS_DEBUG -= -g + QMAKE_CXXFLAGS_DEBUG += -gstabs + QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -g + QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -gstabs + separate_debug_info { + QMAKE_CXXFLAGS_RELEASE -= -g + QMAKE_CXXFLAGS_RELEASE += -gstabs + } + } } linux-*g++* { @@ -43,9 +60,9 @@ linux-*g++* { contains(TEMPLATE, app): CONFIG += rpath -isEqual(QT_ARCH,i386):CONFIG(debug, debug|release) { - # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase. - config_gnuld: QMAKE_LFLAGS += -Wl,--no-keep-memory +CONFIG(debug, debug|release)|force_debug_info|separate_debug_info { + # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase. + !force_static_libs_as_shared:config_gnuld: QMAKE_LFLAGS += -Wl,--no-keep-memory } load(default_post) |