]> Git Repo - binutils.git/blobdiff - ld/configure.in
Add support for ARM-PE.
[binutils.git] / ld / configure.in
index 58169f52e87bbaae030526b69fae0bdf34c65021..ba5e5b809e8572f248cc70dabb95fc274565f4e6 100644 (file)
@@ -19,114 +19,174 @@ fi
 
 # per-target:
 
 
 # per-target:
 
-case "${target}" in
-
-  sparc-sun-sunos4*)   my_target=sun4 
-                       ;;
-  m68k-sun-sunos[34]*) my_target=sun3
-                       ;;
-  sparclite*-fujitsu-*) my_target=sun4
-                       ;;
-# start-sanitize-v9
-  sparc64-*-elf*)      my_target=sparc64-elf
-                       ;;
-  sparc64*)            my_target=sun4
-                       ;;
-# end-sanitize-v9
-  sparc*-*-aout)       my_target=sun4
-                       ;;
-  sparc*-*-elf)                my_target=sun4sol2
-                       ;;
-  sparc*-*-solaris2*)  my_target=sun4sol2
-                       ;;
-  i960-wrs-vxworks*)    my_target=i960
-                       ;;
-  i960-intel-nindy)    my_target=i960
-                       ;;
-  m68k-wrs-vxworks*)    my_target=vxworks68
-                       ;;
-  m680[01234]0-wrs-vxworks*) my_target=vxworks68
-                       ;;
-  m683?2-wrs-vxworks*)  my_target=vxworks68
-                       ;;
-  sparc*-wrs-vxworks*)  my_target=sun4
-                       ;;
-  m68k-ericsson-ose)   my_target=ose68
-                       ;;
-  m680[01234]0-ericsson-ose) my_target=ose68
-                       ;;
-  m683?2-ericsson-ose) my_target=ose68
-                       ;;
-  *-tandem-none)       my_target=st2000 # FIXME needs better name
-                       ;;
-  i[34]86-*-go32)      my_target=go32
-                       ;;
-  i[34]86-*-aix*)      my_target=i386-coff
-                       ;;
-  i[34]86-*-sco*)      my_target=i386-coff
-                       ;;
-  i[34]86-*-coff)      my_target=i386-coff
-                       ;;
-  i[34]86-*-bsd)       my_target=i386-bsd
-                       ;;
-  i[34]86-*-aout)      my_target=i386-aout
-                       ;;
-  i[34]86-*-sysv*)     my_target=i386-coff
-                       ;;
-  m88k-*-*)            my_target=m88k-bcs
-                       ;;
-  a29k-*-udi)          my_target=sa29200
-                       ;;
-  a29k-*-ebmon)                my_target=ebmon29k
-                       ;;
-  a29k-*-*)            my_target=coff-a29k
-                       ;;
-  h8300*-*-hms)                my_target=coff-h8300
-                       ;;
-  h8500-*-hms)         my_target=coff-h8500
-                       ;;
-  sh-*-*)              my_target=coff-sh       
-                       ;;
-  m68k-sony-*)         my_target=news
-                       ;;
-  m68k-hp-bsd*)                my_target=hp300bsd
-                       ;;
-  m68*-*-aout)         my_target=m68k
-                       ;;
-  m68*-*-coff)         my_target=m68k-coff
-                       ;;
-  m68*-*-hpux)         my_target=hp300hpux
-                       ;;
-  m68*-*-*)            echo '***' "Unknown m68k target vendor for ld:" ${target_vendor} 1>&2
-                       exit 1
-                       ;;
-  hppa*-hp-osf)                my_target=hppaosf
-                       ;;
-  vax-dec-ultrix* | vax-dec-bsd*) my_target=vax
-                       ;;
-  mips-dec-ultrix*)    my_target=mips-lit
-                       ;;
-  mips-sgi-irix*)      my_target=mips-big
-                       ;;
-  mips-idt-ecoffl*)    my_target=mips-idtl
-                       ;;
-  mips-idt-ecoff*)     my_target=mips-idt
-                       ;;
-  mips-dec-bsd*)       my_target=mipsbsd
-                       ;;
-  z8k-*sim)            my_target=z8ksim
-                       ;;
-  *-*-aout)            my_target=${target_cpu}-${target_vendor} 
-                       ;;
-  *-*-coff)            my_target=${target_cpu}-${target_vendor} 
-                       ;;
+# Canonicalize the secondary target names.
+if [ -n "$enable_targets" ]; then
+    for targ in `echo $enable_targets | sed 's/,/ /g'`
+    do
+       result=`$configsub $targ 2>/dev/null`
+       if [ -n "$result" ]; then
+           canon_targets="$canon_targets $result"
+       else
+           # Allow targets that config.sub doesn't recognize, like "all".
+           canon_targets="$canon_targets $targ"
+       fi
+    done
+fi
+
+all_targets=false
+
+for targ in $target $canon_targets
+do
+
+case "${targ}" in
+
+# start-sanitize-arc
+  arc-*-elf*)          ld_target=arc-elf ;;
+# end-sanitize-arc
+  sparc-sun-sunos4*)   ld_target=sun4 ;;
+  sparclite*-*-coff)   ld_target=coff-sparc ;;
+  sparclite*-fujitsu-*) ld_target=sun4 ;;
+  sparc*-*-aout)       ld_target=sun4 ;;
+  sparc*-*-coff)       ld_target=coff-sparc ;;
+  sparc64-*-elf*)      ld_target=sparc64-elf ;;
+  sparc64*)            ld_target=sun4 ;;
+  sparc*-*-elf)                ld_target=sun4sol2 ;;
+  sparc*-*-lynxos*)    ld_target=sparc-lynx ;;
+  sparc*-*-netbsd*)    ld_target=sparc-nbsd ;;
+  sparc*-*-solaris2*)  ld_target=sun4sol2 ;;
+  sparc*-wrs-vxworks*)  ld_target=sun4 ;;
+  i960-wrs-vxworks5.0*) ld_target=i960 ;;
+  i960-wrs-vxworks5*)   ld_target=i960coff ;;
+  i960-wrs-vxworks*)    ld_target=i960 ;;
+  i960-*-coff)         ld_target=i960coff ;;
+  i960-intel-nindy)    ld_target=i960 ;;
+  m68*-sun-sunos[34]*) ld_target=sun3 ;;
+  m68*-wrs-vxworks*)    ld_target=vxworks68 ;;
+  m68*-ericsson-ose)   ld_target=ose68 ;;
+  *-tandem-none)       ld_target=st2000 ;; # FIXME needs better name
+  i[345]86-*-vsta)     ld_target=vsta ;;
+  i[345]86-*-go32)     ld_target=i386-go32 ;;
+  i[345]86-*-aix*)     ld_target=i386-coff ;;
+  i[345]86-*-sco*)     ld_target=i386-coff ;;
+  i[345]86-*-lynxos*)  ld_target=i386-lynx ;;
+  i[345]86-*-coff)     ld_target=i386-coff ;;
+  i[345]86-*-bsd)      ld_target=i386-bsd ;;
+  i[345]86-*-bsd386)   ld_target=i386-bsd ;;
+  i[345]86-*-bsdi*)    ld_target=i386-bsd ;;
+  i[345]86-*-aout)     ld_target=i386-aout ;;
+  i[345]86-*-linuxaout*) ld_target=i386-laout ;;
+  i[345]86-*-linux*)   ld_target=i386-linux ;;
+  i[345]86-*-sysv4*)   ld_target=i386-elf ;;
+  i[345]86-*-unixware) ld_target=i386-elf ;;
+  i[345]86-*-netbsd*)  ld_target=i386-nbsd ;;
+  i[345]86-*-netware)  ld_target=i386-nw ;;
+  i[345]86-*-elf*)     ld_target=i386-elf ;;
+  i[345]86-*-sysv*)    ld_target=i386-coff ;;
+  i[345]86-*-mach*)    ld_target=i386-mach ;;
+  i[345]86-*-gnuelf*)  ld_target=i386-gelf ;;
+  i[345]86-*-gnu*)     ld_target=i386-gnu ;;
+  m8*-*-*)             ld_target=m88k-bcs ;;
+  a29k-*-udi)          ld_target=sa29200 ;;
+  a29k-*-ebmon)                ld_target=ebmon29k ;;
+  a29k-*-*)            ld_target=coff-a29k ;;
+#  arm-*-riscix*)      ld_target=riscix ;;
+  h8300-*-hms)         ld_target=coff-h8300 ;;
+  h8300h-*-hms)                ld_target=cf-h8300h ;;
+  h8500-*-hms)         ld_target=coff-h8500 ;;
+  sh-*-*)              ld_target=coff-sh ;;
+# start-sanitize-rce
+  rce-*-aout)          ld_target=rce-aout ;;
+# end-sanitize-rce
+  m68k-sony-*)         ld_target=news ;;
+  m68k-hp-bsd*)                ld_target=hp300bsd ;;
+  m68*-*-aout)         ld_target=m68k ;;
+  m68*-*-coff)         ld_target=m68k-coff ;;
+  m68*-*-elf)          ld_target=m68k-elf ;;
+  m68*-*-hpux*)                ld_target=hp300hpux ;;
+  m68*-*-lynxos*)      ld_target=m68k-lynx ;;
+  m68*-*-netbsd*)      ld_target=m68k-nbsd ;;
+  m68*-*-*)
+    echo '***' "Unknown m68k target vendor for ld:" ${target_vendor} 1>&2
+                       exit 1 ;;
+  hppa*-*-*elf*)       ld_target=hppaelf ;;
+  hppa*-*-lites*)      ld_target=hppaelf ;;
+  vax-dec-ultrix* | vax-dec-bsd*) ld_target=vax ;;
+  mips*-dec-ultrix*)   ld_target=mips-lit ;;
+  mips*-sgi-irix5*)    ld_target=mipsb-elf32 ;;
+  mips*-sgi-irix*)     ld_target=mips-big ;;
+  mips*el-*-ecoff*)    ld_target=mipsl-idt ;;
+  mips*-*-ecoff*)      ld_target=mips-idt ;;
+  mips*-dec-bsd*)      ld_target=mipsbsd ;;
+  mips*el-*-elf*)      ld_target=mipsl-elf32 ;;
+  mips*-*-elf*)                ld_target=mipsb-elf32 ;;
+  alpha-*-osf*)                ld_target=alpha ;;
+  alpha-*-netware*)    ld_target=alpha ;;
+  z8k-*-sim | z8k-*-coff) ld_target=z8ksim ;;
+  ns32k-pc532-mach)    ld_target=pc532mach ;;
+  ns32k-pc532-netbsd*)  ld_target=ns32k-nbsd ;;
+  powerpc-*-elf* | powerpc-*-eabi*)    ld_target=ppc-elf32 ;;
+  powerpcle-*-elf* | powerpcle-*-eabi*)        ld_target=ppcle-elf32 ;;
+  powerpc-*-netware*)  ld_target=ppc-nw ;;
+  w65-*-*)              ld_target=coff-w65 ;;
+  *-*-aout)            ld_target=${target_cpu}-${target_vendor} ;;
+  *-*-coff)            ld_target=${target_cpu}-${target_vendor} ;;
+  *-*-netware)         ld_target=${target_cpu}-nw ;;
+
+  all)                 ld_target=all ;;
 esac
 
 esac
 
