buildsystem: add package flags to set compiler optimization

speed: use O3
size: use Os
default: use O2

The priority order is to use speed if set, then size, and fallback
to default when neither are set.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
This commit is contained in:
Ian Leonard 2019-05-18 03:16:40 +00:00
parent 77c88ba2ee
commit c5e535505c
2 changed files with 23 additions and 2 deletions

View File

@ -221,6 +221,18 @@ setup_toolchain() {
TARGET_LDFLAGS+=" $LDFLAGS_OPTIM_GOLD"
fi
# compiler optimization, descending priority: speed, size, default
if flag_enabled "speed" "no"; then
TARGET_CFLAGS+=" $CFLAGS_OPTIM_SPEED"
TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_SPEED"
elif flag_enabled "size" "no"; then
TARGET_CFLAGS+=" $CFLAGS_OPTIM_SIZE"
TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_SIZE"
else
TARGET_CFLAGS+=" $CXXFLAGS_OPTIM_DEFAULT"
TARGET_CXXFLAGS+=" $CXXFLAGS_OPTIM_DEFAULT"
fi
# position-independent code
if flag_enabled "pic" "no"; then
TARGET_CFLAGS+=" $CFLAGS_OPTIM_PIC"

View File

@ -1,4 +1,3 @@
GCC_OPTIM="-Os"
# Linker hash-style is set to gnu via gcc default
LD_OPTIM="-Wl,--as-needed"
@ -15,7 +14,7 @@ fi
NINJA_OPTS=""
TARGET_CPPFLAGS=""
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -pipe $GCC_OPTIM $PROJECT_CFLAGS"
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -pipe $PROJECT_CFLAGS"
TARGET_CXXFLAGS="$TARGET_CFLAGS"
TARGET_LDFLAGS="$TARGET_LDFLAGS $LD_OPTIM"
TARGET_LIBDIR="$SYSROOT_PREFIX/lib $SYSROOT_PREFIX/usr/lib"
@ -43,6 +42,16 @@ LDFLAGS_OPTIM_LTO_COMMON="-fuse-linker-plugin"
# gold flags
LDFLAGS_OPTIM_GOLD="-fuse-ld=gold"
# default compiler optimization
CFLAGS_OPTIM_DEFAULT="-O2"
CXXFLAGS_OPTIM_DEFAULT="$CFLAGS_OPTIM_DEFAULT"
# speed flag
CFLAGS_OPTIM_SPEED="-O3"
CXXFLAGS_OPTIM_SPEED="$CFLAGS_OPTIM_SPEED"
# size flag
CFLAGS_OPTIM_SIZE="-Os"
CXXFLAGS_OPTIM_SIZE="$CFLAGS_OPTIM_SIZE"
# position-independent code
CFLAGS_OPTIM_PIC="-fPIC -DPIC"
CXXFLAGS_OPTIM_PIC="-fPIC -DPIC"