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