From a0d9851dd0db2ad3ffc3c46ababb621c1ead6e6f Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Tue, 28 Dec 2010 00:11:33 +0100 Subject: binutils/binutils: add option to enable gold gold is a new, optimised, multi-threaded linker with support for plugins. Add support for gold starting with binutils 2.21. Although 2.20 also had gold, the configure flags have changed, and supporting 2.20 would be a mess in the code. Signed-off-by: "Yann E. MORIN" diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in index 86b2866..173aacf 100644 --- a/config/binutils/binutils.in +++ b/config/binutils/binutils.in @@ -61,6 +61,72 @@ config BINUTILS_VERSION config BINUTILS_2_21_or_later bool + select BINUTILS_HAS_GOLD + +config BINUTILS_HAS_GOLD + bool + +if BINUTILS_HAS_GOLD + +choice + bool + prompt "Linkers to enable" + +config BINUTILS_LINKER_LD + bool + prompt "ld" + help + The historical, bfd linker. + +config BINUTILS_LINKER_GOLD + bool + prompt "gold" + depends on BINUTILS_HAS_GOLD + depends on EXPERIMENTAL + select BINUTILS_GOLD_INSTALLED + help + gold is a new, optimised, multi-threaded linker with support + for plugins. Designed to be a drop-in replacement for the + original linker, ld, it can be much faster, with a 5:1 or + bigger ratio being not uncommon, YMMV. + +config BINUTILS_LINKER_LD_GOLD + bool + prompt "ld, gold" + depends on BINUTILS_HAS_GOLD + depends on EXPERIMENTAL + select BINUTILS_GOLD_INSTALLED + help + Both the historical ld and the new gold linkers will be + installed, with ld being the default linker used. + + See help for gold, above. + +config BINUTILS_LINKER_GOLD_LD + bool + prompt "gold, ld" + depends on BINUTILS_HAS_GOLD + depends on EXPERIMENTAL + select BINUTILS_GOLD_INSTALLED + help + Both the historical ld and the new gold linkers will be + installed, with gold being the default linker used. + + See help for gold, above. + +endchoice # Enable linkers + +config BINUTILS_GOLD_INSTALLED + bool + +config BINUTILS_LINKERS_LIST + string + default "ld" if BINUTILS_LINKER_LD + default "gold" if BINUTILS_LINKER_GOLD + default "ld,gold" if BINUTILS_LINKER_LD_GOLD + default "gold,ld" if BINUTILS_LINKER_GOLD_LD + +endif # BINUTILS_HAS_GOLD config BINUTILS_EXTRA_CONFIG string diff --git a/scripts/build/binutils/binutils.sh b/scripts/build/binutils/binutils.sh index 9f55c4d..39fa61c 100644 --- a/scripts/build/binutils/binutils.sh +++ b/scripts/build/binutils/binutils.sh @@ -26,6 +26,26 @@ do_binutils() { CT_DoStep INFO "Installing binutils" CT_DoLog EXTRA "Configuring binutils" + + if [ "${CT_BINUTILS_HAS_GOLD}" = "y" ]; then + case "${CT_BINUTILS_LINKERS_LIST}" in + ld) + extra_config+=( --enable-ld=yes --enable-gold=no ) + ;; + gold) + extra_config+=( --enable-ld=no --enable-gold=yes ) + ;; + ld,gold) + extra_config+=( --enable-ld=default --enable-gold=yes ) + ;; + gold,ld) + extra_config+=( --enable-ld=yes --enable-gold=default ) + ;; + esac + fi + + CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'" + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ CT_DoExecLog CFG \ "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure" \ -- cgit v0.10.2-6-g49f6