CMake: Use -ffat-lto-objects for static libraries with ltcg and GCC

CMake <= 3.19 adds the '-fno-fat-lto-objects' compiler flag
unconditionally when CMAKE_INTERPROCEDURAL_OPTIMIZATION is enabled.

This is fine for shared libraries but static ones need the opposite
compiler flag.

Task-number: QTBUG-89426
Pick-to: 6.0
Change-Id: Ie5f48178803a270f6d94408f7a8e85d379eb123c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Christophe Giboudeaux 2021-01-13 09:19:32 +01:00
parent 7582f7b03d
commit 9563be2870

View File

@ -82,6 +82,14 @@ function(qt_internal_add_module target)
endif()
endif()
if(FEATURE_ltcg AND GCC AND is_static_lib)
# CMake <= 3.19 appends -fno-fat-lto-objects for all library types if
# CMAKE_INTERPROCEDURAL_OPTIMIZATION is enabled. Static libraries need
# the opposite compiler option.
# (https://gitlab.kitware.com/cmake/cmake/-/issues/21696)
target_compile_options(${target} PRIVATE -ffat-lto-objects)
endif()
if (ANDROID)
qt_android_apply_arch_suffix("${target}")
endif()