| static:no-static-ltcg { |
| # Static library but no-static-ltcg enabled: skip LTCG |
| } else: CONFIG(release, debug|release) { |
| separate_debug_info { |
| # Evaluate single-$ variable references that have no valid value at mkspec loading time |
| QMAKE_LFLAGS_LTCG_SEPARATE_DEBUG_INFO ~= s/\\$\\{/\$\$\{/ |
| eval(QMAKE_LFLAGS_LTCG += $$QMAKE_LFLAGS_LTCG_SEPARATE_DEBUG_INFO) |
| } |
| |
| # 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. On others, we have special ar and nm to create the symbol |
| # tables so the linker will know better. For other compilers, we disable LTCG |
| # for static libraries. |
| msvc { |
| # Nothing to do |
| } else { |
| !isEmpty(QMAKE_AR_LTCG): QMAKE_AR = $$QMAKE_AR_LTCG |
| !isEmpty(QMAKE_NM_LTCG): QMAKE_NM = $$QMAKE_NM_LTCG |
| |
| equals(QMAKE_RANLIB_LTCG, true): QMAKE_RANLIB = |
| else: !isEmpty(QMAKE_RANLIB_LTCG): QMAKE_RANLIB = $$QMAKE_RANLIB_LTCG |
| |
| static:isEmpty(QMAKE_AR_LTCG):isEmpty(QMAKE_RANLIB_LTCG) { |
| # We don't know how to create symbol tables for static libs with this |
| # compiler, so disable LTCG |
| QMAKE_CFLAGS_LTCG = |
| QMAKE_CXXFLAGS_LTCG = |
| QMAKE_LFLAGS_LTCG = |
| } |
| } |
| |
| fat-lto|if(static:fat-static-lto) { |
| QMAKE_CFLAGS_LTCG += $$QMAKE_CFLAGS_LTCG_FATOBJECTS |
| QMAKE_CXXFLAGS_LTCG += $$QMAKE_CXXFLAGS_LTCG_FATOBJECTS |
| } |
| |
| load(link_ltcg) |
| QMAKE_CFLAGS -= $$QMAKE_CFLAGS_LTCG |
| QMAKE_CFLAGS += $$QMAKE_CFLAGS_LTCG |
| QMAKE_CXXFLAGS -= $$QMAKE_CXXFLAGS_LTCG |
| QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_LTCG |
| QMAKE_LFLAGS -= $$QMAKE_LFLAGS_LTCG |
| QMAKE_LFLAGS += $$QMAKE_LFLAGS_LTCG |
| } |