summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/ltcg.prf
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.13' into devLiang Qi2019-06-271-2/+4
|\ | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/network/ssl/qsslsocket_openssl.cpp Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io> Change-Id: Ibb57a0548b4977797b400637487a56245ac1c024
| * Add qmake config for controlling LTCG behavior for static libsThiago Macieira2019-06-171-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Static libraries may get installed and used by other builds, which may be done with a different version or build of the compiler. So this commit introduces two new flags: - no-static-ltcg: disables LTCG completely for static libraries - fat-static-lto: forces static libraries to produce fat LTO objects fat-static-lto is useful for Linux distributions, since installed static libraries should not carry LTO information, but that information is useful during Qt's own build. This feature should be used alongside some compiler-specific method of removing the LTO information from the static libraries prior to installation, so only the regular part remains. For current GCC versions, this command suffices: strip -R '.gnu.lto*' -R '.gnu.debuglto*' libname.a Otherwise, distributions can use "no-static-ltcg" to disable it completely. Change-Id: I495bc19409f348069f5bfffd155237ade9f4b42f Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* | Merge remote-tracking branch 'origin/5.12' into devLiang Qi2019-06-251-3/+6
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/gui/painting/qdrawhelper.cpp src/gui/text/qdistancefield.cpp src/gui/text/qdistancefield_p.h src/network/ssl/qsslsocket_openssl.cpp src/plugins/platforms/android/qandroidinputcontext.cpp src/widgets/styles/qstylesheetstyle.cpp Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io> Change-Id: Ia7daad21f077ea889898f17734ec46303e71fe6b
| * Append LTCG arguments properlyThiago Macieira2019-06-131-3/+6
| | | | | | | | | | | | | | | | | | If the QMAKE_CXXFLAGS already had -ffat-lto-objects, the *= wouldn't add it it again, after our "-flto -fno-fat-lto-objects", which meant the last one would stand. Change-Id: Ic9cfa6256b5045caa6e6fffd15a7f6cda7aaa837 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* | Clang: Add Thin LTO in addition to Full LTOYuhang Zhao2019-03-201-1/+1
|/ | | | | Change-Id: I6502f3ff31c16faebd9b931b99b77a273971f611 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Clean up ltcg.prf with variables, including a new static modeThiago Macieira2015-01-111-17/+17
| | | | | | | | | | By using the special "ar" and "ranlib" tools, the symbol table is made visible, so we don't need fat LTO binaries. Since we need to store the new tool names, we may as well clean up ltcg.prf with variable names for the fat mode too. Change-Id: I7e53af0c74a3d069313f38500b72538af1d61128 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Let qmake find the number of processors onlineThiago Macieira2015-01-111-8/+2
| | | | | | | Instead of trying to load in ltcg.prf and cache the value. Change-Id: If485ff68fc6ff9d9cf7009cd72d5e702d0199c7f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Fix linking of sources without LTCG to a static lib with LTCGThiago Macieira2014-12-011-17/+1
| | | | | | | | | | | | | | | | | | | | Whenever a binary is created and linked against a static lib that was compiled with LTCG, the final linking step requires the compiler flags so that the pre-compiled data in the shared library can get properly compiled. This could happen for a static build of Qt with LTCG, but also happens frequently for Qt's own build when linking regular libraries and applications against QtBootstrap or QtPlatformSupport. The linking fails when the target is a shared library (example: QtWaylandClient linking against QtPlatformSupport). The .prl file actually contains the "ltcg" flag, so the best solution would actually be to process that flag there and add link_ltcg if any dependent .prl has "ltcg", but I couldn't find out how to do that. Change-Id: I4a75a14d1dcb8c2089a427285e25d5555df7d7d3 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Make sure plugins under LTCG get the right flags too.Thiago Macieira2014-12-011-0/+2
| | | | | Change-Id: I51384b4c3ceca25b6e010ccf67fa0f1995cfa557 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Add link-time optimization support for Clang, GCC and ICCThiago Macieira2014-07-231-0/+54
GCC currently requires fat object files for static libraries, since the linker would otherwise not load the .o file from the archive at all and the linking would fail with a lot of undefined references. Clang on Linux also needs this, but it has no equivalent flag, so enabling LTCG for Clang on static libraries will result in linker error. This commit does not add support for enabling it in configure. It can be enabled on a per-project basis by doing CONFIG += ltcg or by passing -config ltcg to qmake's command-line. Change-Id: I52cf99f1ed9f1701e23a3b457ba3502fd28126ce Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>