* coff-i386.c (coff_i386_is_local_label_name): New static function
[deliverable/binutils-gdb.git] / gas / configure.in
CommitLineData
b11fb939
KR
1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl And be careful when changing it! If you must add tests with square
4dnl brackets, be sure changequote invocations surround it.
5dnl
b11fb939 6dnl
1c94de4d 7AC_PREREQ(2.5)dnl v2.5 needed for --bindir et al
28d3e4a3 8AC_INIT(as.h)dnl
b11fb939 9dnl
318b02b6 10user_bfd_gas=
b11fb939 11AC_ARG_ENABLE(bfd-assembler,
d7b2038f 12[ --enable-bfd-assembler use BFD back end for writing object files],
b11fb939 13[case "${enableval}" in
318b02b6
KR
14 yes) need_bfd=yes user_bfd_gas=yes ;;
15 no) user_bfd_gas=no ;;
b11fb939
KR
16 *) AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
17esac])dnl
e7757ad0
KR
18AC_ARG_ENABLE(targets,
19[ targets alternative target configurations besides the primary],
20[case "${enableval}" in
21 yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
22 ;;
23 no) enable_targets= ;;
24 *) enable_targets=$enableval ;;
25esac])dnl
1c9dbb83
ILT
26AC_ARG_ENABLE(shared,
27[ --enable-shared build shared BFD library],
28[case "${enableval}" in
159e6ef8 29 yes) shared=true shared_bfd=true shared_opcodes=true ;;
1c9dbb83 30 no) shared=false ;;
159e6ef8
MM
31 *bfd*opcodes*) shared=true shared_bfd=true shared_opcodes=true ;;
32 *opcodes*bfd*) shared=true shared_bfd=true shared_opcodes=true ;;
33 *bfd*) shared=true shared_bfd=true ;;
34 *opcodes*) shared=true shared_opcodes=true ;;
35 *) shared=false ;;
1c9dbb83 36esac])dnl
2e013bb7
ILT
37AC_ARG_ENABLE(commonbfdlib,
38[ --enable-commonbfdlib build shared BFD/opcodes/libiberty library],
39[case "${enableval}" in
40 yes) commonbfdlib=true ;;
41 no) commonbfdlib=false ;;
42 *) AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
43esac])dnl
b11fb939
KR
44
45# Generate a header file -- gets more post-processing by Makefile later.
46AC_CONFIG_HEADER(conf)
47
48dnl For recursion to work right, this must be an absolute pathname.
49AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
50AC_CANONICAL_SYSTEM
bf111c9f 51AC_ARG_PROGRAM
7cf4d7ff 52
e7757ad0 53te_file=generic
b678740d 54
e7757ad0
KR
55canon_targets=""
56if test -n "$enable_targets" ; then
57 for t in `echo $enable_targets | sed 's/,/ /g'`; do
ec2f730d 58 result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $t 2>/dev/null`
e7757ad0
KR
59 if test -n "$result" ; then
60 canon_targets="$canon_targets $result"
61# else
62# # Permit "all", etc. We don't support it yet though.
63# canon_targets="$canon_targets $t"
64 fi
65 done
66 GAS_UNIQ(canon_targets)
67fi
68
69emulations=""
70
71for this_target in $target $canon_targets ; do
72
64556643
FF
73changequote(,)dnl
74 eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
75changequote([,])dnl
8cac6ca6 76
e7757ad0
KR
77 # check for architecture variants
78 case ${cpu} in
ae09d880
ILT
79 armeb) cpu_type=arm endian=big ;;
80 arm*) cpu_type=arm endian=little ;;
e7757ad0
KR
81 hppa*) cpu_type=hppa ;;
82changequote(,)dnl
7c2fadd1 83 i[456]86) cpu_type=i386 ;;
e7757ad0
KR
84 m680[012346]0) cpu_type=m68k ;;
85 m68008) cpu_type=m68k ;;
86 m683??) cpu_type=m68k ;;
87changequote([,])dnl
88 m8*) cpu_type=m88k ;;
e16b9537 89 mips*el) cpu_type=mips endian=little ;;
e7757ad0
KR
90 mips*) cpu_type=mips endian=big ;;
91 powerpcle*) cpu_type=ppc endian=little ;;
92 powerpc*) cpu_type=ppc endian=big ;;
93 rs6000*) cpu_type=ppc ;;
6df07e7f 94 sparc64) cpu_type=sparc want_sparc_v9=true ;;
63e4edb5 95 sparc*) cpu_type=sparc ;;
a1c7c0f3 96 *) cpu_type=${cpu} ;;
e7757ad0
KR
97 esac
98
99 if test ${this_target} = $target ; then
100 target_cpu_type=${cpu_type}
101 elif test ${target_cpu_type} != ${cpu_type} ; then
102 continue
103 fi
104
105 targ=${cpu_type}
106 generic_target=${cpu_type}-$vendor-$os
107 dev=no
108 bfd_gas=no
109 em=generic
7cf4d7ff 110
e7757ad0
KR
111 # assign object format
112 case ${generic_target} in
805e36ab 113 a29k-*-coff) fmt=coff targ=ebmon29k ;;
e7757ad0
KR
114 a29k-amd-udi) fmt=coff targ=ebmon29k ;;
115 a29k-amd-ebmon) fmt=coff targ=ebmon29k ;;
880b7429 116 a29k-nyu-sym1) fmt=coff targ=ebmon29k ;;
e7757ad0
KR
117 a29k-*-vxworks*) fmt=coff ;;
118
c6aa56bc 119 alpha-*-*vms*) fmt=evax ;;
e7757ad0 120 alpha-*-netware*) fmt=ecoff ;;
894cca25 121 alpha-*-openbsd*) fmt=ecoff ;;
e7757ad0 122 alpha-*-osf*) fmt=ecoff ;;
df586de2
ILT
123 alpha-*-linuxecoff*) fmt=ecoff ;;
124 alpha-*-linux*) fmt=elf em=linux ;;
816153a3 125
4181c985 126# start-sanitize-arc
e7757ad0 127 arc-*-elf*) fmt=elf bfd_gas=yes ;;
4181c985
KR
128# end-sanitize-arc
129
7be9a312 130 arm-*-riscix*) fmt=aout targ=arm-lit em=riscix ;;
1cb0d00d
KR
131 arm-*-aout) fmt=aout
132 case "$endian" in
133 big) targ=arm-big ;;
134 *) targ=arm-lit ;;
135 esac
136 ;;
d7b2038f 137 arm-*-coff) fmt=coff ;;
e7757ad0 138 arm-*-riscix*) fmt=aout ;;
1cb0d00d 139 arm-*-pe) fmt=coff targ=armcoff em=pe ;;
e7757ad0 140
05a8bf33 141 d10v-*-*) fmt=elf bfd_gas=yes ;;
7d0f8249
MH
142# start-sanitize-d30v
143 d30v-*-*) fmt=elf bfd_gas=yes ;;
144# end-sanitize-d30v
7be9a312 145
e7757ad0
KR
146 hppa-*-*elf*) fmt=elf em=hppa ;;
147 hppa-*-lites*) fmt=elf em=hppa ;;
148 hppa-*-osf*) fmt=som em=hppa ;;
332d5c49 149 hppa-*-rtems*) fmt=elf em=hppa ;;
e7757ad0
KR
150 hppa-*-hpux*) fmt=som em=hppa ;;
151 hppa-*-bsd*) fmt=som em=hppa ;;
152 hppa-*-hiux*) fmt=som em=hppa ;;
153
154 h8300-*-coff) fmt=coff ;;
155
156 i386-ibm-aix*) fmt=coff targ=i386coff
157 em=i386aix ;;
7d0f8249 158 i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;;
e7757ad0
KR
159 i386-*-bsd*) fmt=aout em=386bsd ;;
160 i386-*-netbsd0.8) fmt=aout em=386bsd ;;
161 i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;;
a1c7c0f3 162 i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
e7757ad0
KR
163 i386-*-linux*coff*) fmt=coff em=linux
164 targ=i386coff ;;
165 i386-*-linux*) fmt=elf em=linux ;;
166 i386-*-lynxos*) fmt=coff targ=i386coff
167 em=lynx ;;
2ae5f50b 168 i386-*-sysv4* | i386-*-solaris* | i386-*-elf | i386-*-freebsdelf*)
e7757ad0 169 fmt=elf ;;
66b935da 170 i386-*-sco*elf*) fmt=elf targ=sco5 ;;
e7757ad0
KR
171 i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
172 fmt=coff targ=i386coff ;;
173 i386-*-vsta) fmt=aout ;;
174 i386-*-go32) fmt=coff targ=i386coff ;;
1c94de4d 175 i386-*-rtems*) fmt=coff targ=i386coff ;;
6c186c48
SC
176 i386-*-gnu*) fmt=elf ;;
177 i386-*-mach*)
e7757ad0
KR
178 fmt=aout em=mach bfd_gas=yes ;;
179 i386-*-msdos*) fmt=aout ;;
6c186c48 180 i386-*-moss*) fmt=elf ;;
d0352cbb
DE
181 i386-*-pe) fmt=coff targ=i386coff em=pe ;;
182 i386-*-cygwin32) fmt=coff targ=i386coff em=pe ;;
183 i386-*-*nt) fmt=coff targ=i386coff em=pe ;;
e7757ad0
KR
184 i960-*-bout) fmt=bout ;;
185 i960-*-coff) fmt=coff em=ic960 targ=ic960coff ;;
1c94de4d 186 i960-*-rtems*) fmt=coff em=ic960 targ=ic960coff ;;
e7757ad0
KR
187 i960-*-nindy*) fmt=bout ;;
188 i960-*-vxworks4*) fmt=bout ;;
189 i960-*-vxworks5.0) fmt=bout ;;
190 i960-*-vxworks5.*) fmt=coff em=ic960 targ=ic960coff ;;
191 i960-*-vxworks*) fmt=bout ;;
192
374bdac7
DE
193 m32r-*-*) fmt=elf bfd_gas=yes ;;
194
e7757ad0
KR
195 m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
196 fmt=aout em=sun3 ;;
880b7429 197 m68k-motorola-sysv*) fmt=coff targ=m68kcoff em=delta ;;
e7757ad0
KR
198 m68k-bull-sysv3*) fmt=coff targ=m68kcoff em=dpx2 ;;
199 m68k-apollo-*) fmt=coff targ=apollo em=apollo ;;
fee3e248
ILT
200 m68k-*-sysv4*) # must be before -sysv*
201 fmt=elf em=svr4 ;;
202 m68k-*-elf*) fmt=elf ;;
1c94de4d 203 m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
e7757ad0 204 fmt=coff targ=m68kcoff ;;
e7757ad0 205 m68k-*-hpux*) fmt=hp300 em=hp300 ;;
535cfd0f
ILT
206 m68k-*-linux*aout*) fmt=aout em=linux ;;
207 m68k-*-linux*) fmt=elf em=linux ;;
e7757ad0
KR
208 m68k-*-lynxos*) fmt=coff targ=m68kcoff
209 em=lynx ;;
210 m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
8a6f53e9
ILT
211 m68k-apple-aux*) fmt=coff targ=m68kcoff em=aux ;;
212 m68k-*-psos*) fmt=elf em=psos;;
e7757ad0 213
880b7429 214 m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delt88 ;;
e7757ad0
KR
215 m88k-*-coff*) fmt=coff targ=m88kcoff ;;
216
217 # don't change em like *-*-bsd does
057a4d41 218 mips-dec-netbsd*) fmt=elf targ=mips-lit endian=little ;;
e7757ad0
KR
219 mips-dec-bsd*) fmt=aout targ=mips-lit ;;
220 mips-sony-bsd*) fmt=ecoff targ=mips-big ;;
221 mips-*-bsd*) AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
70f4dbce 222 mips-*-ultrix*) fmt=ecoff targ=mips-lit endian=little ;;
7be9a312 223 mips-*-osf*) fmt=ecoff targ=mips-lit endian=little ;;
e7757ad0
KR
224 mips-*-ecoff*) fmt=ecoff
225 case "$endian" in
226 big) targ=mips-big ;;
227 *) targ=mips-lit ;;
228 esac
229 ;;
230 mips-*-ecoff*) fmt=ecoff targ=mips-big ;;
cbe7dccb 231 mips-*-irix6*) fmt=elf targ=mips-big ;;
e7757ad0
KR
232 mips-*-irix5*) fmt=elf targ=mips-big ;;
233 mips-*-irix*) fmt=ecoff targ=mips-big ;;
515c7142 234 mips-*-lnews*) fmt=ecoff targ=mips-lit em=lnews ;;
e7757ad0
KR
235 mips-*-riscos*) fmt=ecoff targ=mips-big ;;
236 mips-*-sysv*) fmt=ecoff targ=mips-big ;;
fc984eb0 237 mips-*-elf* | mips-*-rtems* | mips-*-linux* | mips-*-gnu* | mips-*-openbsd*)
fed13a5e 238 fmt=elf
e7757ad0
KR
239 case "$endian" in
240 big) targ=mips-big ;;
241 *) targ=mips-lit ;;
242 esac
243 ;;
ae1b99e4
JL
244 mn10200-*-*) fmt=elf bfd_gas=yes ;;
245 mn10300-*-*) fmt=elf bfd_gas=yes ;;
0ff513d9
SC
246 ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
247 fmt=coff em=pe
85cc2190
KK
248 case "$endian" in
249 big) targ=ppc-big ;;
250 *) targ=ppc-lit ;;
251 esac
252 ;;
e7757ad0 253 ppc-*-aix*) fmt=coff ;;
515c7142 254 ppc-*-beos*) fmt=coff ;;
e7757ad0
KR
255 ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
256 fmt=elf
257 case "$endian" in
258 big) targ=ppc-big ;;
259 *) targ=ppc-lit ;;
260 esac
261 ;;
159e6ef8
MM
262 ppc-*-linux*) fmt=elf
263 case "$endian" in
264 big) targ=ppc-big ;;
265 *) AC_MSG_ERROR(Linux must be configured big endian) ;;
266 esac
267 ;;
268 ppc-*-solaris*) fmt=elf
269 case "$endian" in
270 big) AC_MSG_ERROR(Solaris must be configured little endian) ;;
271 *) targ=ppc-sol ;;
272 esac
273 ;;
1c94de4d
JM
274 ppc-*-rtems*)
275 fmt=elf
276 case "$endian" in
277 big) targ=ppc-big ;;
278 *) targ=ppc-lit ;;
279 esac
280 ;;
880b7429
KR
281 ppc-*-macos* | ppc-*-mpw*)
282 fmt=coff em=macos ;;
e7757ad0
KR
283 ppc-*-netware*) fmt=elf em=ppcnw ;;
284
fed13a5e
ILT
285 sh-*-elf*) fmt=elf ;;
286 sh-*-coff*) fmt=coff ;;
816153a3 287
5f757edc
ILT
288 ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
289 ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
e7757ad0 290
1c94de4d 291 sparc-*-rtems*) fmt=aout ;;
e7757ad0 292 sparc-*-sunos4*) fmt=aout em=sun3 ;;
df586de2 293 sparc-*-aout | sparc*-*-vxworks*)
fed13a5e 294 fmt=aout em=sparcaout ;;
e7757ad0 295 sparc-*-coff) fmt=coff ;;
2e013bb7
ILT
296 sparc-*-linux*aout*) fmt=aout em=linux ;;
297 sparc-*-linux*) fmt=elf em=linux ;;
e7757ad0
KR
298 sparc-*-lynxos*) fmt=coff em=lynx ;;
299 sparc-fujitsu-none) fmt=aout ;;
0b27ea39 300 sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
e7757ad0
KR
301 fmt=elf ;;
302 sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
c6aa56bc 303
64556643 304# start-sanitize-tic80
7d0f8249 305 tic80-*-*) fmt=coff targ=tic80coff;;
64556643 306# end-sanitize-tic80
ec2f730d 307# start-sanitize-v850
c6aa56bc 308 v850-*-*) fmt=elf bfd_gas=yes ;;
e7757ad0 309
ec2f730d 310# end-sanitize-v850
e7757ad0
KR
311 vax-*-bsd* | vax-*-ultrix*)
312 fmt=aout ;;
313 vax-*-vms) fmt=vms ;;
314
315 z8k-*-coff | z8k-*-sim)
316 fmt=coff ;;
317
318 w65-*-*) fmt=coff ;;
319
320 *-*-aout | *-*-scout)
321 fmt=aout ;;
322 *-*-nindy*)
323 fmt=bout ;;
324 *-*-bsd*)
325 fmt=aout em=sun3 ;;
326 *-*-generic) fmt=generic ;;
327 *-*-xray | *-*-hms) fmt=coff ;;
328 *-*-sim) fmt=coff ;;
329 *-*-elf | *-*-sysv4* | *-*-solaris*)
6df07e7f 330 AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
e7757ad0
KR
331 fmt=elf dev=yes ;;
332 *-*-vxworks) fmt=aout ;;
333 *-*-netware) fmt=elf ;;
334 esac
335
336 case ${cpu_type}-${fmt} in
df586de2 337 alpha-*) bfd_gas=yes ;;
e7757ad0
KR
338 arm-*) bfd_gas=yes ;;
339 # not yet
340 # i386-aout) bfd_gas=preferred ;;
341 mips-*) bfd_gas=yes ;;
342 ns32k-*) bfd_gas=yes ;;
343 ppc-*) bfd_gas=yes ;;
344 sparc-*) bfd_gas=yes ;;
345 *-elf) bfd_gas=yes ;;
346 *-ecoff) bfd_gas=yes ;;
347 *-som) bfd_gas=yes ;;
348 *) ;;
349 esac
350
5f757edc
ILT
351# Other random stuff.
352
ae09d880
ILT
353 # do we need the opcodes library?
354 case ${cpu_type} in
df586de2 355 vax | i386)
7c2fadd1
ILT
356 ;;
357 *)
358 need_opcodes=yes
159e6ef8 359 if test "${shared_opcodes}" = "true"; then
7c2fadd1
ILT
360 # A shared libopcodes must be linked against libbfd.
361 need_bfd=yes
362 fi
363 ;;
ae09d880
ILT
364 esac
365
6df07e7f
DE
366 test -n "$want_sparc_v9" && AC_DEFINE(SPARC_V9)
367
368 case ${cpu}-${vendor}-${os} in
369 sparc64-*-elf*) AC_DEFINE(SPARC_ARCH64) ;;
370 esac
5f757edc
ILT
371
372 case ${cpu_type} in
374bdac7
DE
373 m32r)
374 case ${extra_objects} in
375 *cgen.o*) ;;
376 *) extra_objects="$extra_objects cgen.o"
374bdac7
DE
377 AC_DEFINE(USING_CGEN)
378 ;;
379 esac
380 ;;
381
1c9dbb83
ILT
382 m68k)
383 case ${extra_objects} in
384 *m68k-parse.o*) ;;
385 *) extra_objects="$extra_objects m68k-parse.o" ;;
386 esac
387 ;;
efec4a28
DP
388
389 mips)
515c7142 390 echo ${extra_objects} | grep -s "itbl-parse.o"
efec4a28 391 if test $? -ne 0 ; then
515c7142 392 extra_objects="$extra_objects itbl-parse.o"
efec4a28
DP
393 fi
394
515c7142 395 echo ${extra_objects} | grep -s "itbl-lex.o"
efec4a28 396 if test $? -ne 0 ; then
515c7142 397 extra_objects="$extra_objects itbl-lex.o"
efec4a28
DP
398 fi
399
515c7142 400 echo ${extra_objects} | grep -s "itbl-ops.o"
efec4a28 401 if test $? -ne 0 ; then
515c7142 402 extra_objects="$extra_objects itbl-ops.o"
efec4a28
DP
403 fi
404 ;;
405
406 *)
407 ;;
5f757edc
ILT
408 esac
409
e7757ad0
KR
410# See if we really can support this configuration with the emulation code.
411
412 if test $this_target = $target ; then
413 primary_bfd_gas=$bfd_gas
414 obj_format=$fmt
415 gas_target=$targ
416 te_file=$em
417
418 if test $bfd_gas = no ; then
419 # Can't support other configurations this way.
420 break
421 fi
422 elif test $bfd_gas = no ; then
423 # Can't support this configuration.
424 break
425 fi
426
427# From target name and format, produce a list of supported emulations.
428
429 case ${generic_target}-${fmt} in
1cb0d00d 430 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
515c7142
ILT
431 mips-*-linux*-*) case "$endian" in
432 big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
433 *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
434 esac ;;
435 mips-*-lnews*-ecoff) ;;
e7757ad0 436 mips-*-*-ecoff) case "$endian" in
1cb0d00d
KR
437 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
438 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
e7757ad0
KR
439 esac ;;
440 mips-*-*-elf) case "$endian" in
1cb0d00d
KR
441 big) emulation="mipsbelf mipslelf mipself" ;;
442 *) emulation="mipslelf mipsbelf mipself" ;;
515c7142
ILT
443 # Uncommenting the next line will turn on support for i386 COFF
444 # in any i386 ELF configuration. This probably doesn't work
445 # correctly.
446 # i386-*-*-elf) emulation="i386coff i386elf" ;;
e7757ad0
KR
447 esac ;;
448 esac
449
450 emulations="$emulations $emulation"
451
e7757ad0 452done
fecd2382 453
8cac6ca6
KR
454# Assign floating point type. Most processors with FP support
455# IEEE FP. On those that don't support FP at all, usually IEEE
456# is emulated.
b678740d 457case ${target_cpu} in
904b6037 458 vax | tahoe ) atof=${target_cpu} ;;
e7757ad0 459 *) atof=ieee ;;
fecd2382
RP
460esac
461
8cac6ca6 462case "${obj_format}" in
b11fb939 463 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
8cac6ca6 464esac
7cf4d7ff 465
b11fb939
KR
466dnl
467dnl Make sure the desired support files exist.
468dnl
469
bf4bd1fc
ILT
470if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
471 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
b11fb939
KR
472fi
473
fb589130 474if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
b11fb939 475 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
7cf4d7ff
KR
476fi
477
8a24a37c
SC
478# and target makefile frag
479
b11fb939 480target_frag=${srcdir}/config/${gas_target}.mt
f2889110
KR
481if test ! -r ${target_frag}; then
482 target_frag=/dev/null # ick! but subst_file can't be conditionalized
483fi
b11fb939 484AC_SUBST_FILE(target_frag)
8a24a37c 485
e7757ad0 486case ${user_bfd_gas}-${primary_bfd_gas} in
a8285504 487 yes-yes | no-no)
7cf4d7ff
KR
488 # We didn't override user's choice.
489 ;;
a8285504 490 no-yes)
b11fb939 491 AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
7cf4d7ff 492 ;;
a8285504 493 no-preferred)
e7757ad0 494 primary_bfd_gas=no
a8285504
DZ
495 ;;
496 *-preferred)
e7757ad0 497 primary_bfd_gas=yes
a8285504 498 ;;
f2889110 499 yes-*)
e7757ad0 500 primary_bfd_gas=yes
f2889110 501 ;;
a8285504
DZ
502 -*)
503 # User specified nothing.
504 ;;
7cf4d7ff
KR
505esac
506
e7757ad0
KR
507# Some COFF configurations want these random other flags set.
508case ${obj_format} in
509 coff)
510 case ${target_cpu_type} in
511 i386) AC_DEFINE(I386COFF) ;;
512 m68k) AC_DEFINE(M68KCOFF) ;;
513 m88k) AC_DEFINE(M88KCOFF) ;;
514 esac
515 ;;
516esac
517
518# Getting this done right is going to be a bitch. Each configuration specified
519# with --enable-targets=... should be checked for environment, format, cpu, and
520# bfd_gas setting.
521#
522# For each configuration, the necessary object file support code must be linked
523# in. This might be only one, it might be up to four. The necessary emulation
524# code needs to be provided, too.
525#
526# And then there's "--enable-targets=all"....
527#
528# For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
529
530formats="${obj_format}"
531emfiles=""
532EMULATIONS=""
533GAS_UNIQ(emulations)
534for em in . $emulations ; do
535 case $em in
536 .) continue ;;
537 mipsbelf | mipslelf)
538 fmt=elf file=mipself ;;
539 mipsbecoff | mipslecoff)
540 fmt=ecoff file=mipsecoff ;;
515c7142
ILT
541 i386coff)
542 fmt=coff file=i386coff ;;
543 i386elf)
544 fmt=elf file=i386elf ;;
e7757ad0
KR
545 esac
546 formats="$formats $fmt"
547 emfiles="$emfiles e-$file.o"
548 EMULATIONS="$EMULATIONS &$em,"
549done
550GAS_UNIQ(formats)
551GAS_UNIQ(emfiles)
552if test `set . $formats ; shift ; echo $#` -gt 1 ; then
553 for fmt in $formats ; do
554 case $fmt in
555 aout) AC_DEFINE(OBJ_MAYBE_AOUT) ;;
556 bout) AC_DEFINE(OBJ_MAYBE_BOUT) ;;
557 coff) AC_DEFINE(OBJ_MAYBE_COFF) ;;
558 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF) ;;
559 elf) AC_DEFINE(OBJ_MAYBE_ELF) ;;
560 generic) AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
561 hp300) AC_DEFINE(OBJ_MAYBE_HP300) ;;
562 ieee) AC_DEFINE(OBJ_MAYBE_IEEE) ;;
563 som) AC_DEFINE(OBJ_MAYBE_SOM) ;;
564 vms) AC_DEFINE(OBJ_MAYBE_VMS) ;;
565 esac
566 extra_objects="$extra_objects obj-$fmt.o"
567 done
568 obj_format=multi
569fi
570if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
571 te_file=multi
572 extra_objects="$extra_objects $emfiles"
573 DEFAULT_EMULATION=`set . $emulations ; echo $2`
574 AC_DEFINE(USE_EMULATIONS)
575fi
576AC_SUBST(extra_objects)
577AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
578AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
579
bf4bd1fc 580case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
318b02b6
KR
581 yes-*-coff) need_bfd=yes ;;
582 no-*-coff) need_bfd=yes
583 AC_DEFINE(MANY_SEGMENTS) ;;
584esac
585
69ecc03f 586reject_dev_configs=yes
8cac6ca6
KR
587
588case ${reject_dev_configs}-${dev} in
589 yes-yes) # Oops.
b11fb939 590 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
8cac6ca6
KR
591 ;;
592esac
593
bf4bd1fc 594AC_SUBST(target_cpu_type)
833c46e1 595AC_SUBST(obj_format)
515c7142 596AC_SUBST(te_file)
833c46e1 597AC_SUBST(atof)
e7757ad0 598dnl AC_SUBST(emulation)
833c46e1 599
e7757ad0 600case "${primary_bfd_gas}" in
b11fb939
KR
601 yes) AC_DEFINE(BFD_ASSEMBLER)
602 need_bfd=yes ;;
4f6f4aa8
KR
603esac
604
ae09d880
ILT
605# do we need the opcodes library?
606case "${need_opcodes}" in
1c94de4d
JM
607yes)
608 OPCODES_DEP=../opcodes/libopcodes.a
609 OPCODES_LIB='-L../opcodes -lopcodes'
610
611 # We need to handle some special cases for shared libraries.
612 case "${host}" in
613 *-*-sunos*)
614 # On SunOS, we must link against the name we are going to install,
615 # not -lbfd, since SunOS does not support SONAME.
159e6ef8 616 if test "${shared_opcodes}" = "true"; then
ae09d880 617 OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`'
ae09d880
ILT
618 fi
619 ;;
1c94de4d
JM
620 alpha*-*-osf*)
621 # On Alpha OSF/1, the native linker searches all the -L
622 # directories for any LIB.so files, and only then searches for any
623 # LIB.a files. That means that if there is an installed
624 # libbfd.so, but this build is not done with --enable-shared, the
625 # link will wind up being against the install libbfd.so rather
626 # than the newly built libbfd. To avoid this, we must explicitly
627 # link against libbfd.a when --enable-shared is not used.
628 if test "${shared_opcodes}" != "true"; then
629 OPCODES_LIB='../opcodes/libopcodes.a'
630 fi
631 ;;
632 esac
633 ;;
ae09d880 634esac
ae09d880 635
b11fb939 636case "${need_bfd}" in
1c94de4d
JM
637yes)
638 BFDDEP=../bfd/libbfd.a
639 BFDLIB='-L../bfd -lbfd'
640 ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
641
642 # We need to handle some special cases for shared libraries
643 case "${host}" in
644 *-*-sunos*)
645 # On SunOS, we must link against the name we are going to install,
646 # not -lbfd, since SunOS does not support SONAME.
159e6ef8 647 if test "${shared_bfd}" = "true"; then
1c94de4d 648 BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`'
ae09d880
ILT
649 fi
650 ;;
1c94de4d
JM
651 alpha*-*-osf*)
652 # On Alpha OSF/1, the native linker searches all the -L
653 # directories for any LIB.so files, and only then searches for any
654 # LIB.a files. That means that if there is an installed
655 # libbfd.so, but this build is not done with --enable-shared, the
656 # link will wind up being against the install libbfd.so rather
657 # than the newly built libbfd. To avoid this, we must explicitly
658 # link against libbfd.a when --enable-shared is not used.
659 if test "${shared_bfd}" != "true"; then
660 BFDLIB='../bfd/libbfd.a'
661 fi
662 ;;
663 esac
2e013bb7
ILT
664
665 if test "${commonbfdlib}" = "true"; then
666 # when a shared libbfd is built with --enable-commonbfdlib,
667 # all of libopcodes is available in libbfd.so
668 OPCODES_LIB=
669 fi
1c94de4d 670 ;;
4f6f4aa8 671esac
2e013bb7 672
1c9dbb83 673AC_SUBST(BFDDEP)
b11fb939 674AC_SUBST(BFDLIB)
2e013bb7
ILT
675AC_SUBST(OPCODES_DEP)
676AC_SUBST(OPCODES_LIB)
677
b11fb939 678AC_SUBST(ALL_OBJ_DEPS)
4f6f4aa8 679
b11fb939
KR
680AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}")
681AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}")
682AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}")
683AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}")
684AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}")
685
b11fb939
KR
686AC_PROG_CC
687AC_PROG_INSTALL
688
b11fb939
KR
689AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
690
bf111c9f
KR
691# Put this here so that autoconf's "cross-compiling" message doesn't confuse
692# people who are not cross-compiling but are compiling cross-assemblers.
693AC_MSG_CHECKING(whether compiling a cross-assembler)
694if test "${host}" = "${target}"; then
f2889110
KR
695 cross_gas=no
696else
bf111c9f
KR
697 cross_gas=yes
698 AC_DEFINE(CROSS_COMPILE)
bf111c9f
KR
699fi
700AC_MSG_RESULT($cross_gas)
701
b11fb939
KR
702dnl ansidecl.h will deal with const
703dnl AC_CONST
704AC_FUNC_ALLOCA
705AC_C_INLINE
706
f2889110
KR
707# VMS doesn't have unlink.
708AC_CHECK_FUNCS(unlink remove, break)
28d3e4a3 709
e63c594d
FF
710# Some systems don't have sbrk().
711AC_CHECK_FUNCS(sbrk)
712
b11fb939
KR
713# Some non-ANSI preprocessors botch requoting inside strings. That's bad
714# enough, but on some of those systems, the assert macro relies on requoting
715# working properly!
bf111c9f 716GAS_WORKING_ASSERT
b11fb939
KR
717
718# On some systems, the system header files may not declare malloc, realloc,
719# and free. There are places where gas needs these functions to have been
720# declared -- such as when taking their addresses.
bf111c9f 721gas_test_headers="
b11fb939
KR
722#ifdef HAVE_MEMORY_H
723#include <memory.h>
724#endif
725#ifdef HAVE_STRING_H
726#include <string.h>
5cece526
ILT
727#else
728#ifdef HAVE_STRINGS_H
729#include <strings.h>
730#endif
b11fb939
KR
731#endif
732#ifdef HAVE_STDLIB_H
733#include <stdlib.h>
734#endif
735#ifdef HAVE_UNISTD_H
736#include <unistd.h>
737#endif
bf111c9f 738"
5cece526 739GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
bf111c9f 740GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
5f757edc 741GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
5cece526 742GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
b11fb939
KR
743
744# Does errno.h declare errno, or do we have to add a separate declaration
745# for it?
bf111c9f 746GAS_CHECK_DECL_NEEDED(errno, f, int f, [
b11fb939
KR
747#ifdef HAVE_ERRNO_H
748#include <errno.h>
749#endif
bf111c9f 750])
b11fb939 751
1c9dbb83 752HLDFLAGS=
fed13a5e 753HLDENV=
1a2f3c3f 754RPATH_ENVVAR=LD_LIBRARY_PATH
1c9dbb83
ILT
755# If we have shared libraries, try to set rpath reasonably.
756if test "${shared}" = "true"; then
757 case "${host}" in
56f9773f
ILT
758 *-*-hpux*)
759 HLDFLAGS='-Wl,+s,+b,$(libdir)'
1a2f3c3f 760 RPATH_ENVVAR=SHLIB_PATH
56f9773f 761 ;;
cbe7dccb 762 *-*-irix5* | *-*-irix6*)
1c9dbb83
ILT
763 HLDFLAGS='-Wl,-rpath,$(libdir)'
764 ;;
765 *-*-linux*aout*)
766 ;;
767 *-*-linux*)
768 HLDFLAGS='-Wl,-rpath,$(libdir)'
769 ;;
fed13a5e 770 *-*-solaris*)
1c9dbb83
ILT
771 HLDFLAGS='-R $(libdir)'
772 ;;
fed13a5e
ILT
773 *-*-sysv4*)
774 HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;'
775 ;;
1c9dbb83
ILT
776 esac
777fi
778
779# On SunOS, if the linker supports the -rpath option, use it to
780# prevent ../bfd and ../opcodes from being included in the run time
781# search path.
782case "${host}" in
783 *-*-sunos*)
784 echo 'main () { }' > conftest.c
785 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
786 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
787 :
788 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
789 :
7925f4d4
ILT
790 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
791 :
1c9dbb83
ILT
792 elif test "${shared}" = "true"; then
793 HLDFLAGS='-Wl,-rpath=$(libdir)'
794 else
795 HLDFLAGS='-Wl,-rpath='
796 fi
797 rm -f conftest.t conftest.c conftest
798 ;;
799esac
800AC_SUBST(HLDFLAGS)
fed13a5e 801AC_SUBST(HLDENV)
1a2f3c3f 802AC_SUBST(RPATH_ENVVAR)
1c9dbb83 803
b11fb939 804dnl This must come last.
515c7142
ILT
805
806dnl We used to make symlinks to files in the source directory, but now
807dnl we just use the right name for .c files, and create .h files in
808dnl the build directory which include the right .h file. Make sure
809dnl the old symlinks don't exist, so that a reconfigure in an existing
810dnl directory behaves reasonably.
811
812AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in,
813[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
814 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
815 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
816 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
39ffbb4d
DE
817 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
818 case ${target_cpu_type} in
819 m32r) echo '#include "opcodes/'"${target_cpu_type}"'-opc.h"' > cgen-opc.h ;;
820 esac],
515c7142
ILT
821[target_cpu_type=${target_cpu_type}
822 obj_format=${obj_format}
823 te_file=${te_file}])
This page took 0.246551 seconds and 4 git commands to generate.