2001-05-06 Alexandre Oliva <aoliva@redhat.com>
[binutils.git] / gas / configure.in
bloba82c635440022f56e249bded0fd81d1eaa0bfa67
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* | *-*-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       arm*b|xscale*b|strongarm*b) cpu_type=arm endian=big ;;
119       arm*|xscale*|strongarm*)    cpu_type=arm endian=little ;;
120       c4x*)             cpu_type=tic4x ;;
121       hppa*)            cpu_type=hppa ;;
122 changequote(,)dnl
123       i[3-7]86)         cpu_type=i386 arch=i386;;
124       x86_64)           cpu_type=i386 arch=x86_64;;
125       ia64)             cpu_type=ia64 ;;
126       ip2k)             cpu_type=ip2k endian=big ;; 
127       iq2000)           cpu_type=iq2000 endian=big ;; 
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       or32*)            cpu_type=or32 endian=big ;;
138       pjl*)             cpu_type=pj endian=little ;;
139       pj*)              cpu_type=pj endian=big ;;
140       powerpc*le*)      cpu_type=ppc endian=little ;;
141       powerpc*)         cpu_type=ppc endian=big ;;
142       rs6000*)          cpu_type=ppc ;;
143       s390x*)           cpu_type=s390 arch=s390x ;;
144       s390*)            cpu_type=s390 arch=s390 ;;
145       sh5*)             cpu_type=sh64 endian=big ;;
146       sh5le*)           cpu_type=sh64 endian=little ;;
147       sh64*)            cpu_type=sh64 endian=big ;;
148       sh64le*)          cpu_type=sh64 endian=little ;;
149       sh*le)            cpu_type=sh endian=little ;;
150       sh*)              cpu_type=sh endian=big ;;
151       sparclite*)       cpu_type=sparc arch=sparclite ;;
152       sparclet*)        cpu_type=sparc arch=sparclet ;;
153       sparc64*)         cpu_type=sparc arch=v9-64 ;;
154       sparc86x*)        cpu_type=sparc arch=sparc86x  ;;
155       sparc*)           cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
156       v850*)            cpu_type=v850 ;;
157       xtensa*)          cpu_type=xtensa arch=xtensa ;;
158       *)                cpu_type=${cpu} ;;
159     esac
161     if test ${this_target} = $target ; then
162       target_cpu_type=${cpu_type}
163     elif test ${target_cpu_type} != ${cpu_type} ; then
164       continue
165     fi
167     generic_target=${cpu_type}-$vendor-$os
168     dev=no
169     bfd_gas=no
170     em=generic
172     # assign object format
173     case ${generic_target} in
174       a29k-*-coff)                      fmt=coff ;;
175       a29k-amd-udi)                     fmt=coff ;;
176       a29k-amd-ebmon)                   fmt=coff ;;
177       a29k-nyu-sym1)                    fmt=coff ;;
178       a29k-*-rtems*)                    fmt=coff ;;
179       a29k-*-vxworks*)                  fmt=coff ;;
181       alpha*-*-*vms*)                   fmt=evax ;;
182       alpha*-*-netware*)                fmt=ecoff ;;
183       alpha*-*-osf*)                    fmt=ecoff ;;
184       alpha*-*-linuxecoff*)             fmt=ecoff ;;
185       alpha*-*-linux-gnu*)              fmt=elf em=linux ;;
186       alpha*-*-netbsd*)                 fmt=elf em=nbsd ;;
187       alpha*-*-openbsd*)                fmt=elf em=obsd ;;
189       arc-*-elf*)                       fmt=elf ;;
191       arm-*-aout)                       fmt=aout ;;
192       arm-*-coff | thumb-*-coff)        fmt=coff ;;
193       arm-*-rtems | thumb-*-rtems)      fmt=elf ;;
194       arm-*-elf | thumb-*-elf)          fmt=elf ;;
195       arm-*-kaos*)                      fmt=elf ;;
196       arm*-*-conix*)                    fmt=elf ;;
197       arm-*-linux*aout*)                fmt=aout em=linux ;;
198       arm*-*-linux-gnu*)                fmt=elf  em=linux ;;
199       arm*-*-uclinux*)                  fmt=elf  em=linux ;;
200       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
201       arm-*-*n*bsd*)                    fmt=aout em=nbsd ;;
202       arm-**-nto*)                      fmt=elf ;;
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 ;;
212       cris-*-linux-gnu*)                fmt=multi bfd_gas=yes em=linux ;;
213       cris-*-*)                         fmt=multi bfd_gas=yes ;;
215       d10v-*-*)                         fmt=elf ;;
216       d30v-*-*)                         fmt=elf ;;
217       dlx-*-*)                          fmt=elf ;;
219       fr30-*-*)                         fmt=elf ;;
220       frv-*-*)                          fmt=elf ;;
222       hppa-*-linux*)    case ${cpu} in
223                             hppa*64*)   fmt=elf em=hppalinux64;;
224                             hppa*)      fmt=elf em=linux;;
225                         esac ;;
226       hppa-*-*elf*)                     fmt=elf em=hppa ;;
227       hppa-*-lites*)                    fmt=elf em=hppa ;;
228       hppa-*-netbsd*)                   fmt=elf em=nbsd ;;
229       hppa-*-openbsd*)                  fmt=elf em=hppa ;;
230       hppa-*-osf*)                      fmt=som em=hppa ;;
231       hppa-*-rtems*)                    fmt=elf em=hppa ;;
232       hppa-*-hpux11*)   case ${cpu} in
233                             hppa*64*)   fmt=elf em=hppa64 ;;
234                             hppa*)      fmt=som em=hppa ;;
235                         esac ;;
236       hppa-*-hpux*)                     fmt=som em=hppa ;;
237       hppa-*-mpeix*)                    fmt=som em=hppa ;;
238       hppa-*-bsd*)                      fmt=som em=hppa ;;
239       hppa-*-hiux*)                     fmt=som em=hppa ;;
241       h8300-*-rtems*)                   fmt=coff ;;
242       h8300-*-coff)                     fmt=coff ;;
243       h8300-*-elf)                      fmt=elf ;;
244       h8500-*-rtems*)                   fmt=coff ;;
245       h8500-*-coff)                     fmt=coff ;;
247       i370-*-elf* | i370-*-linux*)      fmt=elf ;;
248       i386-ibm-aix*)                    fmt=coff em=i386aix ;;
249       i386-sequent-bsd*)                fmt=aout em=dynix ;;
250       i386-*-beospe*)                   fmt=coff em=pe ;;
251       i386-*-beos*)                     fmt=elf ;;
252       i386-*-coff)                      fmt=coff ;;
253       i386-*-elf)                       fmt=elf ;;
254       i386-*-kaos*)                     fmt=elf ;;
255       i386-*-bsd*)                      fmt=aout em=386bsd ;;
256       i386-*-netbsd0.8)                 fmt=aout em=386bsd ;;
257       i386-*-netbsdpe*)                 fmt=coff em=pe ;;
258       i386-*-netbsd*-gnu*)              fmt=elf em=nbsd ;;
259       i386-*-netbsdelf*)                fmt=elf em=nbsd ;;
260       i386-*-*n*bsd*)   case ${cpu} in
261                             x86_64)     fmt=elf em=nbsd ;;
262                             *)          fmt=aout em=nbsd ;;
263                         esac ;;
264       i386-*-linux*aout*)               fmt=aout em=linux ;;
265       i386-*-linux*oldld)               fmt=aout em=linux ;;
266       i386-*-linux*coff*)               fmt=coff em=linux ;;
267       i386-*-linux-gnu*)                fmt=elf em=linux ;;
268       x86_64-*-linux-gnu*)              fmt=elf em=linux ;;
269       i386-*-lynxos*)                   fmt=coff em=lynx ;;
270 changequote(,)dnl
271       i386-*-sysv[45]*)                 fmt=elf ;;
272       i386-*-solaris*)                  fmt=elf ;;
273       i386-*-freebsdaout*)              fmt=aout em=386bsd ;;
274       i386-*-freebsd[12].*)             fmt=aout em=386bsd ;;
275       i386-*-freebsd[12])               fmt=aout em=386bsd ;;
276 changequote([,])dnl
277       i386-*-freebsd*)                  fmt=elf em=freebsd ;;
278       i386-*-sysv*)                     fmt=coff ;;
279       i386-*-sco3.2v5*coff)             fmt=coff ;;
280       i386-*-isc*)                      fmt=coff ;;
281       i386-*-sco3.2v5*)                 fmt=elf
282           if test ${this_target} = $target; then
283             AC_DEFINE(SCO_ELF, 1, [Define if defaulting to ELF on SCO 5.])
284           fi ;;
285       i386-*-sco3.2*)                   fmt=coff ;;
286       i386-*-vsta)                      fmt=aout ;;
287       i386-*-msdosdjgpp* \
288       | i386-*-go32* \
289       | i386-go32-rtems*)               fmt=coff em=go32
290             AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?]) ;;
291       i386-*-rtemself*)                 fmt=elf ;;
292       i386-*-rtemscoff*)                fmt=coff ;;
293       i386-*-rtems*)                    fmt=elf ;;
294       i386-*-gnu*)                      fmt=elf ;;
295       i386-*-mach*)                     fmt=aout em=mach ;;
296       i386-*-msdos*)                    fmt=aout ;;
297       i386-*-moss*)                     fmt=elf ;;
298       i386-*-pe)                        fmt=coff em=pe ;;
299       i386-*-cygwin*)                   fmt=coff em=pe ;;
300       i386-*-interix*)                  fmt=coff em=interix ;;
301       i386-*-mingw32*)                  fmt=coff em=pe ;;
302       i386-*-nto-qnx*)                  fmt=elf ;;
303       i386-*-*nt*)                      fmt=coff em=pe ;;
304       i386-*-vxworks*)                  fmt=aout ;;
305       i386-*-chaos)                     fmt=elf ;;
307       i860-*-*)                         fmt=elf endian=little
308                 AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress) ;;
309       i960-*-bout)                      fmt=bout ;;
310       i960-*-coff)                      fmt=coff em=ic960 ;;
311       i960-*-rtems*)                    fmt=coff em=ic960 ;;
312       i960-*-nindy*)                    fmt=bout ;;
313       i960-*-vxworks5.0)                fmt=bout ;;
314       i960-*-vxworks5.*)                fmt=coff em=ic960 ;;
315       i960-*-vxworks*)                  fmt=bout ;;
316       i960-*-elf*)                      fmt=elf ;;
318       ia64-*-elf*)                      fmt=elf ;;
319       ia64-*-aix*)                      fmt=elf em=ia64aix ;;
320       ia64-*-linux-gnu*)                fmt=elf em=linux ;;
321       ia64-*-hpux*)                     fmt=elf em=hpux ;;
322       ia64-*-netbsd*)                   fmt=elf em=nbsd ;;
324       ip2k-*-*)                         fmt=elf ;;
326       iq2000-*-elf)                     fmt=elf bfd_gas=yes ;;
328       m32r-*-*)                         fmt=elf ;;
330       m68hc11-*-* | m6811-*-*)          fmt=elf ;;
331       m68hc12-*-* | m6812-*-*)          fmt=elf ;;
333       m68k-*-vxworks*)                  fmt=aout em=sun3 ;;
334       m68k-ericsson-ose)                fmt=aout em=sun3 ;;
335       m68k-*-sunos*)                    fmt=aout em=sun3 ;;
336       m68k-motorola-sysv*)              fmt=coff em=delta ;;
337       m68k-bull-sysv3*)                 fmt=coff em=dpx2 ;;
338       m68k-apollo-*)                    fmt=coff em=apollo ;;
339       m68k-*-elf*)                      fmt=elf ;;
340       m68k-*-sysv4*)                    fmt=elf em=svr4 ;;
341       m68k-*-sysv*)                     fmt=coff ;;
342       m68k-*-coff | m68k-*-rtemscoff*)  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 ;;
350       m68k-*-netbsd*)                   fmt=aout em=nbsd bfd_gas=yes ;;
351       m68k-*-openbsd*)                  fmt=aout em=nbsd bfd_gas=yes ;;
352       m68k-apple-aux*)                  fmt=coff em=aux ;;
353       m68k-*-psos*)                     fmt=elf em=psos;;
355       m88k-motorola-sysv3*)             fmt=coff em=delt88 ;;
356       m88k-*-coff*)                     fmt=coff ;;
358       mcore-*-elf)                      fmt=elf ;;
359       mcore-*-pe)                       fmt=coff em=pe bfd_gas=yes ;;
361       # don't change em like *-*-bsd does
362       mips-dec-openbsd*)                fmt=elf endian=little ;;
363       mips-dec-bsd*)                    fmt=aout endian=little ;;
364       mips-sony-bsd*)                   fmt=ecoff ;;
365       mips-*-bsd*)
366             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 em=irix ;;
372       mips-*-irix5*)                    fmt=elf em=irix ;;
373       mips-*-irix*)                     fmt=ecoff em=irix ;;
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*)   fmt=elf em=tmips ;;
378       mips-*-sysv*)                     fmt=ecoff ;;
379       mips-*-elf* | mips-*-rtems*)      fmt=elf ;;
380       mips-*-netbsd*)                   fmt=elf ;;
381       mips-*-openbsd*)                  fmt=elf ;;
382       mips-*-vxworks*)                  fmt=elf ;;
384       mmix-*-*)                         fmt=elf ;;
385       mn10200-*-*)                      fmt=elf ;;
386       mn10300-*-*)                      fmt=elf ;;
387       msp430-*-*)                       fmt=elf ;;
388       openrisc-*-*)                     fmt=elf ;;
389       or32-*-rtems*)                    fmt=coff ;;
390       or32-*-coff)                      fmt=coff ;;
391       or32-*-elf)                       fmt=elf ;;
392       pj*)                              fmt=elf ;;
394       ppc-*-pe | ppc-*-cygwin*)         fmt=coff em=pe ;;
395       ppc-*-winnt*)                     fmt=coff em=pe ;;
396       ppc-*-aix5*)                      fmt=coff em=aix5 ;;
397       ppc-*-aix*)                       fmt=coff ;;
398       ppc-*-beos*)                      fmt=coff ;;
399       ppc-*-*n*bsd* | ppc-*-elf*)       fmt=elf ;;
400       ppc-*-eabi* | ppc-*-sysv4*)       fmt=elf ;;
401       ppc-*-linux-gnu*)                 fmt=elf
402             case "$endian" in
403                 big)  ;;
404                 *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
405             esac ;;
406       ppc-*-solaris*)                   fmt=elf
407             if test ${this_target} = $target; then
408                 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
409                           [Define if default target is PowerPC Solaris.])
410             fi
411             if test x${endian} = xbig; then
412                 AC_MSG_ERROR(Solaris must be configured little endian)
413             fi ;;
414       ppc-*-rtems*)                     fmt=elf ;;
415       ppc-*-macos* | ppc-*-mpw*)        fmt=coff em=macos ;;
416       ppc-*-netware*)                   fmt=elf em=ppcnw ;;
417       ppc-**-nto*)                      fmt=elf ;;
418       ppc-*-vxworks*)                   fmt=elf ;;
419       ppc-*-windiss*)                   fmt=elf ;;
420       ppc-*-kaos*)                      fmt=elf ;;
422       s390x-*-linux-gnu*)               fmt=elf em=linux ;;
423       s390-*-linux-gnu*)                fmt=elf em=linux ;;
425       sh*-*-linux*)                     fmt=elf em=linux
426             case ${cpu} in
427                 sh*eb)  endian=big ;;
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-*-nto*)                        fmt=elf ;;
436       sh-*-pe*)                         fmt=coff em=pe bfd_gas=yes endian=little ;;
437       sh-*-rtemself*)                   fmt=elf ;;
438       sh-*-rtems*)                      fmt=coff ;;
439       sh-*-kaos*)                       fmt=elf ;;
440       shle*-*-kaos*)                    fmt=elf ;;
441       sh64-*-elf*)                      fmt=elf ;;
443       ns32k-pc532-mach*)                fmt=aout em=pc532mach ;;
444       ns32k-pc532-ux*)                  fmt=aout em=pc532mach ;;
445       ns32k-pc532-lites*)               fmt=aout em=nbsd532 ;;
446       ns32k-*-*n*bsd*)                  fmt=aout em=nbsd532 ;;
448       sparc-*-rtemsaout*)               fmt=aout ;;
449       sparc-*-rtemself*)                fmt=elf ;;
450       sparc-*-rtems*)                   fmt=elf ;;
451       sparc-*-sunos4*)                  fmt=aout em=sun3 ;;
452       sparc-*-aout | sparc*-*-vxworks*) fmt=aout em=sparcaout ;;
453       sparc-*-coff)                     fmt=coff ;;
454       sparc-*-linux*aout*)              fmt=aout em=linux ;;
455       sparc-*-linux-gnu*)               fmt=elf em=linux ;;
456       sparc-*-lynxos*)                  fmt=coff em=lynx ;;
457       sparc-fujitsu-none)               fmt=aout ;;
458       sparc-*-elf)                      fmt=elf ;;
459       sparc-*-sysv4*)                   fmt=elf ;;
460       sparc-*-solaris*)                 fmt=elf ;;
461       sparc-*-netbsdelf*)               fmt=elf em=nbsd ;;
462       sparc-*-*n*bsd*)  case ${cpu} in
463                             sparc64)    fmt=elf em=nbsd ;;
464                             *)          fmt=aout em=nbsd ;;
465                         esac ;;
466       strongarm-*-coff)                 fmt=coff ;;
467       strongarm-*-elf)                  fmt=elf ;;
468       strongarm-*-kaos*)                fmt=elf ;;
469       xscale-*-coff)                    fmt=coff ;;
470       xscale-*-elf)                     fmt=elf ;;
472       tic30-*-*aout*)                   fmt=aout bfd_gas=yes ;;
473       tic30-*-*coff*)                   fmt=coff bfd_gas=yes ;;
474       tic4x-*-* | c4x-*-*)              fmt=coff bfd_gas=yes ;;
475       tic54x-*-* | c54x*-*-*)           fmt=coff bfd_gas=yes need_libm=yes;;
476       tic80-*-*)                        fmt=coff ;;
478       v850-*-*)                         fmt=elf ;;
479       v850e-*-*)                        fmt=elf ;;
480       v850ea-*-*)                       fmt=elf ;;
482       vax-*-netbsdelf*)                 fmt=elf em=nbsd ;;
483       vax-*-netbsd*)                    fmt=aout em=nbsd ;;
484       vax-*-bsd* | vax-*-ultrix*)       fmt=aout ;;
485       vax-*-vms)                        fmt=vms ;;
487       w65-*-*)                          fmt=coff ;;
489       xstormy16-*-*)                    fmt=elf ;;
491       xtensa-*-*)                       fmt=elf ;;
493       z8k-*-coff | z8k-*-sim)           fmt=coff ;;
495       *-*-aout | *-*-scout)             fmt=aout ;;
496       *-*-freebsd*)                     fmt=elf em=freebsd ;;
497       *-*-nindy*)                       fmt=bout ;;
498       *-*-bsd*)                         fmt=aout em=sun3 ;;
499       *-*-generic)                      fmt=generic ;;
500       *-*-xray | *-*-hms)               fmt=coff ;;
501       *-*-sim)                          fmt=coff ;;
502       *-*-elf | *-*-sysv4* | *-*-solaris*) fmt=elf dev=yes ;;
503       *-*-aros*)                                fmt=elf em=linux bfd_gas=yes ;;
504       *-*-vxworks)                      fmt=aout ;;
505       *-*-netware)                      fmt=elf ;;
506     esac
508     if test ${this_target} = $target ; then
509       endian_def=
510       if test x${endian} = xbig; then
511         endian_def=1
512       elif test x${endian} = xlittle; then
513         endian_def=0
514       fi
515       if test x${endian_def} != x; then
516         AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
517                            [Define as 1 if big endian.])
518       fi
519     fi
521     case ${cpu_type}-${fmt} in
522         alpha*-* | arm-* | i386-* | ia64*-* | mips-* | ns32k-* \
523                 | pdp11-* | ppc-* | sparc-* | strongarm-* | xscale-* \
524                 | *-elf | *-ecoff | *-som)
525             bfd_gas=yes ;;
526     esac
528 # Other random stuff.
530     case ${cpu_type} in
531       mips)
532         # Set mips_cpu to the name of the default CPU.
533         case ${target_cpu} in
534           mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el)
535             mips_cpu=from-abi
536             ;;
537           mipsisa32 | mipsisa32el)
538             mips_cpu=mips32
539             ;;
540           mipsisa32r2 | mipsisa32r2el)
541             mips_cpu=mips32r2
542             ;;
543           mipsisa64 | mipsisa64el)
544             mips_cpu=mips64
545             ;;
546           mipstx39 | mipstx39el)
547             mips_cpu=r3900
548             ;;
549           mips64vr | mips64vrel)
550             mips_cpu=vr4100
551             ;;
552           mipsisa32r2*)
553 changequote(,)dnl
554             mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'`
555 changequote([,])dnl
556             ;;
557           mips64* | mipsisa64* | mipsisa32*)
558 changequote(,)dnl
559             mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'`
560 changequote([,])dnl
561             ;;
562           *)
563             AC_ERROR($target_cpu isn't a supported MIPS CPU name)
564             ;;
565         esac
566         # See whether it's appropriate to set E_MIPS_ABI_O32 for o32
567         # binaries.  It's a GNU extension that some OSes don't understand.
568         # The value only matters on ELF targets.
569         case ${target} in
570           *-*-irix*)
571             use_e_mips_abi_o32=0
572             ;;
573           *)
574             use_e_mips_abi_o32=1
575             ;;
576         esac
577         # Decide whether to generate 32-bit or 64-bit code by default.
578         # Used to resolve -march=from-abi when an embedded ABI is selected.
579         case ${target} in
580           mips64*-*-* | mipsisa64*-*-*)
581             mips_default_64bit=1
582             ;;
583           *)
584             mips_default_64bit=0
585             ;;
586         esac
587         # Decide which ABI to target by default.
588         case ${target} in
589           mips64*-linux* | mips-sgi-irix6*)
590             mips_default_abi=N32_ABI
591             ;;
592           mips*-linux*)
593             mips_default_abi=O32_ABI
594             ;;
595           *)
596             mips_default_abi=NO_ABI
597             ;;
598         esac
599         AC_DEFINE_UNQUOTED(MIPS_CPU_STRING_DEFAULT, "$mips_cpu",
600                            [Default CPU for MIPS targets. ])
601         AC_DEFINE_UNQUOTED(USE_E_MIPS_ABI_O32, $use_e_mips_abi_o32,
602                            [Allow use of E_MIPS_ABI_O32 on MIPS targets. ])
603         AC_DEFINE_UNQUOTED(MIPS_DEFAULT_64BIT, $mips_default_64bit,
604                            [Generate 64-bit code by default on MIPS targets. ])
605         AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi,
606                            [Choose a default ABI for MIPS targets. ])
607         ;;
608     esac
610     # Do we need the opcodes library?
611     case ${cpu_type} in
612       vax | i386 | tic30)
613         ;;
615       *)
616         need_opcodes=yes
618         case "${enable_shared}" in
619         yes) shared_opcodes=true ;;
620         *opcodes*) shared_opcodes=true ;;
621         *) shared_opcodes=false ;;
622         esac
623         if test "${shared_opcodes}" = "true"; then
624           # A shared libopcodes must be linked against libbfd.
625           need_bfd=yes
626         fi
627         ;;
628     esac
630     # Any other special object files needed ?
631     case ${cpu_type} in
632       fr30 | ip2k | iq2000 | m32r | openrisc)
633         using_cgen=yes
634         ;;
636       frv)
637         using_cgen=yes
638         ;;
639       m68k)
640         case ${extra_objects} in
641         *m68k-parse.o*) ;;
642         *) extra_objects="$extra_objects m68k-parse.o" ;;
643         esac
644         ;;
646       mips)
647         echo ${extra_objects} | grep -s "itbl-parse.o" 
648         if test $? -ne 0 ; then
649           extra_objects="$extra_objects itbl-parse.o"
650         fi
652         echo ${extra_objects} | grep -s "itbl-lex.o" 
653         if test $? -ne 0 ; then
654           extra_objects="$extra_objects itbl-lex.o"
655         fi
657         echo ${extra_objects} | grep -s "itbl-ops.o" 
658         if test $? -ne 0 ; then
659           extra_objects="$extra_objects itbl-ops.o"
660         fi
661         ;;
663       i386 | s390 | sparc)
664         if test $this_target = $target ; then
665           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
666         fi
667         ;;
669       xstormy16)
670         using_cgen=yes
671         ;;
673       xtensa)
674         echo ${extra_objects} | grep -s "xtensa-relax.o"
675         if test $? -ne 0 ; then
676           extra_objects="$extra_objects xtensa-relax.o"
677         fi
678         ;;
680       *)
681         ;;
682     esac
684     if test $using_cgen = yes ; then
685         case "x${extra_objects}" in
686         *cgen.o*) ;;
687         *) extra_objects="$extra_objects cgen.o" ;;
688         esac
689     fi
691 # See if we really can support this configuration with the emulation code.
693     if test $this_target = $target ; then
694       primary_bfd_gas=$bfd_gas
695       obj_format=$fmt
696       te_file=$em
698       if test $bfd_gas = no ; then
699         # Can't support other configurations this way.
700         break
701       fi
702     elif test $bfd_gas = no ; then
703       # Can't support this configuration.
704       break
705     fi
707 # From target name and format, produce a list of supported emulations.
709     case ${generic_target}-${fmt} in
710       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
711       mips*-*-linux*-*) case "$endian" in
712                         big)    emulation="mipsbelf mipslelf mipself" ;;
713                         *)      emulation="mipslelf mipsbelf mipself" ;;
714                         esac ;;
715       mips-*-lnews*-ecoff) ;;
716       mips-*-*-ecoff)   case "$endian" in
717                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
718                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
719                         esac ;;
720       mips-*-*-elf)     case "$endian" in
721                         big)    emulation="mipsbelf mipslelf mipself" ;;
722                         *)      emulation="mipslelf mipsbelf mipself" ;;
723                         esac ;;
724       mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
725       # i386-pc-pe-coff != i386-pc-coff.
726       i386-*-pe-coff)   ;;
727       # Uncommenting the next line will turn on support for i386 AOUT
728       # for the default linux configuration
729       # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
730       #
731       i386-*-aout)      emulation="i386aout" ;;
732       i386-*-coff)      emulation="i386coff" ;;
733       i386-*-elf)       emulation="i386elf" ;;
735       # Always all formats.  The first stated emulation becomes the default.
736       cris-*-*aout*)    emulation="crisaout criself" ;;
737       cris-*-*)         emulation="criself crisaout" ;;
738     esac
740     emulations="$emulations $emulation"
742 done
744 # Turn on all targets if possible
745 if test ${all_targets} = "yes"; then
746   case ${target_cpu_type} in
747   i386)
748     case ${obj_format} in
749     aout)
750       emulations="$emulations i386coff i386elf"
751       ;;
752     coff)
753       emulations="$emulations i386aout i386elf"
754     ;;
755     elf)
756       emulations="$emulations i386aout i386coff"
757       ;;
758     esac
759   ;;
760   esac
763 # Assign floating point type.  Most processors with FP support
764 # IEEE FP.  On those that don't support FP at all, usually IEEE
765 # is emulated.
766 case ${target_cpu} in
767   vax | tahoe ) atof=${target_cpu} ;;
768   pdp11)        atof=vax ;;
769   *)            atof=ieee ;;
770 esac
772 case "${obj_format}" in
773   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
774 esac
776 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
777 cgen_cpu_prefix=""
778 if test $using_cgen = yes ; then
779   case ${target_cpu} in
780     *) cgen_cpu_prefix=${target_cpu} ;;
781   esac
782   AC_SUBST(cgen_cpu_prefix)
783   AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
787 dnl Make sure the desired support files exist.
790 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
791   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
794 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
795   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
798 case ${user_bfd_gas}-${primary_bfd_gas} in
799   yes-yes | no-no)
800     # We didn't override user's choice.
801     ;;
802   no-yes)
803     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
804     ;;
805   no-preferred)
806     primary_bfd_gas=no
807     ;;
808   *-preferred)
809     primary_bfd_gas=yes
810     ;;
811   yes-*)
812     primary_bfd_gas=yes
813     ;;
814   -*)
815     # User specified nothing.
816     ;;
817 esac
819 # Some COFF configurations want these random other flags set.
820 case ${obj_format} in
821   coff)
822     case ${target_cpu_type} in
823       i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
824       m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
825       m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
826     esac
827     ;;
828 esac
830 # Getting this done right is going to be a bitch.  Each configuration specified
831 # with --enable-targets=... should be checked for environment, format, cpu, and
832 # bfd_gas setting.
834 # For each configuration, the necessary object file support code must be linked
835 # in.  This might be only one, it might be up to four.  The necessary emulation
836 # code needs to be provided, too.
838 # And then there's "--enable-targets=all"....
840 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
842 formats="${obj_format}"
843 emfiles=""
844 EMULATIONS=""
845 GAS_UNIQ(emulations)
846 for em in . $emulations ; do
847   case $em in
848     .)  continue ;;
849     mipsbelf | mipslelf | mipself)
850         fmt=elf   file=mipself ;;
851     mipsbecoff | mipslecoff | mipsecoff)
852         fmt=ecoff file=mipsecoff ;;
853     *coff)
854         fmt=coff  file=$em ;;
855     *aout)
856         fmt=aout file=$em ;;
857     *elf)
858         fmt=elf file=$em ;;
859   esac
860   formats="$formats $fmt"
861   emfiles="$emfiles e-$file.o"
862   EMULATIONS="$EMULATIONS &$em,"
863 done
864 GAS_UNIQ(formats)
865 GAS_UNIQ(emfiles)
866 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
867   for fmt in $formats ; do
868     case $fmt in
869       aout)     AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
870       bout)     AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
871       coff)     AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
872       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
873       elf)      AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
874       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
875       hp300)    AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
876       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
877       som)      AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
878       vms)      AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
879     esac
880     extra_objects="$extra_objects obj-$fmt.o"
881   done
882   obj_format=multi
884 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
885   DEFAULT_EMULATION=`set . $emulations ; echo $2`
886   # e-mips* has more than one emulation per file, e-i386* has just one at the
887   # moment.  If only one emulation is specified, then don't define
888   # USE_EMULATIONS or include any of the e-files as they will only be bloat.
889   case "${obj_format}${emfiles}" in
890     multi* | *mips*)
891       extra_objects="$extra_objects $emfiles"
892       AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
893   esac
895 AC_SUBST(extra_objects)
896 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
897 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
898                    [Default emulation.])
900 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
901   yes-*-coff)   need_bfd=yes ;;
902   no-*-coff)    need_bfd=yes
903                 AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
904 esac
906 reject_dev_configs=yes
908 case ${reject_dev_configs}-${dev} in
909   yes-yes) # Oops.
910     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
911     ;;
912 esac
914 AC_SUBST(target_cpu_type)
915 AC_SUBST(obj_format)
916 AC_SUBST(te_file)
917 AC_SUBST(install_tooldir)
918 AC_SUBST(atof)
919 dnl AC_SUBST(emulation)
921 case "${primary_bfd_gas}" in
922   yes)  AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
923         need_bfd=yes ;;
924 esac
926 # do we need the opcodes library?
927 case "${need_opcodes}" in
928 yes)
929   OPCODES_LIB=../opcodes/libopcodes.la
930   ;;
931 esac
933 case "${need_bfd}" in
934 yes)
935   BFDLIB=../bfd/libbfd.la
936   BFDVER_H=../bfd/bfdver.h
937   ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h'
938   ;;
939 esac
941 AC_SUBST(BFDLIB)
942 AC_SUBST(OPCODES_LIB)
944 AC_SUBST(BFDVER_H)
945 AC_SUBST(ALL_OBJ_DEPS)
947 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}", [Target alias.])
948 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}",       [Canonical target.])
949 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}",   [Target CPU.])
950 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}", [Target vendor.])
951 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}",    [Target OS.])
953 AC_PROG_CC
955 AC_PROG_YACC
956 AM_PROG_LEX
958 ALL_LINGUAS="fr tr es"
959 CY_GNU_GETTEXT
961 AM_MAINTAINER_MODE
962 AC_EXEEXT
964 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
966 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
967 # people who are not cross-compiling but are compiling cross-assemblers.
968 AC_MSG_CHECKING(whether compiling a cross-assembler)
969 if test "${host}" = "${target}"; then
970   cross_gas=no
971 else
972   cross_gas=yes
973   AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
975 AC_MSG_RESULT($cross_gas)
977 dnl ansidecl.h will deal with const
978 dnl AC_CONST
979 AC_FUNC_ALLOCA
980 AC_C_INLINE
982 # VMS doesn't have unlink.
983 AC_CHECK_FUNCS(unlink remove, break)
985 # Some systems don't have sbrk().
986 AC_CHECK_FUNCS(sbrk)
988 # do we need the math library?
989 case "${need_libm}" in
990 yes) 
991   AC_CHECK_LIBM
992   AC_SUBST(LIBM)
993   ;;
994 esac
996 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
997 # enough, but on some of those systems, the assert macro relies on requoting
998 # working properly!
999 GAS_WORKING_ASSERT
1001 # On some systems, the system header files may not declare malloc, realloc,
1002 # and free.  There are places where gas needs these functions to have been
1003 # declared -- such as when taking their addresses.
1004 gas_test_headers="
1005 #ifdef HAVE_MEMORY_H
1006 #include <memory.h>
1007 #endif
1008 #ifdef HAVE_STRING_H
1009 #include <string.h>
1010 #else
1011 #ifdef HAVE_STRINGS_H
1012 #include <strings.h>
1013 #endif
1014 #endif
1015 #ifdef HAVE_STDLIB_H
1016 #include <stdlib.h>
1017 #endif
1018 #ifdef HAVE_UNISTD_H
1019 #include <unistd.h>
1020 #endif
1022 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
1023 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
1024 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
1025 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
1026 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
1028 # Does errno.h declare errno, or do we have to add a separate declaration
1029 # for it?
1030 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
1031 #ifdef HAVE_ERRNO_H
1032 #include <errno.h>
1033 #endif
1036 dnl This must come last.
1038 dnl We used to make symlinks to files in the source directory, but now
1039 dnl we just use the right name for .c files, and create .h files in
1040 dnl the build directory which include the right .h file.  Make sure
1041 dnl the old symlinks don't exist, so that a reconfigure in an existing
1042 dnl directory behaves reasonably.
1044 AC_OUTPUT(Makefile doc/Makefile ${GDBINIT}:gdbinit.in po/Makefile.in:po/Make-in,
1045 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
1046  echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
1047  echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
1048  echo '#include "te-'"${te_file}"'.h"' > targ-env.h
1049  echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
1050  if test "x$cgen_cpu_prefix" != x ; then
1051    echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
1052  fi
1054  sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
1055 [target_cpu_type=${target_cpu_type}
1056  cgen_cpu_prefix=${cgen_cpu_prefix}
1057  obj_format=${obj_format}
1058  te_file=${te_file}])