2010-04-09 Roland McGrath H.J. Lu * configure.ac (--enable-gold): Support both, both/gold and both/bfd to add gold to configdirs without removing ld. * configure: Regenerated. * Makefile.def: Add install-gold dependency to install-ld. * Makefile.in: Regenerated. gold/ 2010-04-09 H.J. Lu Nick Clifton * configure.ac (install_as_default): Define and set to false unless --enable-gold or --enable-gold=both/gold has been specified. * configure: Regenerate. * Makefile.am (install-exec-local): Install the executable as 'ld.gold'. If install_as_default is true then also install it as 'ld'. * Makefile.in: Regenerated. ld/ 2010-04-09 H.J. Lu Nick Clifton * configure.in (install_as_default): Define and set to true unless --enable-gold=both/gold has been specified. * configure: Regenerate. * Makefile.am (transform): Use ld.bfd as the default name of the linker. (install-exec-local): Also install the executable as a binary named 'ld' if install_as_default is true. * Makefile.in: Regenerate. diff --git a/Makefile.def b/Makefile.def index 7dce699..325d845 100644 --- a/Makefile.def +++ b/Makefile.def @@ -425,6 +425,7 @@ dependencies = { module=all-ld; on=all-build-bison; }; dependencies = { module=all-ld; on=all-build-byacc; }; dependencies = { module=all-ld; on=all-build-flex; }; dependencies = { module=all-ld; on=all-intl; }; +dependencies = { module=install-ld; on=install-gold; }; dependencies = { module=configure-gold; on=configure-intl; }; dependencies = { module=all-gold; on=all-libiberty; }; dependencies = { module=all-gold; on=all-intl; }; diff --git a/Makefile.in b/Makefile.in index 93f66b6..d1d8b32 100644 --- a/Makefile.in +++ b/Makefile.in @@ -58231,6 +58231,7 @@ all-stage3-ld: maybe-all-stage3-intl all-stage4-ld: maybe-all-stage4-intl all-stageprofile-ld: maybe-all-stageprofile-intl all-stagefeedback-ld: maybe-all-stagefeedback-intl +install-ld: maybe-install-gold configure-gold: maybe-configure-intl configure-stage1-gold: maybe-configure-stage1-intl diff --git a/configure b/configure index c2c406e..a63d75c 100755 --- a/configure +++ b/configure @@ -1483,7 +1483,7 @@ Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-gold use gold instead of ld + --enable-gold[=ARG] build gold [ARG={both}[/{gold,ld}]] --enable-libada build libada directory --enable-libssp build libssp directory --enable-build-with-cxx build with C++ compiler instead of C compiler @@ -2901,7 +2901,7 @@ host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib l # know that we are building the simulator. # binutils, gas and ld appear in that order because it makes sense to run # "make check" in that particular order. -# If --enable-gold is used, "gold" will replace "ld". +# If --enable-gold is used, "gold" may replace "ld". host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc cgen sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools" # libgcj represents the runtime libraries only used by gcj. @@ -3069,6 +3069,11 @@ case ${with_newlib} in esac # Handle --enable-gold. +# --enable-gold Build only gold +# --disable-gold [default] Build only ld +# --enable-gold=both Build both gold and ld, ld is default +# --enable-gold=both/ld Same +# --enable-gold=both/gold Build both gold and ld, gold is default, ld is renamed ld.bfd # Check whether --enable-gold was given. if test "${enable_gold+set}" = set; then : @@ -3077,32 +3082,47 @@ else ENABLE_GOLD=no fi -if test "${ENABLE_GOLD}" = "yes"; then - # Check for ELF target. - is_elf=no - case "${target}" in - *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \ - | *-*-linux* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \ - | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-solaris2* | *-*-nto*) + case "${ENABLE_GOLD}" in + yes|both|both/gold|both/ld) + # Check for ELF target. + is_elf=no + case "${target}" in + *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \ + | *-*-linux* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \ + | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-solaris2* | *-*-nto*) + case "${target}" in + *-*-linux*aout* | *-*-linux*oldld*) + ;; + *) + is_elf=yes + ;; + esac + esac + + if test "$is_elf" = "yes"; then + # Check for target supported by gold. case "${target}" in - *-*-linux*aout* | *-*-linux*oldld*) - ;; - *) - is_elf=yes + i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-*) + case "${ENABLE_GOLD}" in + both*) + configdirs="$configdirs gold" + ;; + *) + configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`" + ;; + esac + ENABLE_GOLD=yes ;; esac + fi + ;; + no) + ;; + *) + as_fn_error "invalid --enable-gold argument" "$LINENO" 5 + ;; esac - if test "$is_elf" = "yes"; then - # Check for target supported by gold. - case "${target}" in - i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-*) - configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`" - ;; - esac - fi -fi - # Configure extra directories which are host specific case "${host}" in diff --git a/configure.ac b/configure.ac index 72407f8..d737183 100644 --- a/configure.ac +++ b/configure.ac @@ -174,7 +174,7 @@ host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib l # know that we are building the simulator. # binutils, gas and ld appear in that order because it makes sense to run # "make check" in that particular order. -# If --enable-gold is used, "gold" will replace "ld". +# If --enable-gold is used, "gold" may replace "ld". host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc cgen sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools" # libgcj represents the runtime libraries only used by gcj. @@ -315,37 +315,57 @@ case ${with_newlib} in esac # Handle --enable-gold. +# --enable-gold Build only gold +# --disable-gold [default] Build only ld +# --enable-gold=both Build both gold and ld, ld is default +# --enable-gold=both/ld Same +# --enable-gold=both/gold Build both gold and ld, gold is default, ld is renamed ld.bfd AC_ARG_ENABLE(gold, -[ --enable-gold use gold instead of ld], +[[ --enable-gold[=ARG] build gold [ARG={both}[/{gold,ld}]]]], ENABLE_GOLD=$enableval, ENABLE_GOLD=no) -if test "${ENABLE_GOLD}" = "yes"; then - # Check for ELF target. - is_elf=no - case "${target}" in - *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \ - | *-*-linux* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \ - | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-solaris2* | *-*-nto*) + case "${ENABLE_GOLD}" in + yes|both|both/gold|both/ld) + # Check for ELF target. + is_elf=no + case "${target}" in + *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \ + | *-*-linux* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \ + | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-solaris2* | *-*-nto*) + case "${target}" in + *-*-linux*aout* | *-*-linux*oldld*) + ;; + *) + is_elf=yes + ;; + esac + esac + + if test "$is_elf" = "yes"; then + # Check for target supported by gold. case "${target}" in - *-*-linux*aout* | *-*-linux*oldld*) - ;; - *) - is_elf=yes + i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-*) + case "${ENABLE_GOLD}" in + both*) + configdirs="$configdirs gold" + ;; + *) + configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`" + ;; + esac + ENABLE_GOLD=yes ;; esac + fi + ;; + no) + ;; + *) + AC_MSG_ERROR([invalid --enable-gold argument]) + ;; esac - if test "$is_elf" = "yes"; then - # Check for target supported by gold. - case "${target}" in - i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-*) - configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`" - ;; - esac - fi -fi - # Configure extra directories which are host specific case "${host}" in diff --git a/gold/Makefile.am b/gold/Makefile.am index e0665e0..1f2618d 100644 --- a/gold/Makefile.am +++ b/gold/Makefile.am @@ -178,12 +178,23 @@ check: libgold.a install-exec-local: ld-new$(EXEEXT) $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin - n=`echo ld | sed '$(transform)'`; \ + n=`echo $(installed_linker) | sed '$(transform)'`; \ $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \ if test "$(bindir)" != "$(tooldir)/bin"; then \ - rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ - ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + rm -f $(DESTDIR)$(tooldir)/bin/$${n}$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$${n}$(EXEEXT) >/dev/null 2>/dev/null \ + || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$${n}$(EXEEXT); \ + fi; \ + if test "x$(install_as_default)" = "xyes"; then \ + ld=`echo ld | sed '$(transform)'`; \ + rm -f $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT) >/dev/null 2>/dev/null \ + || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ + if test "$(bindir)" != "$(tooldir)/bin"; then \ + rm -f $(DESTDIR)$(tooldir)/bin/$${ld}$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$${ld}$(EXEEXT) >/dev/null 2>/dev/null \ + || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$${ld}$(EXEEXT); \ + fi; \ fi # We want install to imply install-info as per GNU standards, despite diff --git a/gold/Makefile.in b/gold/Makefile.in index 6e736f1..4f58e62 100644 --- a/gold/Makefile.in +++ b/gold/Makefile.in @@ -258,7 +258,9 @@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ +install_as_default = @install_as_default@ install_sh = @install_sh@ +installed_linker = @installed_linker@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ @@ -1002,12 +1004,23 @@ check: libgold.a install-exec-local: ld-new$(EXEEXT) $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin - n=`echo ld | sed '$(transform)'`; \ + n=`echo $(installed_linker) | sed '$(transform)'`; \ $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \ if test "$(bindir)" != "$(tooldir)/bin"; then \ - rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ - ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + rm -f $(DESTDIR)$(tooldir)/bin/$${n}$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$${n}$(EXEEXT) >/dev/null 2>/dev/null \ + || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$${n}$(EXEEXT); \ + fi; \ + if test "x$(install_as_default)" = "xyes"; then \ + ld=`echo ld | sed '$(transform)'`; \ + rm -f $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT) >/dev/null 2>/dev/null \ + || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \ + if test "$(bindir)" != "$(tooldir)/bin"; then \ + rm -f $(DESTDIR)$(tooldir)/bin/$${ld}$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$${ld}$(EXEEXT) >/dev/null 2>/dev/null \ + || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$${ld}$(EXEEXT); \ + fi; \ fi # We want install to imply install-info as per GNU standards, despite diff --git a/gold/configure b/gold/configure index 20df0df..eb8f01e 100755 --- a/gold/configure +++ b/gold/configure @@ -682,6 +682,8 @@ PLUGINS_FALSE PLUGINS_TRUE THREADS_FALSE THREADS_TRUE +installed_linker +install_as_default am__untar am__tar AMTAR @@ -759,6 +761,7 @@ ac_subst_files='' ac_user_opts=' enable_option_checking with_sysroot +enable_gold enable_threads enable_plugins enable_targets @@ -1403,6 +1406,7 @@ Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-gold[=ARG] build gold [ARG={both}[/{gold,ld}]] --enable-threads multi-threaded linking --enable-plugins linker plugins --enable-targets alternative target configurations @@ -3227,6 +3231,33 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# Check whether --enable-gold was given. +if test "${enable_gold+set}" = set; then : + enableval=$enable_gold; case "${enableval}" in + yes) + install_as_default=gold + installed_linker=ld + ;; + both/gold) + install_as_default=yes + installed_linker=ld.gold + ;; + both|both/ld) + install_as_default=no + installed_linker=ld.gold + ;; + *) + as_fn_error "invalid --enable-gold argument" "$LINENO" 5 + ;; + esac +else + install_as_default=gold + installed_linker=ld +fi + + + + # Check whether --enable-threads was given. if test "${enable_threads+set}" = set; then : enableval=$enable_threads; case "${enableval}" in diff --git a/gold/configure.ac b/gold/configure.ac index 72db25d..67d1796 100644 --- a/gold/configure.ac +++ b/gold/configure.ac @@ -38,6 +38,33 @@ AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT, "$sysroot", AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable, [Whether the system root can be relocated]) +dnl "install_as_default" is true if the linker to be installed as the +dnl default linker, ld. +dnl "installed_linker" is the installed gold linker name. +AC_ARG_ENABLE(gold, +[[ --enable-gold[=ARG] build gold [ARG={both}[/{gold,ld}]]]], +[case "${enableval}" in + yes) + install_as_default=gold + installed_linker=ld + ;; + both/gold) + install_as_default=yes + installed_linker=ld.gold + ;; + both|both/ld) + install_as_default=no + installed_linker=ld.gold + ;; + *) + AC_MSG_ERROR([invalid --enable-gold argument]) + ;; + esac], +[install_as_default=gold + installed_linker=ld]) +AC_SUBST(install_as_default) +AC_SUBST(installed_linker) + dnl For now threads are a configure time option. AC_ARG_ENABLE([threads], [ --enable-threads multi-threaded linking], diff --git a/ld/Makefile.am b/ld/Makefile.am index 010fb55..e9a34af 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -95,7 +95,7 @@ CXX_FOR_TARGET = ` \ fi; \ fi` -transform = s/^ld-new$$/ld/;@program_transform_name@ +transform = s/^ld-new$$/$(installed_linker)/;@program_transform_name@ bin_PROGRAMS = ld-new info_TEXINFOS = ld.texinfo ld_TEXINFOS = configdoc.texi @@ -1990,13 +1990,24 @@ CLEANFILES = dep.sed DEP DEPA DEP1 DEP2 spu_ovl.s spu_ovl.o spu_icache.s spu_ica .PHONY: install-exec-local install-data-local -install-exec-local: ld-new$(EXEEXT) +install-exec-local: ld-new$(EXEEXT) install-binPROGRAMS $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin - n=`echo ld | sed '$(transform)'`; \ - if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/ld$(EXEEXT)" ]; then \ - rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ - ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + n=`echo $(installed_linker) | sed '$(transform)'`; \ + if test "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/$$n$(EXEEXT)"; then \ + rm -f $(DESTDIR)$(tooldir)/bin/$$n$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$n$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$n$(EXEEXT); \ + fi; \ + if test "x$(install_as_default)" = "xyes"; then \ + ld=`echo ld | sed '$(transform)'`; \ + rm -f $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ + if test "$(bindir)/$$ld$(EXEEXT)" != "$(tooldir)/bin/$$ld$(EXEEXT)"; then \ + rm -f $(DESTDIR)$(tooldir)/bin/$$ld$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$ld$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$ld$(EXEEXT); \ + fi; \ fi install-data-local: diff --git a/ld/Makefile.in b/ld/Makefile.in index 5bbb899..9e3fc27 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -155,7 +155,7 @@ CTAGS = ctags DEJATOOL = $(PACKAGE) RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir DIST_SUBDIRS = $(SUBDIRS) -transform = s/^ld-new$$/ld/;@program_transform_name@ +transform = s/^ld-new$$/$(installed_linker)/;@program_transform_name@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ @@ -295,7 +295,9 @@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ +install_as_default = @install_as_default@ install_sh = @install_sh@ +installed_linker = @installed_linker@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ @@ -3314,13 +3316,24 @@ mostlyclean-local: .PHONY: install-exec-local install-data-local -install-exec-local: ld-new$(EXEEXT) +install-exec-local: ld-new$(EXEEXT) install-binPROGRAMS $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin - n=`echo ld | sed '$(transform)'`; \ - if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/ld$(EXEEXT)" ]; then \ - rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ - ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ - || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + n=`echo $(installed_linker) | sed '$(transform)'`; \ + if test "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/$$n$(EXEEXT)"; then \ + rm -f $(DESTDIR)$(tooldir)/bin/$$n$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$n$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$n$(EXEEXT); \ + fi; \ + if test "x$(install_as_default)" = "xyes"; then \ + ld=`echo ld | sed '$(transform)'`; \ + rm -f $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$$ld$(EXEEXT); \ + if test "$(bindir)/$$ld$(EXEEXT)" != "$(tooldir)/bin/$$ld$(EXEEXT)"; then \ + rm -f $(DESTDIR)$(tooldir)/bin/$$ld$(EXEEXT); \ + ln $(DESTDIR)$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$ld$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$ld$(EXEEXT); \ + fi; \ fi install-data-local: diff --git a/ld/configure b/ld/configure index 1fa0395..ed3da98 100755 --- a/ld/configure +++ b/ld/configure @@ -657,6 +657,8 @@ WARN_CFLAGS EGREP GREP CPP +installed_linker +install_as_default TARGET_SYSTEM_ROOT_DEFINE TARGET_SYSTEM_ROOT use_sysroot @@ -761,6 +763,7 @@ with_lib_path enable_targets enable_64_bit_bfd with_sysroot +enable_gold enable_got enable_werror enable_build_warnings @@ -1409,6 +1412,7 @@ Optional Features: (and sometimes confusing) to the casual installer --enable-targets alternative target configurations --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) + --enable-gold[=ARG] build gold [ARG={both}[/{gold,ld}]] --enable-got= GOT handling scheme (target, single, negative, multigot) --enable-werror treat compile warnings as errors @@ -4164,6 +4168,29 @@ fi +# Check whether --enable-gold was given. +if test "${enable_gold+set}" = set; then : + enableval=$enable_gold; case "${enableval}" in + yes|both/gold) + install_as_default=no + installed_linker=ld.bfd + ;; + both|both/ld) + install_as_default=yes + installed_linker=ld.bfd + ;; + *) + as_fn_error "invalid --enable-gold argument" "$LINENO" 5 + ;; + esac +else + install_as_default=ld + installed_linker=ld +fi + + + + # Check whether --enable-got was given. if test "${enable_got+set}" = set; then : enableval=$enable_got; case "${enableval}" in @@ -11587,7 +11614,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11590 "configure" +#line 11617 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11693,7 +11720,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11696 "configure" +#line 11723 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/ld/configure.in b/ld/configure.in index 2abfba4..90baeca 100644 --- a/ld/configure.in +++ b/ld/configure.in @@ -69,6 +69,29 @@ AC_SUBST(use_sysroot) AC_SUBST(TARGET_SYSTEM_ROOT) AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) +dnl Use --enable-gold to decide if this linker should be the default. +dnl "install_as_default" is set to false if gold is the default linker. +dnl "installed_linker" is the installed BFD linker name. +AC_ARG_ENABLE(gold, +[[ --enable-gold[=ARG] build gold [ARG={both}[/{gold,ld}]]]], +[case "${enableval}" in + yes|both/gold) + install_as_default=no + installed_linker=ld.bfd + ;; + both|both/ld) + install_as_default=yes + installed_linker=ld.bfd + ;; + *) + AC_MSG_ERROR([invalid --enable-gold argument]) + ;; + esac], +[install_as_default=ld + installed_linker=ld]) +AC_SUBST(install_as_default) +AC_SUBST(installed_linker) + AC_ARG_ENABLE([got], AS_HELP_STRING([--enable-got=], [GOT handling scheme (target, single, negative, multigot)]),