[PATCH 03 of 10] binutils/binutils: add option to enable gold

Yann E. MORIN yann.morin.1998@anciens.enib.fr
Thu Dec 30 23:32:00 GMT 2010


# HG changeset patch
# User "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
# Date 1293491493 -3600
# Node ID b86c48da06be1df5e03921571310caf70136049a
# Parent  0377ec14ac23f0342e2b938f1a4c15d7e3a20db8
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" <yann.morin.1998@anciens.enib.fr>

diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in
--- a/config/binutils/binutils.in
+++ b/config/binutils/binutils.in
@@ -61,6 +61,72 @@
 
 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
--- a/scripts/build/binutils/binutils.sh
+++ b/scripts/build/binutils/binutils.sh
@@ -26,6 +26,26 @@
     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"   \

--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list