diff options
-rw-r--r-- | config/binutils/binutils.in | 66 | ||||
-rw-r--r-- | scripts/build/binutils/binutils.sh | 20 |
2 files changed, 86 insertions, 0 deletions
diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in index 86b28666..173aacf7 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 9f55c4d0..39fa61cd 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" \ |