Check unit->addr_size to read in the proper number of prologue bytes.
[binutils.git] / gas / configure.in
blob09422cdf8b0a0a92a5ce24b180d498a68d03a4f4
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)
11 AC_CANONICAL_SYSTEM
12 AC_ISC_POSIX
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})
19 AM_PROG_LIBTOOL
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
45 using_cgen=no
47 build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
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}"
66 AC_SUBST(WARN_CFLAGS)
68 # Generate a header file
69 AM_CONFIG_HEADER(config.h:config.in)
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)
81 te_file=generic
83 # Makefile target for installing gas in $(tooldir)/bin.
84 install_tooldir=install-exec-tooldir
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)
105 emulations=""
107 for this_target in $target $canon_targets ; do
109 changequote(,)dnl
110     eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
111 changequote([,])dnl
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       or32*)            cpu_type=or32 endian=big ;;
141       pjl*)             cpu_type=pj endian=little ;;
142       pj*)              cpu_type=pj endian=big ;;
143       powerpc*le*)      cpu_type=ppc endian=little ;;
144       powerpc*)         cpu_type=ppc endian=big ;;
145       rs6000*)          cpu_type=ppc ;;
146       s390x*)           cpu_type=s390 arch=s390x ;;
147       s390*)            cpu_type=s390 arch=s390 ;;
148       sh5*)             cpu_type=sh64 endian=big ;;
149       sh5le*)           cpu_type=sh64 endian=little ;;
150       sh64*)            cpu_type=sh64 endian=big ;;
151       sh64le*)          cpu_type=sh64 endian=little ;;
152       sh*le)            cpu_type=sh endian=little ;;
153       sh*)              cpu_type=sh endian=big ;;
154       sparclite*)       cpu_type=sparc arch=sparclite ;;
155       sparclet*)        cpu_type=sparc arch=sparclet ;;
156       sparc64*)         cpu_type=sparc arch=v9-64 ;;
157       sparc86x*)        cpu_type=sparc arch=sparc86x  ;;
158       sparc*)           cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
159       v850*)            cpu_type=v850 ;;
160       *)                cpu_type=${cpu} ;;
161     esac
163     if test ${this_target} = $target ; then
164       target_cpu_type=${cpu_type}
165     elif test ${target_cpu_type} != ${cpu_type} ; then
166       continue
167     fi
169     generic_target=${cpu_type}-$vendor-$os
170     dev=no
171     bfd_gas=no
172     em=generic
174     # assign object format
175     case ${generic_target} in
176       a29k-*-coff)          fmt=coff ;;
177       a29k-amd-udi)         fmt=coff ;;
178       a29k-amd-ebmon)       fmt=coff ;;
179       a29k-nyu-sym1)        fmt=coff ;;
180       a29k-*-rtems*)        fmt=coff ;;
181       a29k-*-vxworks*)      fmt=coff ;;
183       alpha*-*-*vms*)       fmt=evax ;;
184       alpha*-*-netware*)    fmt=ecoff ;;
185       alpha*-*-openbsd*)    fmt=ecoff ;;
186       alpha*-*-osf*)        fmt=ecoff ;;
187       alpha*-*-linuxecoff*) fmt=ecoff ;;
188       alpha*-*-linux-gnu*)  fmt=elf em=linux ;;
189       alpha*-*-netbsd*)     fmt=elf em=nbsd ;;
191       arc-*-elf*)           fmt=elf bfd_gas=yes ;;
193       arm-*-aout)                       fmt=aout ;;
194       arm-*-coff | thumb-*-coff)        fmt=coff ;;
195       arm-*-rtems | thumb-*-rtems)      fmt=elf ;;
196       arm-*-elf | thumb-*-elf)          fmt=elf ;;
197       arm*-*-conix*)                    fmt=elf ;;
198       arm-*-linux*aout*)                fmt=aout em=linux ;;
199       arm*-*-linux-gnu* | arm*-*-uclinux*)      
200                                         fmt=elf  em=linux ;;
201       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
202       arm-*-netbsd* | arm-*-openbsd*)   fmt=aout em=nbsd ;;
203       arm-*-oabi | thumb-*-oabi)        fmt=elf ;;
204       arm-epoc-pe | thumb-epoc-pe)      fmt=coff em=epoc-pe ;;
205       arm-*-wince)                      fmt=coff em=wince-pe ;;
206       arm-*-pe | thumb-*-pe)            fmt=coff em=pe ;;
207       arm-*-riscix*)                    fmt=aout em=riscix ;;
208       arm-*-vxworks)                    fmt=coff ;;
210       avr-*-*)              fmt=elf bfd_gas=yes ;;
212       cris-*-*)             fmt=multi bfd_gas=yes ;;
214       d10v-*-*)             fmt=elf bfd_gas=yes ;;
215       d30v-*-*)             fmt=elf bfd_gas=yes ;;
216       dlx-*-*)              fmt=elf ;;
219       fr30-*-*)             fmt=elf bfd_gas=yes ;;
220       frv-*-*)              fmt=elf bfd_gas=yes ;;
222       hppa-*-linux-gnu*)    case ${cpu} in
223                                 hppa*64*)
224                                         fmt=elf em=hppalinux64;;
225                                 hppa*)
226                                         fmt=elf em=linux;;
227                             esac ;;
228       hppa-*-*elf*)         fmt=elf em=hppa ;;
229       hppa-*-lites*)        fmt=elf em=hppa ;;
230       hppa-*-netbsd*)       fmt=elf em=nbsd ;;
231       hppa-*-osf*)          fmt=som em=hppa ;;
232       hppa-*-rtems*)        fmt=elf em=hppa ;;
233       hppa-*-hpux11*)       case ${cpu} in
234                                 hppa*64*)
235                                         fmt=elf em=hppa64 ;;
236                                 hppa*)
237                                         fmt=som em=hppa ;;
238                             esac ;;
239       hppa-*-hpux*)         fmt=som em=hppa ;;
240       hppa-*-mpeix*)        fmt=som em=hppa ;;
241       hppa-*-bsd*)          fmt=som em=hppa ;;
242       hppa-*-hiux*)         fmt=som em=hppa ;;
244       h8300-*-rtems*)       fmt=coff ;;
245       h8300-*-coff)         fmt=coff ;;
246       h8300-*-elf)          fmt=elf ;;
247       h8500-*-rtems*)       fmt=coff ;;
248       h8500-*-coff)         fmt=coff ;;
250       i370-*-elf* | i370-*-linux*) fmt=elf ;;
251       i386-ibm-aix*)        fmt=coff em=i386aix ;;
252       i386-sequent-bsd*)    fmt=aout em=dynix bfd_gas=yes ;;
253       i386-*-beospe*)       fmt=coff em=pe bfd_gas=yes ;;
254       i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;;
255       i386-*-bsd*)          fmt=aout em=386bsd ;;
256       i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
257       i386-*-netbsdpe*)       fmt=coff em=pe bfd_gas=yes ;;
258       i386-*-netbsd*)       em=nbsd bfd_gas=yes
259                             case ${cpu} in
260                               x86_64)   fmt=elf ;;
261                               *)        case ${os} in
262                                           *elf*) fmt=elf ;;
263                                           *)     fmt=aout ;;
264                                         esac
265                                         ;;
266                             esac
267                             ;;
268       i386-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes;;
269       i386-*-linux*aout* | i386-*-linux*oldld)   fmt=aout em=linux ;;
270       i386-*-linux*coff*)   fmt=coff em=linux ;;
271       i386-*-linux-gnu*)    fmt=elf em=linux bfd_gas=yes ;;
272       x86_64-*-linux-gnu*)  fmt=elf em=linux bfd_gas=yes ;;
273       i386-*-lynxos*)       fmt=coff em=lynx ;;
274 changequote(,)dnl
275       i386-*-sysv[45]* | i386-*-solaris* | i386-*-elf)
276                             fmt=elf bfd_gas=yes ;;
277       i386-*-freebsdaout* | i386-*-freebsd[12].* | i386-*-freebsd[12])
278                             fmt=aout em=386bsd ;;
279 changequote([,])dnl
280       i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
281                           fmt=coff ;;
282       i386-*-sco3.2v5*)      fmt=elf
283                             if test ${this_target} = $target; then
284                                 AC_DEFINE(SCO_ELF, 1,
285                                     [Define if defaulting to ELF on SCO 5.])
286                             fi
287                             ;;
288       i386-*-sco3.2*)       fmt=coff ;;
289       i386-*-vsta)          fmt=aout ;;
290       i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
291                             fmt=coff em=go32 bfd_gas=yes
292                             AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
293                             ;;
294       i386-*-rtemself*)     fmt=elf ;;
295       i386-*-rtemscoff*)    fmt=coff ;;
296       i386-*-rtems*)        fmt=elf ;;
297       i386-*-gnu*)          fmt=elf ;;
298       i386-*-mach*)
299                             fmt=aout em=mach bfd_gas=yes ;;
300       i386-*-msdos*)        fmt=aout ;;
301       i386-*-moss*)         fmt=elf ;;
302       i386-*-pe)            fmt=coff em=pe bfd_gas=yes ;;
303       i386-*-cygwin*)       fmt=coff em=pe bfd_gas=yes ;;
304       i386-*-interix*)      fmt=coff em=interix bfd_gas=yes ;;
305       i386-*-mingw32*)      fmt=coff em=pe bfd_gas=yes ;;
306       i386-*-nto-qnx*)      fmt=elf ;;
307       i386-*-*nt*)          fmt=coff em=pe bfd_gas=yes ;;
308       i386-*-vxworks*)      fmt=aout ;;
309       i386-*-chaos)         fmt=elf ;;
310       i860-stardent-sysv4* | i860-stardent-elf*)
311                             fmt=elf bfd_gas=yes endian=little
312                             AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress) ;;
313       i960-*-bout)          fmt=bout ;;
314       i960-*-coff)          fmt=coff em=ic960 ;;
315       i960-*-rtems*)        fmt=coff em=ic960 ;;
316       i960-*-nindy*)        fmt=bout ;;
317       i960-*-vxworks4*)     fmt=bout ;;
318       i960-*-vxworks5.0)    fmt=bout ;;
319       i960-*-vxworks5.*)    fmt=coff em=ic960 ;;
320       i960-*-vxworks*)      fmt=bout ;;
321       i960-*-elf*)          fmt=elf ;;
323       ia64-*-elf*)          fmt=elf ;;
324       ia64-*-aix*)          fmt=elf em=ia64aix ;;
325       ia64-*-linux-gnu*)    fmt=elf em=linux ;;
326       ia64-*-hpux*)         fmt=elf em=hpux ;;
327       ia64-*-netbsd*)       fmt=elf em=nbsd ;;
329       m32r-*-*)             fmt=elf bfd_gas=yes ;;
331       m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)fmt=elf bfd_gas=yes ;;
333       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
334                             fmt=aout em=sun3 ;;
335       m68k-motorola-sysv*)  fmt=coff em=delta ;;
336       m68k-bull-sysv3*)     fmt=coff em=dpx2 ;;
337       m68k-apollo-*)        fmt=coff em=apollo ;;
338       m68k-*-sysv4*) # must be before -sysv*
339                             fmt=elf em=svr4 ;;
340       m68k-*-elf*)          fmt=elf ;;
341       m68k-*-coff | m68k-*-sysv* | m68k-*-rtemscoff*)
342                             fmt=coff ;;
343       m68k-*-rtems*)        fmt=elf ;;
344       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
345       m68k-*-linux*aout*)   fmt=aout em=linux ;;
346       m68k-*-linux-gnu*)    fmt=elf em=linux ;;
347       m68k-*-gnu*)          fmt=elf ;;
348       m68k-*-lynxos*)       fmt=coff em=lynx ;;
349       m68k-*-netbsdelf*)    fmt=elf em=nbsd bfd_gas=yes ;;
350       m68k-*-netbsdaout* | m68k-*-netbsd*)
351                             fmt=aout em=nbsd bfd_gas=yes ;;
352       m68k-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
353       m68k-apple-aux*)      fmt=coff em=aux ;;
354       m68k-*-psos*)         fmt=elf em=psos;;
356       m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
357       m88k-*-coff*)         fmt=coff ;;
359       mcore-*-elf)          fmt=elf bfd_gas=yes ;;
360       mcore-*-pe)           fmt=coff em=pe bfd_gas=yes ;;
362       # don't change em like *-*-bsd does
363       mips-dec-openbsd*)    fmt=elf endian=little ;;
364       mips-dec-bsd*)        fmt=aout endian=little ;;
365       mips-sony-bsd*)       fmt=ecoff ;;
366       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
367       mips-*-ultrix*)       fmt=ecoff endian=little ;;
368       mips-*-osf*)          fmt=ecoff endian=little ;;
369       mips-*-ecoff*)        fmt=ecoff ;;
370       mips-*-pe*)           fmt=coff endian=little em=pe ;;
371       mips-*-irix6*)        fmt=elf ;;
372       mips-*-irix5*)        fmt=elf ;;
373       mips-*-irix*)         fmt=ecoff ;;
374       mips-*-lnews*)        fmt=ecoff em=lnews ;;
375       mips-*-riscos*)       fmt=ecoff ;;
376       mips*-*-linux*)       fmt=elf em=tmips ;;
377       mips-*-sysv4*MP* | mips-*-gnu*)
378                             fmt=elf em=tmips ;;
379       mips-*-sysv*)         fmt=ecoff ;;
380       mips-*-elf* | mips-*-rtems* | mips-*-netbsd* | mips-*-openbsd*)
381                             fmt=elf ;;
382       mips-*-vxworks*)      fmt=elf ;;
383       mmix-*-*)             fmt=elf bfd_gas=yes ;;
384       mn10200-*-*)          fmt=elf bfd_gas=yes ;;
385       mn10300-*-*)          fmt=elf bfd_gas=yes ;;
386       openrisc-*-*)         fmt=elf bfd_gas=yes ;;
387       or32-*-rtems*)        fmt=coff ;;
388       or32-*-coff)          fmt=coff ;;
389       or32-*-elf)           fmt=elf ;;
390       pj*)                  fmt=elf ;;
391       ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*)
392                             fmt=coff em=pe ;;
393       ppc-*-aix5*)          fmt=coff em=aix5 ;;
394       ppc-*-aix*)           fmt=coff ;;
395       ppc-*-beos*)          fmt=coff ;;
396       ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
397                             fmt=elf ;;
398       ppc-*-linux-gnu*)     fmt=elf
399                             case "$endian" in
400                             big)  ;;
401                             *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
402                             esac
403                             ;;
404       ppc-*-solaris*)       fmt=elf
405                             if test ${this_target} = $target; then
406                                 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
407                                 [Define if default target is PowerPC Solaris.])
408                             fi
409                             if test x${endian} = xbig; then
410                                 AC_MSG_ERROR(Solaris must be configured little endian)
411                             fi
412                             ;;
413       ppc-*-rtems*)         fmt=elf ;;
414       ppc-*-macos* | ppc-*-mpw*)
415                             fmt=coff em=macos ;;
416       ppc-*-netware*)       fmt=elf em=ppcnw ;;
417       ppc-*-vxworks*)       fmt=elf ;;
418       ppc-*-windiss*)       fmt=elf ;;
420       s390x-*-linux-gnu*)   fmt=elf em=linux ;;
421       s390-*-linux-gnu*)    fmt=elf em=linux ;;
423       sh*-*-linux*)         fmt=elf em=linux
424                             case ${cpu} in
425                                 sh*eb)
426                                         endian=big ;;
427                                 sh*)
428                                         endian=little ;;
429                             esac ;;
430       sh5*-*-netbsd*)       fmt=elf em=nbsd ;;
431       sh64*-*-netbsd*)      fmt=elf em=nbsd ;;
432       sh*-*-netbsdelf*)     fmt=elf em=nbsd ;;
433       sh-*-elf*)            fmt=elf ;;
434       sh-*-coff*)           fmt=coff ;;
435       sh-*-pe*)             fmt=coff em=pe bfd_gas=yes endian=little ;;
436       sh-*-rtemself*)       fmt=elf ;;
437       sh-*-rtems*)          fmt=coff ;;
439       sh64-*-elf*)          fmt=elf ;;
440       ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
441       ns32k-*-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;
442       ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
444       sparc-*-rtemsaout*)   fmt=aout ;;
445       sparc-*-rtemself*)    fmt=elf ;;
446       sparc-*-rtems*)       fmt=elf ;;
447       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
448       sparc-*-aout | sparc*-*-vxworks*)
449                             fmt=aout em=sparcaout ;;
450       sparc-*-coff)         fmt=coff ;;
451       sparc-*-linux*aout*)  fmt=aout em=linux ;;
452       sparc-*-linux-gnu*)   fmt=elf em=linux ;;
453       sparc-*-lynxos*)      fmt=coff em=lynx ;;
454       sparc-fujitsu-none)   fmt=aout ;;
455       sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
456                             fmt=elf ;;
457       sparc-*-netbsd*)      em=nbsd bfd_gas=yes
458                             case ${cpu} in
459                                 sparc) case ${os} in
460                                            *elf*) fmt=elf ;;
461                                            *)     fmt=aout ;;
462                                        esac ;;
463                                 sparc64) fmt=elf ;;
464                             esac
465                             ;;
466       sparc-*-openbsd*)     fmt=aout em=nbsd ;;
468       strongarm-*-coff)     fmt=coff ;;
469       strongarm-*-elf)      fmt=elf ;;
470       xscale-*-coff)     fmt=coff ;;
471       xscale-*-elf)      fmt=elf ;;
473       tic30-*-*aout*)       fmt=aout bfd_gas=yes ;;
474       tic30-*-*coff*)       fmt=coff bfd_gas=yes ;;
475       tic54x-*-* | c54x*-*-*)
476                             fmt=coff bfd_gas=yes need_libm=yes;;
477       tic80-*-*)            fmt=coff ;;
479       v850-*-*)             fmt=elf bfd_gas=yes ;;
480       v850e-*-*)            fmt=elf bfd_gas=yes ;;
481       v850ea-*-*)           fmt=elf bfd_gas=yes ;;
483       vax-*-netbsdelf*)     fmt=elf em=nbsd bfd_gas=yes ;;
484       vax-*-netbsdaout* | vax-*-netbsd*)
485                             fmt=aout em=nbsd ;;
486       vax-*-bsd* | vax-*-ultrix*)
487                             fmt=aout ;;
488       vax-*-vms)            fmt=vms ;;
490       w65-*-*)              fmt=coff ;;
492       xstormy16-*-*)        fmt=elf bfd_gas=yes ;;
494       z8k-*-coff | z8k-*-sim)
495                             fmt=coff ;;
497       *-*-aout | *-*-scout)
498                             fmt=aout ;;
499       *-*-freebsd*)         fmt=elf em=freebsd bfd_gas=yes ;;
500       *-*-nindy*)
501                             fmt=bout ;;
502       *-*-bsd*)
503                             fmt=aout em=sun3 ;;
504       *-*-generic)          fmt=generic ;;
505       *-*-xray | *-*-hms)   fmt=coff ;;
506       *-*-sim)              fmt=coff ;;
507       *-*-elf | *-*-sysv4* | *-*-solaris*)
508                             AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
509                             fmt=elf dev=yes ;;
510       *-*-vxworks)          fmt=aout ;;
511       *-*-netware)          fmt=elf ;;
512     esac
514     if test ${this_target} = $target ; then
515       endian_def=
516       if test x${endian} = xbig; then
517         endian_def=1
518       elif test x${endian} = xlittle; then
519         endian_def=0
520       fi
521       if test x${endian_def} != x; then
522         AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
523                            [Define as 1 if big endian.])
524       fi
525     fi
527     case ${cpu_type}-${fmt} in
528       alpha*-*) bfd_gas=yes ;;
529       arm-*)    bfd_gas=yes ;;
530     # not yet
531     # i386-aout)        bfd_gas=preferred ;;
532       ia64*-*)  bfd_gas=yes ;;
533       mips-*)   bfd_gas=yes ;;
534       ns32k-*)  bfd_gas=yes ;;
535       pdp11-*)  bfd_gas=yes ;;
536       ppc-*)    bfd_gas=yes ;;
537       sparc-*)  bfd_gas=yes ;;
538       strongarm-*)      bfd_gas=yes ;;
539       xscale-*) bfd_gas=yes ;;
540       *-elf)    bfd_gas=yes ;;
541       *-ecoff)  bfd_gas=yes ;;
542       *-som)    bfd_gas=yes ;;
543     #enable bfd for coff and aout to allow testing if a bfd target is
544     #the primary target, but not for coff or aout as the primary target
545       i386-coff)        if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
546       i386-aout)        if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
547       *)                ;;
548     esac
550 # Other random stuff.
552     # Do we need the opcodes library?
553     case ${cpu_type} in
554       vax | i386 | tic30)
555         ;;
557       *)
558         need_opcodes=yes
560         case "${enable_shared}" in
561         yes) shared_opcodes=true ;;
562         *opcodes*) shared_opcodes=true ;;
563         *) shared_opcodes=false ;;
564         esac
565         if test "${shared_opcodes}" = "true"; then
566           # A shared libopcodes must be linked against libbfd.
567           need_bfd=yes
568         fi
569         ;;
570     esac
572     # Any other special object files needed ?
573     case ${cpu_type} in
574       fr30 | m32r | openrisc)
575         using_cgen=yes
576         ;;
578       frv)
579         using_cgen=yes
580         ;;
581       m68k)
582         case ${extra_objects} in
583         *m68k-parse.o*) ;;
584         *) extra_objects="$extra_objects m68k-parse.o" ;;
585         esac
586         ;;
588       mips)
589         echo ${extra_objects} | grep -s "itbl-parse.o" 
590         if test $? -ne 0 ; then
591           extra_objects="$extra_objects itbl-parse.o"
592         fi
594         echo ${extra_objects} | grep -s "itbl-lex.o" 
595         if test $? -ne 0 ; then
596           extra_objects="$extra_objects itbl-lex.o"
597         fi
599         echo ${extra_objects} | grep -s "itbl-ops.o" 
600         if test $? -ne 0 ; then
601           extra_objects="$extra_objects itbl-ops.o"
602         fi
603         ;;
605       i386 | s390 | sparc)
606         if test $this_target = $target ; then
607           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
608         fi
609         ;;
611       xstormy16)
612         using_cgen=yes
613         ;;
615       *)
616         ;;
617     esac
619     if test $using_cgen = yes ; then
620         case "x${extra_objects}" in
621         *cgen.o*) ;;
622         *) extra_objects="$extra_objects cgen.o" ;;
623         esac
624     fi
626 # See if we really can support this configuration with the emulation code.
628     if test $this_target = $target ; then
629       primary_bfd_gas=$bfd_gas
630       obj_format=$fmt
631       te_file=$em
633       if test $bfd_gas = no ; then
634         # Can't support other configurations this way.
635         break
636       fi
637     elif test $bfd_gas = no ; then
638       # Can't support this configuration.
639       break
640     fi
642 # From target name and format, produce a list of supported emulations.
644     case ${generic_target}-${fmt} in
645       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
646       mips*-*-linux*-*) case "$endian" in
647                         big)    emulation="mipsbelf mipslelf mipself" ;;
648                         *)      emulation="mipslelf mipsbelf mipself" ;;
649                         esac ;;
650       mips-*-lnews*-ecoff) ;;
651       mips-*-*-ecoff)   case "$endian" in
652                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
653                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
654                         esac ;;
655       mips-*-*-elf)     case "$endian" in
656                         big)    emulation="mipsbelf mipslelf mipself" ;;
657                         *)      emulation="mipslelf mipsbelf mipself" ;;
658                         esac ;;
659       mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
660       # i386-pc-pe-coff != i386-pc-coff.
661       i386-*-pe-coff)   ;;
662       # Uncommenting the next line will turn on support for i386 AOUT
663       # for the default linux configuration
664       # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
665       #
666       i386-*-aout)      emulation="i386aout" ;;
667       i386-*-coff)      emulation="i386coff" ;;
668       i386-*-elf)       emulation="i386elf" ;;
670       # Always all formats.  The first stated emulation becomes the default.
671       cris-*-*aout*)    emulation="crisaout criself" ;;
672       cris-*-*)         emulation="criself crisaout" ;;
673     esac
675     emulations="$emulations $emulation"
677 done
679 # Turn on all targets if possible
680 if test ${all_targets} = "yes"; then
681   case ${target_cpu_type} in
682   i386)
683     case ${obj_format} in
684     aout)
685       emulations="$emulations i386coff i386elf"
686       ;;
687     coff)
688       emulations="$emulations i386aout i386elf"
689     ;;
690     elf)
691       emulations="$emulations i386aout i386coff"
692       ;;
693     esac
694   ;;
695   esac
698 # Assign floating point type.  Most processors with FP support
699 # IEEE FP.  On those that don't support FP at all, usually IEEE
700 # is emulated.
701 case ${target_cpu} in
702   vax | tahoe ) atof=${target_cpu} ;;
703   pdp11)        atof=vax ;;
704   *)            atof=ieee ;;
705 esac
707 case "${obj_format}" in
708   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
709 esac
711 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
712 cgen_cpu_prefix=""
713 if test $using_cgen = yes ; then
714   case ${target_cpu} in
715     *) cgen_cpu_prefix=${target_cpu} ;;
716   esac
717   AC_SUBST(cgen_cpu_prefix)
718   AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
722 dnl Make sure the desired support files exist.
725 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
726   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
729 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
730   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
733 case ${user_bfd_gas}-${primary_bfd_gas} in
734   yes-yes | no-no)
735     # We didn't override user's choice.
736     ;;
737   no-yes)
738     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
739     ;;
740   no-preferred)
741     primary_bfd_gas=no
742     ;;
743   *-preferred)
744     primary_bfd_gas=yes
745     ;;
746   yes-*)
747     primary_bfd_gas=yes
748     ;;
749   -*)
750     # User specified nothing.
751     ;;
752 esac
754 # Some COFF configurations want these random other flags set.
755 case ${obj_format} in
756   coff)
757     case ${target_cpu_type} in
758       i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
759       m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
760       m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
761     esac
762     ;;
763 esac
765 # Getting this done right is going to be a bitch.  Each configuration specified
766 # with --enable-targets=... should be checked for environment, format, cpu, and
767 # bfd_gas setting.
769 # For each configuration, the necessary object file support code must be linked
770 # in.  This might be only one, it might be up to four.  The necessary emulation
771 # code needs to be provided, too.
773 # And then there's "--enable-targets=all"....
775 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
777 formats="${obj_format}"
778 emfiles=""
779 EMULATIONS=""
780 GAS_UNIQ(emulations)
781 for em in . $emulations ; do
782   case $em in
783     .)  continue ;;
784     mipsbelf | mipslelf | mipself)
785         fmt=elf   file=mipself ;;
786     mipsbecoff | mipslecoff | mipsecoff)
787         fmt=ecoff file=mipsecoff ;;
788     *coff)
789         fmt=coff  file=$em ;;
790     *aout)
791         fmt=aout file=$em ;;
792     *elf)
793         fmt=elf file=$em ;;
794   esac
795   formats="$formats $fmt"
796   emfiles="$emfiles e-$file.o"
797   EMULATIONS="$EMULATIONS &$em,"
798 done
799 GAS_UNIQ(formats)
800 GAS_UNIQ(emfiles)
801 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
802   for fmt in $formats ; do
803     case $fmt in
804       aout)     AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
805       bout)     AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
806       coff)     AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
807       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
808       elf)      AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
809       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
810       hp300)    AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
811       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
812       som)      AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
813       vms)      AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
814     esac
815     extra_objects="$extra_objects obj-$fmt.o"
816   done
817   obj_format=multi
819 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
820   DEFAULT_EMULATION=`set . $emulations ; echo $2`
821   # e-mips* has more than one emulation per file, e-i386* has just one at the
822   # moment.  If only one emulation is specified, then don't define
823   # USE_EMULATIONS or include any of the e-files as they will only be bloat.
824   case "${obj_format}${emfiles}" in
825     multi* | *mips*)
826       extra_objects="$extra_objects $emfiles"
827       AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
828   esac
830 AC_SUBST(extra_objects)
831 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
832 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
833                    [Default emulation.])
835 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
836   yes-*-coff)   need_bfd=yes ;;
837   no-*-coff)    need_bfd=yes
838                 AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
839 esac
841 reject_dev_configs=yes
843 case ${reject_dev_configs}-${dev} in
844   yes-yes) # Oops.
845     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
846     ;;
847 esac
849 AC_SUBST(target_cpu_type)
850 AC_SUBST(obj_format)
851 AC_SUBST(te_file)
852 AC_SUBST(install_tooldir)
853 AC_SUBST(atof)
854 dnl AC_SUBST(emulation)
856 case "${primary_bfd_gas}" in
857   yes)  AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
858         need_bfd=yes ;;
859 esac
861 # do we need the opcodes library?
862 case "${need_opcodes}" in
863 yes)
864   OPCODES_LIB=../opcodes/libopcodes.la
865   ;;
866 esac
868 case "${need_bfd}" in
869 yes)
870   BFDLIB=../bfd/libbfd.la
871   ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h'
872   ;;
873 esac
875 AC_SUBST(BFDLIB)
876 AC_SUBST(OPCODES_LIB)
878 AC_SUBST(ALL_OBJ_DEPS)
880 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}", [Target alias.])
881 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}",       [Canonical target.])
882 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}",   [Target CPU.])
883 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}", [Target vendor.])
884 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}",    [Target OS.])
886 AC_PROG_CC
888 AC_PROG_YACC
889 AM_PROG_LEX
891 ALL_LINGUAS="fr tr es"
892 CY_GNU_GETTEXT
894 AM_MAINTAINER_MODE
895 AC_EXEEXT
897 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
899 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
900 # people who are not cross-compiling but are compiling cross-assemblers.
901 AC_MSG_CHECKING(whether compiling a cross-assembler)
902 if test "${host}" = "${target}"; then
903   cross_gas=no
904 else
905   cross_gas=yes
906   AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
908 AC_MSG_RESULT($cross_gas)
910 dnl ansidecl.h will deal with const
911 dnl AC_CONST
912 AC_FUNC_ALLOCA
913 AC_C_INLINE
915 # VMS doesn't have unlink.
916 AC_CHECK_FUNCS(unlink remove, break)
918 # Some systems don't have sbrk().
919 AC_CHECK_FUNCS(sbrk)
921 # do we need the math library?
922 case "${need_libm}" in
923 yes) 
924   AC_CHECK_LIBM
925   AC_SUBST(LIBM)
926   ;;
927 esac
929 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
930 # enough, but on some of those systems, the assert macro relies on requoting
931 # working properly!
932 GAS_WORKING_ASSERT
934 # On some systems, the system header files may not declare malloc, realloc,
935 # and free.  There are places where gas needs these functions to have been
936 # declared -- such as when taking their addresses.
937 gas_test_headers="
938 #ifdef HAVE_MEMORY_H
939 #include <memory.h>
940 #endif
941 #ifdef HAVE_STRING_H
942 #include <string.h>
943 #else
944 #ifdef HAVE_STRINGS_H
945 #include <strings.h>
946 #endif
947 #endif
948 #ifdef HAVE_STDLIB_H
949 #include <stdlib.h>
950 #endif
951 #ifdef HAVE_UNISTD_H
952 #include <unistd.h>
953 #endif
955 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
956 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
957 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
958 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
959 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
961 # Does errno.h declare errno, or do we have to add a separate declaration
962 # for it?
963 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
964 #ifdef HAVE_ERRNO_H
965 #include <errno.h>
966 #endif
969 dnl This must come last.
971 dnl We used to make symlinks to files in the source directory, but now
972 dnl we just use the right name for .c files, and create .h files in
973 dnl the build directory which include the right .h file.  Make sure
974 dnl the old symlinks don't exist, so that a reconfigure in an existing
975 dnl directory behaves reasonably.
977 AC_OUTPUT(Makefile doc/Makefile ${GDBINIT}:gdbinit.in po/Makefile.in:po/Make-in,
978 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
979  echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
980  echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
981  echo '#include "te-'"${te_file}"'.h"' > targ-env.h
982  echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
983  if test "x$cgen_cpu_prefix" != x ; then
984    echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
985  fi
987  sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
988 [target_cpu_type=${target_cpu_type}
989  cgen_cpu_prefix=${cgen_cpu_prefix}
990  obj_format=${obj_format}
991  te_file=${te_file}])