diff options
Diffstat (limited to 'mkspecs/features/ltcg.prf')
-rw-r--r-- | mkspecs/features/ltcg.prf | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/mkspecs/features/ltcg.prf b/mkspecs/features/ltcg.prf new file mode 100644 index 0000000000..b418135014 --- /dev/null +++ b/mkspecs/features/ltcg.prf @@ -0,0 +1,54 @@ +CONFIG(release, debug|release) { + # We need fat object files when creating static libraries on some platforms + # so the linker will know to load a particular object from the library + # in the first place. With GCC, we have -ffat-lto-objects. MSVC + # seems to work just fine. For other compilers, we disable LTCG + # for static libraries. + msvc { + # Nothing to do + } else: gcc { + !clang:!intel_icc { + static|fat-lto { + QMAKE_CFLAGS_LTCG += -ffat-lto-objects + QMAKE_CXXFLAGS_LTCG += -ffat-lto-objects + } else { + QMAKE_CFLAGS_LTCG += -fno-fat-lto-objects + QMAKE_CXXFLAGS_LTCG += -fno-fat-lto-objects + } + linux { + # Get the number of online processors, like _SC_NPROCESSORS_ONLN + isEmpty(QMAKE_NPROCESSORS_ONLN) { + QMAKE_NPROCESSORS_ONLN = $$system("grep -c '^processor' /proc/cpuinfo 2>/dev/null || echo 1") + cache(QMAKE_NPROCESSORS_ONLN, set stash) + } + + # Override LTO number of jobs + QMAKE_LFLAGS_LTCG -= -flto + QMAKE_LFLAGS_LTCG += -flto=$$QMAKE_NPROCESSORS_ONLN + } + } else: static { + QMAKE_CFLAGS_LTCG = + QMAKE_CXXFLAGS_LTCG = + QMAKE_LFLAGS_LTCG = + } + + # When doing link-time code generation, we need to pass the compiler + # flags during linking stage too. This file is processed after + # default_post.prf, so the QMAKE_CXXFLAGS already contains + # QMAKE_CXXFLAGS_DEBUG or _RELEASE. + use_c_linker { + # use_c_linker.prf is in effect, use the C flags + QMAKE_LFLAGS_LTCG += $$QMAKE_CFLAGS $$QMAKE_CFLAGS_LTCG + QMAKE_LFLAGS_APP += $$QMAKE_CFLAGS_APP + QMAKE_LFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB + } else { + QMAKE_LFLAGS_LTCG = $$QMAKE_CXXFLAGS $$QMAKE_LFLAGS_LTCG + QMAKE_LFLAGS_APP += $$QMAKE_CXXFLAGS_APP + QMAKE_LFLAGS_SHLIB += $$QMAKE_CXXFLAGS_SHLIB + } + } + + QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG + QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG + QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG +} |