From c5e535505c984d11640114c8a558bdc5ab8e23c2 Mon Sep 17 00:00:00 2001 From: Ian Leonard Date: Sat, 18 May 2019 03:16:40 +0000 Subject: [PATCH 1/3] 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 --- config/functions | 12 ++++++++++++ config/optimize | 13 +++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/config/functions b/config/functions index 793ba089ca..d7f85ffe88 100644 --- a/config/functions +++ b/config/functions @@ -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" diff --git a/config/optimize b/config/optimize index 08d38b3b97..9c57fcaa92 100644 --- a/config/optimize +++ b/config/optimize @@ -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" From ba2732959a6531cd782e9a01cb043ca08ca1e783 Mon Sep 17 00:00:00 2001 From: Ian Leonard Date: Sat, 18 May 2019 03:20:49 +0000 Subject: [PATCH 2/3] kodi: enable speed flag Signed-off-by: Ian Leonard --- packages/mediacenter/kodi/package.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index 6f8f9f9ba6..9ee748305e 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -7,6 +7,7 @@ PKG_LICENSE="GPL" PKG_SITE="http://www.kodi.tv" PKG_DEPENDS_TARGET="toolchain JsonSchemaBuilder:host TexturePacker:host Python2 zlib systemd lzo pcre swig:host libass curl fontconfig fribidi tinyxml libjpeg-turbo freetype libcdio taglib libxml2 libxslt rapidjson sqlite ffmpeg crossguid giflib libdvdnav libhdhomerun libfmt lirc libfstrcmp flatbuffers:host flatbuffers" PKG_LONGDESC="A free and open source cross-platform media player." +PKG_BUILD_FLAGS="+speed" PKG_PATCH_DIRS="$KODI_VENDOR" From 08bdf2a5cd4bb997d1dd4247909ec52ba49ab68b Mon Sep 17 00:00:00 2001 From: Ian Leonard Date: Mon, 20 May 2019 21:58:04 +0000 Subject: [PATCH 3/3] gdb: set size build flag Signed-off-by: Ian Leonard --- packages/debug/gdb/package.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/debug/gdb/package.mk b/packages/debug/gdb/package.mk index ffc3e7c934..bf171a1977 100644 --- a/packages/debug/gdb/package.mk +++ b/packages/debug/gdb/package.mk @@ -10,7 +10,7 @@ PKG_SITE="http://www.gnu.org/software/gdb/" PKG_URL="http://ftpmirror.gnu.org/gdb/$PKG_NAME-$PKG_VERSION.tar.xz" PKG_DEPENDS_TARGET="toolchain zlib ncurses expat" PKG_LONGDESC="GNU Project debugger, allows you to see what is going on inside another program while it executes." -# gdb could fail on runtime if build with LTO support +PKG_BUILD_FLAGS="+size" PKG_CONFIGURE_OPTS_TARGET="bash_cv_have_mbstate_t=set \ --disable-shared \