aboutsummaryrefslogtreecommitdiff
path: root/ld/configure.in
blob: 1aeae78a17d22d55ae58df3963ea899f3c157d31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# This file is a shell script fragment that supplies the information
# necessary to tailor a template configure script into the configure
# script appropriate for this directory.  For more information, check
# any existing configure script.

srctrigger=ldmain.c
srcname="linker"
target_dependent=true

# per-host:

. ${srcdir}/../bfd/configure.host

host_makefile_frag=

if [ -f ${srcdir}/config/${my_host}.mh ] ; then
	host_makefile_frag=config/${my_host}.mh
fi

# per-target:

# Canonicalize the secondary target names.
if [ -n "$with_targets" ]; then
    for targ in `echo $with_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

  sparc-sun-sunos4*) 	ld_target=sun4 ;;
  sparclite*-fujitsu-*) ld_target=sun4 ;;
# start-sanitize-v9
  sparc64-*-elf*)	ld_target=sparc64-elf ;;
  sparc64*)		ld_target=sun4 ;;
# end-sanitize-v9
  sparc*-*-aout)	ld_target=sun4 ;;
  sparc*-*-coff)	ld_target=coff-sparc ;;
  sparc*-*-elf)		ld_target=sun4sol2 ;;
  sparc*-*-lynxos*)	ld_target=sparc-lynx ;;
  sparc*-*-solaris2*)	ld_target=sun4sol2 ;;
  sparc*-wrs-vxworks*)  ld_target=sun4 ;;
  sparc*-*-netware)	ld_target=sun4sol2 ;;
  i960-wrs-vxworks*)    ld_target=i960 ;;
  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[34]86-*-vsta)	ld_target=vsta ;;
  i[34]86-*-go32)	ld_target=go32 ;;
  i[34]86-*-aix*)	ld_target=i386-coff ;;
  i[34]86-*-sco*)	ld_target=i386-coff ;;
  i[34]86-*-lynxos*)	ld_target=i386-lynx ;;
  i[34]86-*-coff)	ld_target=i386-coff ;;
  i[34]86-*-bsd)	ld_target=i386-bsd ;;
  i[34]86-*-aout)	ld_target=i386-aout ;;
  i[34]86-*-linux)	ld_target=i386-linux ;;
  i[34]86-*-sysv4*)	ld_target=i386-elf ;;
  i[34]86-*-unixware)	ld_target=i386-elf ;;
  i[34]86-*-netware)	ld_target=i386-elf ;;
  i[34]86-*-elf*)	ld_target=i386-elf ;;
  i[34]86-*-sysv*)	ld_target=i386-coff ;;
  i[34]86-*-mach*)	ld_target=i386-mach ;;
  m8*-*-*)		ld_target=m88k-bcs ;;
  a29k-*-udi)		ld_target=sa29200 ;;
  a29k-*-ebmon)		ld_target=ebmon29k ;;
  a29k-*-*)		ld_target=coff-a29k ;;
  h8300-*-hms)		ld_target=coff-h8300 ;;
  h8300h-*-hms)		ld_target=coff-h8300h ;;
  h8500-*-hms)		ld_target=coff-h8500 ;;
  sh-*-*)		ld_target=coff-sh ;;
  m68k-sony-*)		ld_target=news ;;
  m68k-hp-bsd*)		ld_target=hp300bsd ;;
  m68k-motorola-sysv*)	ld_target=delta68 ;;
  m68*-*-aout)		ld_target=m68k ;;
  m68*-*-coff)		ld_target=m68k-coff ;;
  m68*-*-hpux)		ld_target=hp300hpux ;;
  m68*-*-lynxos*)	ld_target=m68k-lynx ;;
  m68*-*-*)
    echo '***' "Unknown m68k target vendor for ld:" ${target_vendor} 1>&2
			exit 1 ;;
  hppa*-hp-osf)		ld_target=hppaosf ;;
  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-idt-ecoff*)	ld_target=mips-idtl ;;
  mips*-idt-ecoff*)	ld_target=mips-idt ;;
  mips*-dec-bsd*)	ld_target=mipsbsd ;;
  mips*-*-elf*)		ld_target=mipsb-elf32 ;;
  alpha-*-osf*)		ld_target=alpha ;;
  alpha-*-netware*)	ld_target=alpha ;;
  z8k-*-sim | z8k-*-coff) ld_target=z8ksim ;;
  *-*-aout)		ld_target=${target_cpu}-${target_vendor} ;;
  *-*-coff)		ld_target=${target_cpu}-${target_vendor} ;;
  *-*-netware)		ld_target=${target_cpu}-elf ;;

  all)			ld_target=all ;;
esac

    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 [ "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[ 	]*=[ 	]*\([^ 	]*\)/em_\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