config/optimize, config/functions: refactor lto flags

Split up the LTO flags in config/optimize and assemble
full C/CXX/LDFLAGS in config/functions.

Add flags for parallel/single-threaded lto and fat/non-fat
lto object creation.

Change the default lto build flag to use non-fat lto objects.

Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
Matthias Reichl 2018-05-30 15:54:29 +02:00
parent 57832185cc
commit b03cb4cc2f
2 changed files with 9 additions and 9 deletions

View File

@ -2,9 +2,9 @@ setup_toolchain() {
TARGET_AR_NM_RANLIB_PREFIX=""
if [ "$LTO_SUPPORT" = "yes" ] && flag_enabled "lto" "no"; then
TARGET_CFLAGS+=" $CFLAGS_OPTIM_LTO"
TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_LTO"
TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO"
TARGET_CFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
TARGET_CXXFLAGS+=" $FLAGS_OPTIM_LTO_NO_PARALLEL $FLAGS_OPTIM_LTO_NO_FAT"
TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_LTO_COMMON $FLAGS_OPTIM_LTO_NO_PARALLEL"
# static libs with lto info require gcc-ar/gcc-nm/gcc-ranlib instead of
# default binutils versions
TARGET_AR_NM_RANLIB_PREFIX="gcc-"

View File

@ -32,12 +32,12 @@ HOST_CFLAGS="$HOST_CFLAGS -Wno-format-security"
HOST_CXXFLAGS="$HOST_CXXFLAGS -Wno-format-security"
# lto flags
CFLAGS_OPTIM_LTO="-flto -ffat-lto-objects"
CXXFLAGS_OPTIM_LTO="-flto -ffat-lto-objects"
LDFLAGS_OPTIM_LTO="-fuse-linker-plugin -flto"
CFLAGS_OPTIM_NOLTO="-fno-lto"
CXXFLAGS_OPTIM_NOLTO="-fno-lto"
LDFLAGS_OPTIM_NOLTO="-fno-lto"
FLAGS_OPTIM_LTO_NO_PARALLEL="-flto"
FLAGS_OPTIM_LTO_PARALLEL="-flto=${CONCURRENCY_MAKE_LEVEL}"
FLAGS_OPTIM_LTO_NO_FAT="-fno-fat-lto-objects"
FLAGS_OPTIM_LTO_FAT="-ffat-lto-objects"
FLAGS_OPTIM_LTO_OFF="-fno-lto"
LDFLAGS_OPTIM_LTO_COMMON="-fuse-linker-plugin"
# gold flags
LDFLAGS_OPTIM_GOLD="-fuse-ld=gold"