@@ -19,6 +19,11 @@ config BR2_PACKAGE_BINUTILS_TARGET
http://www.gnu.org/software/binutils/
+config BR2_PACKAGE_BINUTILS_ENABLE_LTO
+ bool "Enable support for link-time-optimization"
+ help
+ Enable lto support. Allows passing a lto plugin to ar and ranlib.
+
endif
comment "binutils needs a toolchain w/ wchar"
@@ -95,5 +95,13 @@ BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
HOST_BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
endif
+ifeq ($(BR2_PACKAGE_BINUTILS_ENABLE_LTO),y)
+BINUTILS_CONF_OPTS += --enable-plugins --enable-lto
+endif
+
+ifeq ($(BR2_GCC_ENABLE_LTO),y)
+HOST_BINUTILS_CONF_OPTS += --enable-plugins --enable-lto
+endif
+
$(eval $(autotools-package))
$(eval $(host-autotools-package))
@@ -145,6 +145,12 @@ config BR2_GCC_ENABLE_TLS
Enable the compiler to generate code for accessing
thread local storage variables
+config BR2_GCC_ENABLE_LTO
+ bool "Enable compiler link-time-optimization support"
+ help
+ Since version 4.5 GCC supports lto. Build GCC with lto support enabled.
+ Needed when -flto should be used.
+
config BR2_GCC_ENABLE_OPENMP
bool "Enable compiler OpenMP support"
depends on !BR2_PTHREADS_NONE && !BR2_avr32 && !BR2_arc && !BR2_microblaze
@@ -127,6 +127,10 @@ else
HOST_GCC_COMMON_CONF_OPTS += --disable-tls
endif
+ifeq ($(BR2_GCC_ENABLE_LTO),y)
+HOST_GCC_COMMON_CONF_OPTS += --enable-plugins --enable-lto
+endif
+
ifeq ($(BR2_GCC_ENABLE_LIBMUDFLAP),y)
HOST_GCC_COMMON_CONF_OPTS += --enable-libmudflap
else
When -flto is used the compiler and binutils have to support lto. ar/ranlib needs to be called with the lto plugin. The wrappers *-gcc-ar and *-gcc-ranlib provided by GCC could be used as drop-in for makefiles without lto support. Signed-off-by: Peter Kümmel <syntheticpp@gmx.net> --- package/binutils/Config.in | 5 +++++ package/binutils/binutils.mk | 8 ++++++++ package/gcc/Config.in.host | 6 ++++++ package/gcc/gcc.mk | 4 ++++ 4 files changed, 23 insertions(+)