diff options
author | Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> | 2011-01-28 17:53:37 (GMT) |
---|---|---|
committer | Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> | 2011-01-28 17:53:37 (GMT) |
commit | adbf0ff180e2f2f53a635eb2287ab2b2497e5a0d (patch) | |
tree | 9c0ec0e03d905a0e5bec0a5a9af91d55860b861d | |
parent | a2e31b9c53a6abc4cb58297016331255056f969e (diff) |
cc/gcc: enable plugins if needed
Enabling plugins in binutils is not enough, and gcc also
needs to be ./configured with --enable-plugins, although
this is not documented anywhere... :-/
Reported-by: karthik duraisami <kdconstant@hotmail.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
-rw-r--r-- | config/cc/gcc.in | 22 | ||||
-rw-r--r-- | config/cc/gcc.in.2 | 8 | ||||
-rw-r--r-- | scripts/build/cc/gcc.sh | 11 |
3 files changed, 34 insertions, 7 deletions
diff --git a/config/cc/gcc.in b/config/cc/gcc.in index eb69f97..3c18b8b 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -164,10 +164,32 @@ config CC_GCC_HAS_GRAPHITE bool default n +# The way LTO works is a bit twisted. +# See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements +# Basically: +# - if binutils has plugins: LTO is handled by ld/gold by loading +# the plugin when linking +# - if binutils does not have plugins: LTO is handled by collect2 +# In any case, LTO support does not depend on plugins, but takes +# advantage of it config CC_GCC_HAS_LTO bool default n +# Only enable gcc's support for plugins if binutils has it as well +# They are usefull only when doing LTO, but it does no harm enabling +# them even without LTO. +config CC_GCC_ENABLE_PLUGINS + bool + depends on BINUTILS_PLUGINS + default y + +# If binutils installs gold, enable support for gold in gcc +config CC_GCC_GOLD + bool + depends on BINUTILS_GOLD_INSTALLED + default y + config CC_GCC_USE_GMP_MPFR bool default n diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2 index 9e08689..642ea5b 100644 --- a/config/cc/gcc.in.2 +++ b/config/cc/gcc.in.2 @@ -24,6 +24,14 @@ config CC_GCC_USE_GRAPHITE On some systems (eg. Cygwin), PPL and/or CLooG may not build properly (yet), so you'll have to say 'N' here. +# The way LTO works is a bit twisted. +# See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements +# Basically: +# - if binutils has plugins: LTO is handled by ld/gold by loading +# the plugin when linking +# - if binutils does not have plugins: LTO is handled by collect2 +# In any case, LTO support does not depend on plugins, but takes +# advantage of it config CC_GCC_USE_LTO bool prompt "Enable LTO" diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index b00d113..c0a8774 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -481,13 +481,10 @@ do_cc() { "") extra_config+=("--without-long-double-128");; esac - # If LTO is selected and binutils has gold, then enable - # building the lto plugin with the --enable-gold option, - # but only if gold has support for plugins. - if [ "${CT_BINUTILS_GOLD_INSTALLED}" = "y" \ - -a "${CT_BINUTILS_GOLD_PLUGINS}" = "y" \ - -a "${CT_CC_GCC_USE_LTO}" = "y" \ - ]; then + if [ "${CT_CC_GCC_ENABLE_PLUGINS}" = "y" ]; then + extra_config+=( --enable-plugin ) + fi + if [ "${CT_CC_GCC_GOLD}" = "y" ]; then extra_config+=( --enable-gold ) fi |