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