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