-target_makefile_frag=config/${my_target}.mt
+    if [ "x$ld_target" = "xall" ]; then
+        all_targets=true
+    else
+       if [ ! -f ${srcdir}/config/${ld_target}.mt ] ; then
+           echo '***' No file ${srcdir}/config/${ld_target}.mt 1>&2
+           echo '***' GNU LD does not support target ${ld_target} 1>&2
+           echo '***' Look in ld/configure.in for supported targets 1>&2
+           exit 1
+       fi
 
 
-if [ ! -r ${srcdir}/${target_makefile_frag} ]; then
-       echo '***' GNU LD does not support target ${target} 1>&2
-       exit 1
-fi
+       if [ "x$targ" = "x$target" ]; then
+           target_makefile_frag=${srcdir}/config/${ld_target}.mt
+       else
+           target_extra_frags="$target_extra_frags ${srcdir}/config/${ld_target}.mt"
+       fi
+    fi
+done
+
+# We don't do any links based on the target system, just makefile config.
+
+# post-target:
+
+rm -f Makefile.tmp Makefile.2
+mv Makefile Makefile.tmp
+
+if [ x${all_targets} = xfalse ]; then
+
+    allfrags="$target_makefile_frag $target_extra_frags"
+
+    # The emulations in all the configured targets.
+    tb=`sed -n '
+    s/EMUL[    ]*=[    ]*\([^  ]*\)/e\1.o/p
+    s/EMUL_EXTRA.*=[   ]*\([^  ]*\)/e\1.o/p
+    ' $allfrags`
+    # uniq the list.
+    f=""
+    for i in $tb ; do
+       case " $f " in
+       *" $i "*) ;;
+       *) f="$f $i" ;;
+       esac
+    done
+    tb="$f"
+
+    echo "EMULATION_OFILES = $tb" >> Makefile.2
+
+else   # all_targets is true
+    echo 'EMULATION_OFILES = $(ALL_EMULATIONS)' >> Makefile.2
+fi     # all_targets is true
+
+cat Makefile.tmp >> Makefile.2
+rm -f Makefile.tmp
+mv Makefile.2 Makefile
 
 mkdir ldscripts 2>/dev/null
 
 mkdir ldscripts 2>/dev/null
This page took 0.030701 seconds and 4 git commands to generate.