All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Peter Kümmel" <syntheticpp@gmx.net>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/1] toolchain: add link-time-optimization support
Date: Thu, 05 Mar 2015 15:47:24 +0100	[thread overview]
Message-ID: <54F86C7C.8050003@gmx.net> (raw)
In-Reply-To: <1425479715-5716-1-git-send-email-syntheticpp@gmx.net>

This patch is an update of the reviewed patch:

     http://patchwork.ozlabs.org/patch/423082

Hope it is enough to get committed.

BTW, how do I add comments in patchwork.


Am 04.03.2015 um 15:35 schrieb Peter K?mmel:
> GCC's link-time-optimization could be enabled by the flag '-flto'.
> With LTO enabled, ar and runlib must be called with an argument which
> triggers the usage of a LTO plugin.
> GCC provides wrappers for ar and ranlib which implicitly pass the LTO
> arguments to ar/ranlib. This way existing Makefiles don't need to be
> changed for LTO support when these wrappers around ar and ranlib are used.
> Also the LTO and plugin support must be enabled in the host's binutils.
>
> Signed-off-by: Peter K?mmel <syntheticpp@gmx.net>
> ---
>   package/binutils/binutils.mk                       | 4 ++++
>   package/gcc/Config.in.host                         | 7 +++++++
>   package/gcc/gcc.mk                                 | 4 ++++
>   toolchain/toolchain-external/toolchain-external.mk | 8 ++++++++
>   4 files changed, 23 insertions(+)
>
> diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
> index 9e99253..daa8c45 100644
> --- a/package/binutils/binutils.mk
> +++ b/package/binutils/binutils.mk
> @@ -96,5 +96,9 @@ BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
>   HOST_BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
>   endif
>
> +ifeq ($(BR2_GCC_ENABLE_LTO),y)
> +HOST_BINUTILS_CONF_OPTS += --enable-plugins --enable-lto
> +endif
> +
>   $(eval $(autotools-package))
>   $(eval $(host-autotools-package))
> diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
> index dd61f51..3c83579 100644
> --- a/package/gcc/Config.in.host
> +++ b/package/gcc/Config.in.host
> @@ -116,6 +116,13 @@ 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"
> +	depends on !BR2_GCC_VERSION_4_2_2_AVR32_2_1_5
> +	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_arc && !BR2_microblaze
> diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
> index ffac15c..b5d2ddb 100644
> --- a/package/gcc/gcc.mk
> +++ b/package/gcc/gcc.mk
> @@ -132,6 +132,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
> diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
> index ab73f9a..d7a8499 100644
> --- a/toolchain/toolchain-external/toolchain-external.mk
> +++ b/toolchain/toolchain-external/toolchain-external.mk
> @@ -656,12 +656,20 @@ endif
>   # Build toolchain wrapper for preprocessor, C and C++ compiler and setup
>   # symlinks for everything else. Skip gdb symlink when we are building our
>   # own gdb to prevent two gdb's in output/host/usr/bin.
> +# When the link-time-optimazation flag '-flto' is used, then 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-ins for ar/runlib when Makefiles are used which do not
> +# pass the lto arguments.
>   define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER
>   	$(Q)$(call MESSAGE,"Building ext-toolchain wrapper")
>   	mkdir -p $(HOST_DIR)/usr/bin; cd $(HOST_DIR)/usr/bin; \
>   	for i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \
>   		base=$${i##*/}; \
>   		case "$$base" in \
> +		*-ar|*-ranlib|*-nm) \
> +			ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
> +			;; \
>   		*cc|*cc-*|*++|*++-*|*cpp) \
>   			ln -sf ext-toolchain-wrapper $$base; \
>   			;; \
>

  reply	other threads:[~2015-03-05 14:47 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-04 14:35 [Buildroot] [PATCH 1/1] toolchain: add link-time-optimization support Peter Kümmel
2015-03-05 14:47 ` Peter Kümmel [this message]
2015-03-06 12:36   ` Thomas Petazzoni
2015-03-05 21:41 ` Arnout Vandecappelle
2015-03-06 12:32   ` Peter Kümmel
  -- strict thread matches above, loose matches on Subject: below --
2015-02-14  9:36 Peter Kümmel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54F86C7C.8050003@gmx.net \
    --to=syntheticpp@gmx.net \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.