55 lines
2.2 KiB
Plaintext
55 lines
2.2 KiB
Plaintext
|
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
|
||
|
}
|