Add support for m32r-linux target, including a RELA ABI and PIC.
[binutils.git] / gas / configure.in
blob514fee4fc2ae0aae767ab6fe172e5753646bdfcc
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.57)
9 AC_INIT(as.h)
11 dnl Autoconf 2.57 will find the aux dir without this.  However, unless
12 dnl we specify this explicitly, automake-1.7 will assume that ylwrap is in
13 dnl gas/ instead of gas/../.
14 AC_CONFIG_AUX_DIR(..)
15 AC_CANONICAL_SYSTEM
16 AC_ISC_POSIX
18 changequote(,)dnl
19 BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[         ]*\([^  ]*\)[   ]*).*/\1/p' < ${srcdir}/../bfd/configure.in`
20 changequote([,])dnl
21 AM_INIT_AUTOMAKE(gas, ${BFD_VERSION})
23 AM_PROG_LIBTOOL
25 user_bfd_gas=
26 AC_ARG_ENABLE(bfd-assembler,
27 [  --enable-bfd-assembler  use BFD back end for writing object files],
28 [case "${enableval}" in
29   yes) need_bfd=yes user_bfd_gas=yes ;;
30   no)  user_bfd_gas=no ;;
31   *)   AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
32 esac])dnl
33 AC_ARG_ENABLE(targets,
34 [    targets            alternative target configurations besides the primary],
35 [case "${enableval}" in
36   yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
37             ;;
38   no)       enable_targets= ;;
39   *)        enable_targets=$enableval ;;
40 esac])dnl
41 AC_ARG_ENABLE(commonbfdlib,
42 [  --enable-commonbfdlib   build shared BFD/opcodes/libiberty library],
43 [case "${enableval}" in
44   yes) commonbfdlib=true ;;
45   no)  commonbfdlib=false ;;
46   *)   AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
47 esac])dnl
49 using_cgen=no
51 build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
52 AC_ARG_ENABLE(build-warnings,
53 [  --enable-build-warnings Enable build-time compiler warnings if gcc is used],
54 [case "${enableval}" in
55   yes)  ;;
56   no)   build_warnings="-w";;
57   ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
58         build_warnings="${build_warnings} ${t}";;
59   *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
60         build_warnings="${t} ${build_warnings}";;
61   *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
62 esac
63 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
64   echo "Setting warning flags = $build_warnings" 6>&1
65 fi])dnl
66 WARN_CFLAGS=""
67 if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then
68     WARN_CFLAGS="${build_warnings}"
70 AC_SUBST(WARN_CFLAGS)
72 # Generate a header file
73 AM_CONFIG_HEADER(config.h:config.in)
75 # If we are on a DOS filesystem, we must use gdb.ini rather than
76 # .gdbinit.
77 case "${host}" in
78   *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*)
79     GDBINIT="gdb.ini"
80     AC_CONFIG_FILES(gdb.ini:gdbinit.in)
81     ;;
82   *)
83     GDBINIT=".gdbinit"
84     AC_CONFIG_FILES(.gdbinit:gdbinit.in)
85     ;;
86 esac
87 AC_SUBST(GDBINIT)
89 te_file=generic
91 # Makefile target for installing gas in $(tooldir)/bin.
92 install_tooldir=install-exec-tooldir
94 canon_targets=""
95 all_targets=no
96 if test -n "$enable_targets" ; then
97   for t in `echo $enable_targets | sed 's/,/ /g'`; do
98     if test $t = "all"; then
99       all_targets=yes
100       continue
101     fi
102     result=`$ac_config_sub $t 2>/dev/null`
103     if test -n "$result" ; then
104       canon_targets="$canon_targets $result"
105 #    else
106 #      # Permit "all", etc.  We don't support it yet though.
107 #      canon_targets="$canon_targets $t"
108     fi
109   done
110   GAS_UNIQ(canon_targets)
113 emulations=""
115 for this_target in $target $canon_targets ; do
117 changequote(,)dnl
118     eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
119 changequote([,])dnl
121     # check for architecture variants
122     arch=
123     endian=
124     case ${cpu} in
125       am33_2.0)         cpu_type=mn10300 endian=little ;;
126       alpha*)           cpu_type=alpha ;;
127       arm*b|xscale*b|strongarm*b) cpu_type=arm endian=big ;;
128       arm*|xscale*|strongarm*)    cpu_type=arm endian=little ;;
129       c4x*)             cpu_type=tic4x ;;
130       hppa*)            cpu_type=hppa ;;
131 changequote(,)dnl
132       i[3-7]86)         cpu_type=i386 arch=i386;;
133       x86_64)           cpu_type=i386 arch=x86_64;;
134       ia64)             cpu_type=ia64 ;;
135       ip2k)             cpu_type=ip2k endian=big ;; 
136       iq2000)           cpu_type=iq2000 endian=big ;; 
137       m6811|m6812|m68hc12) cpu_type=m68hc11 ;;
138       m680[012346]0)    cpu_type=m68k ;;
139 changequote([,])dnl
140       m68008)           cpu_type=m68k ;;
141       m683??)           cpu_type=m68k ;;
142       m5200)            cpu_type=m68k ;;
143       m8*)              cpu_type=m88k ;;
144       mips*el)          cpu_type=mips endian=little ;;
145       mips*)            cpu_type=mips endian=big ;;
146       or32*)            cpu_type=or32 endian=big ;;
147       pjl*)             cpu_type=pj endian=little ;;
148       pj*)              cpu_type=pj endian=big ;;
149       powerpc*le*)      cpu_type=ppc endian=little ;;
150       powerpc*)         cpu_type=ppc endian=big ;;
151       rs6000*)          cpu_type=ppc ;;
152       s390x*)           cpu_type=s390 arch=s390x ;;
153       s390*)            cpu_type=s390 arch=s390 ;;
154       sh5*)             cpu_type=sh64 endian=big ;;
155       sh5le*)           cpu_type=sh64 endian=little ;;
156       sh64*)            cpu_type=sh64 endian=big ;;
157       sh64le*)          cpu_type=sh64 endian=little ;;
158       sh*le)            cpu_type=sh endian=little ;;
159       sh*)              cpu_type=sh endian=big ;;
160       sparclite*)       cpu_type=sparc arch=sparclite ;;
161       sparclet*)        cpu_type=sparc arch=sparclet ;;
162       sparc64*)         cpu_type=sparc arch=v9-64 ;;
163       sparc86x*)        cpu_type=sparc arch=sparc86x  ;;
164       sparc*)           cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
165       v850*)            cpu_type=v850 ;;
166       xtensa*)          cpu_type=xtensa arch=xtensa ;;
167       m32r)             cpu_type=m32r target_cpu=m32r endian=big ;;
168       m32rle)           cpu_type=m32r target_cpu=m32r endian=little ;;
169       *)                cpu_type=${cpu} ;;
170     esac
172     if test ${this_target} = $target ; then
173       target_cpu_type=${cpu_type}
174     elif test ${target_cpu_type} != ${cpu_type} ; then
175       continue
176     fi
178     generic_target=${cpu_type}-$vendor-$os
179     dev=no
180     bfd_gas=no
181     em=generic
183     # assign object format
184     case ${generic_target} in
185       a29k-*-coff)                      fmt=coff ;;
186       a29k-amd-udi)                     fmt=coff ;;
187       a29k-amd-ebmon)                   fmt=coff ;;
188       a29k-nyu-sym1)                    fmt=coff ;;
189       a29k-*-rtems*)                    fmt=coff ;;
190       a29k-*-vxworks*)                  fmt=coff ;;
192       alpha*-*-*vms*)                   fmt=evax ;;
193       alpha*-*-netware*)                fmt=ecoff ;;
194       alpha*-*-osf*)                    fmt=ecoff ;;
195       alpha*-*-linuxecoff*)             fmt=ecoff ;;
196       alpha*-*-linux-gnu*)              fmt=elf em=linux ;;
197       alpha*-*-netbsd*)                 fmt=elf em=nbsd ;;
198       alpha*-*-openbsd*)                fmt=elf em=obsd ;;
200       # cpu_type for am33_2.0 is set to mn10300
201       mn10300-*-linux*)                 fmt=elf bfd_gas=yes em=linux ;;
203       arc-*-elf*)                       fmt=elf ;;
205       arm-*-aout)                       fmt=aout ;;
206       arm-*-coff | thumb-*-coff)        fmt=coff ;;
207       arm-*-rtems* | thumb-*-rtems*)    fmt=elf ;;
208       arm-*-elf | thumb-*-elf)          fmt=elf ;;
209       arm-*-kaos*)                      fmt=elf ;;
210       arm*-*-conix*)                    fmt=elf ;;
211       arm-*-linux*aout*)                fmt=aout em=linux ;;
212       arm*-*-linux-gnu*)                fmt=elf  em=linux ;;
213       arm*-*-uclinux*)                  fmt=elf  em=linux ;;
214       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
215       arm-*-*n*bsd*)                    fmt=aout em=nbsd ;;
216       arm-**-nto*)                      fmt=elf ;;
217       arm-*-oabi | thumb-*-oabi)        fmt=elf ;;
218       arm-epoc-pe | thumb-epoc-pe)      fmt=coff em=epoc-pe ;;
219       arm-wince-pe | arm-*-wince)       fmt=coff em=wince-pe ;;
220       arm-*-pe | thumb-*-pe)            fmt=coff em=pe ;;
221       arm-*-riscix*)                    fmt=aout em=riscix ;;
223       avr-*-*)                          fmt=elf ;;
225       cris-*-linux-gnu*)                fmt=multi bfd_gas=yes em=linux ;;
226       cris-*-*)                         fmt=multi bfd_gas=yes ;;
228       d10v-*-*)                         fmt=elf ;;
229       d30v-*-*)                         fmt=elf ;;
230       dlx-*-*)                          fmt=elf ;;
232       fr30-*-*)                         fmt=elf ;;
233       frv-*-*)                          fmt=elf ;;
235       hppa-*-linux*)    case ${cpu} in
236                             hppa*64*)   fmt=elf em=hppalinux64;;
237                             hppa*)      fmt=elf em=linux;;
238                         esac ;;
239       hppa-*-*elf*)                     fmt=elf em=hppa ;;
240       hppa-*-lites*)                    fmt=elf em=hppa ;;
241       hppa-*-netbsd*)                   fmt=elf em=nbsd ;;
242       hppa-*-openbsd*)                  fmt=elf em=hppa ;;
243       hppa-*-osf*)                      fmt=som em=hppa ;;
244       hppa-*-rtems*)                    fmt=elf em=hppa ;;
245       hppa-*-hpux11*)   case ${cpu} in
246                             hppa*64*)   fmt=elf em=hppa64 ;;
247                             hppa*)      fmt=som em=hppa ;;
248                         esac ;;
249       hppa-*-hpux*)                     fmt=som em=hppa ;;
250       hppa-*-mpeix*)                    fmt=som em=hppa ;;
251       hppa-*-bsd*)                      fmt=som em=hppa ;;
252       hppa-*-hiux*)                     fmt=som em=hppa ;;
254       h8300-*-rtems*)                   fmt=coff ;;
255       h8300-*-coff)                     fmt=coff ;;
256       h8300-*-elf)                      fmt=elf ;;
257       h8500-*-rtems*)                   fmt=coff ;;
258       h8500-*-coff)                     fmt=coff ;;
260       i370-*-elf* | i370-*-linux*)      fmt=elf ;;
261       i386-ibm-aix*)                    fmt=coff em=i386aix ;;
262       i386-sequent-bsd*)                fmt=aout em=dynix ;;
263       i386-*-beospe*)                   fmt=coff em=pe ;;
264       i386-*-beos*)                     fmt=elf ;;
265       i386-*-coff)                      fmt=coff ;;
266       i386-*-elf)                       fmt=elf ;;
267       i386-*-kaos*)                     fmt=elf ;;
268       i386-*-bsd*)                      fmt=aout em=386bsd ;;
269       i386-*-netbsd0.8)                 fmt=aout em=386bsd ;;
270       i386-*-netbsdpe*)                 fmt=coff em=pe ;;
271       i386-*-netbsd*-gnu* | \
272       i386-*-knetbsd*-gnu | \
273       i386-*-netbsdelf*)                fmt=elf em=nbsd ;;
274       i386-*-*n*bsd*)   case ${cpu} in
275                             x86_64)     fmt=elf em=nbsd ;;
276                             *)          fmt=aout em=nbsd ;;
277                         esac ;;
278       i386-*-linux*aout*)               fmt=aout em=linux ;;
279       i386-*-linux*oldld)               fmt=aout em=linux ;;
280       i386-*-linux*coff*)               fmt=coff em=linux ;;
281       i386-*-linux-gnu*)                fmt=elf em=linux ;;
282       x86_64-*-linux-gnu*)              fmt=elf em=linux ;;
283       i386-*-lynxos*)                   fmt=coff em=lynx ;;
284 changequote(,)dnl
285       i386-*-sysv[45]*)                 fmt=elf ;;
286       i386-*-solaris*)                  fmt=elf ;;
287       i386-*-freebsdaout*)              fmt=aout em=386bsd ;;
288       i386-*-freebsd[12].*)             fmt=aout em=386bsd ;;
289       i386-*-freebsd[12])               fmt=aout em=386bsd ;;
290 changequote([,])dnl
291       i386-*-freebsd* | i386-*-kfreebsd*-gnu)
292                                         fmt=elf em=freebsd ;;
293       i386-*-sysv*)                     fmt=coff ;;
294       i386-*-sco3.2v5*coff)             fmt=coff ;;
295       i386-*-isc*)                      fmt=coff ;;
296       i386-*-sco3.2v5*)                 fmt=elf
297           if test ${this_target} = $target; then
298             AC_DEFINE(SCO_ELF, 1, [Define if defaulting to ELF on SCO 5.])
299           fi ;;
300       i386-*-sco3.2*)                   fmt=coff ;;
301       i386-*-vsta)                      fmt=aout ;;
302       i386-*-msdosdjgpp* \
303       | i386-*-go32* \
304       | i386-go32-rtems*)               fmt=coff em=go32
305             AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?]) ;;
306       i386-*-rtemself*)                 fmt=elf ;;
307       i386-*-rtemscoff*)                fmt=coff ;;
308       i386-*-rtems*)                    fmt=elf ;;
309       i386-*-gnu*)                      fmt=elf ;;
310       i386-*-mach*)                     fmt=aout em=mach ;;
311       i386-*-msdos*)                    fmt=aout ;;
312       i386-*-moss*)                     fmt=elf ;;
313       i386-*-pe)                        fmt=coff em=pe ;;
314       i386-*-cygwin*)                   fmt=coff em=pe ;;
315       i386-*-interix*)                  fmt=coff em=interix ;;
316       i386-*-mingw32*)                  fmt=coff em=pe ;;
317       i386-*-nto-qnx*)                  fmt=elf ;;
318       i386-*-*nt*)                      fmt=coff em=pe ;;
319       i386-*-chaos)                     fmt=elf ;;
321       i860-*-*)                         fmt=elf endian=little
322                 AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress) ;;
323       i960-*-bout)                      fmt=bout ;;
324       i960-*-coff)                      fmt=coff em=ic960 ;;
325       i960-*-rtems*)                    fmt=coff em=ic960 ;;
326       i960-*-nindy*)                    fmt=bout ;;
327       i960-*-vxworks5.0)                fmt=bout ;;
328       i960-*-vxworks5.*)                fmt=coff em=ic960 ;;
329       i960-*-vxworks*)                  fmt=bout ;;
330       i960-*-elf*)                      fmt=elf ;;
332       ia64-*-elf*)                      fmt=elf ;;
333       ia64-*-aix*)                      fmt=elf em=ia64aix ;;
334       ia64-*-linux-gnu*)                fmt=elf em=linux ;;
335       ia64-*-hpux*)                     fmt=elf em=hpux ;;
336       ia64-*-netbsd*)                   fmt=elf em=nbsd ;;
338       ip2k-*-*)                         fmt=elf ;;
340       iq2000-*-elf)                     fmt=elf bfd_gas=yes ;;
342       m32r-*-elf*)                      fmt=elf ;;
343       m32r-*-linux*)                    fmt=elf em=linux;;
345       m68hc11-*-* | m6811-*-*)          fmt=elf ;;
346       m68hc12-*-* | m6812-*-*)          fmt=elf ;;
348       m68k-*-vxworks*)                  fmt=aout em=sun3 ;;
349       m68k-ericsson-ose)                fmt=aout em=sun3 ;;
350       m68k-*-sunos*)                    fmt=aout em=sun3 ;;
351       m68k-motorola-sysv*)              fmt=coff em=delta ;;
352       m68k-bull-sysv3*)                 fmt=coff em=dpx2 ;;
353       m68k-apollo-*)                    fmt=coff em=apollo ;;
354       m68k-*-elf*)                      fmt=elf ;;
355       m68k-*-sysv4*)                    fmt=elf em=svr4 ;;
356       m68k-*-sysv*)                     fmt=coff ;;
357       m68k-*-coff | m68k-*-rtemscoff*)  fmt=coff ;;
358       m68k-*-rtems*)                    fmt=elf ;;
359       m68k-*-hpux*)                     fmt=hp300 em=hp300 ;;
360       m68k-*-linux*aout*)               fmt=aout em=linux ;;
361       m68k-*-linux-gnu*)                fmt=elf em=linux ;;
362       m68k-*-gnu*)                      fmt=elf ;;
363       m68k-*-lynxos*)                   fmt=coff em=lynx ;;
364       m68k-*-netbsdelf*)                fmt=elf em=nbsd ;;
365       m68k-*-netbsd*)                   fmt=aout em=nbsd bfd_gas=yes ;;
366       m68k-*-openbsd*)                  fmt=aout em=nbsd bfd_gas=yes ;;
367       m68k-apple-aux*)                  fmt=coff em=aux ;;
368       m68k-*-psos*)                     fmt=elf em=psos;;
370       m88k-motorola-sysv3*)             fmt=coff em=delt88 ;;
371       m88k-*-coff*)                     fmt=coff ;;
373       mcore-*-elf)                      fmt=elf ;;
374       mcore-*-pe)                       fmt=coff em=pe bfd_gas=yes ;;
376       # don't change em like *-*-bsd does
377       mips-dec-openbsd*)                fmt=elf endian=little ;;
378       mips-dec-bsd*)                    fmt=aout endian=little ;;
379       mips-sony-bsd*)                   fmt=ecoff ;;
380       mips-*-bsd*)
381             AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
382       mips-*-ultrix*)                   fmt=ecoff endian=little ;;
383       mips-*-osf*)                      fmt=ecoff endian=little ;;
384       mips-*-ecoff*)                    fmt=ecoff ;;
385       mips-*-pe*)                       fmt=coff endian=little em=pe ;;
386       mips-*-irix6*)                    fmt=elf em=irix ;;
387       mips-*-irix5*)                    fmt=elf em=irix ;;
388       mips-*-irix*)                     fmt=ecoff em=irix ;;
389       mips-*-lnews*)                    fmt=ecoff em=lnews ;;
390       mips-*-riscos*)                   fmt=ecoff ;;
391       mips*-*-linux*)                   fmt=elf em=tmips ;;
392       mips-*-sysv4*MP* | mips-*-gnu*)   fmt=elf em=tmips ;;
393       mips-*-sysv*)                     fmt=ecoff ;;
394       mips-*-elf* | mips-*-rtems*)      fmt=elf ;;
395       mips-*-netbsd*)                   fmt=elf ;;
396       mips-*-openbsd*)                  fmt=elf ;;
398       mmix-*-*)                         fmt=elf ;;
399       mn10200-*-*)                      fmt=elf ;;
400       mn10300-*-*)                      fmt=elf ;;
401       msp430-*-*)                       fmt=elf ;;
402       openrisc-*-*)                     fmt=elf ;;
403       or32-*-rtems*)                    fmt=coff ;;
404       or32-*-coff)                      fmt=coff ;;
405       or32-*-elf)                       fmt=elf ;;
406       pj*)                              fmt=elf ;;
408       ppc-*-pe | ppc-*-cygwin*)         fmt=coff em=pe ;;
409       ppc-*-winnt*)                     fmt=coff em=pe ;;
410 changequote(,)dnl
411       ppc-*-aix5.[01])                  fmt=coff em=aix5 ;;
412 changequote([,])dnl
413       ppc-*-aix5.*)                     fmt=coff em=aix5
414         AC_DEFINE(AIX_WEAK_SUPPORT, 1,
415                   [Define if using AIX 5.2 value for C_WEAKEXT.])
416       ;;
417       ppc-*-aix*)                       fmt=coff ;;
418       ppc-*-beos*)                      fmt=coff ;;
419       ppc-*-*n*bsd* | ppc-*-elf*)       fmt=elf ;;
420       ppc-*-eabi* | ppc-*-sysv4*)       fmt=elf ;;
421       ppc-*-linux-gnu*)                 fmt=elf em=linux
422             case "$endian" in
423                 big)  ;;
424                 *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
425             esac ;;
426       ppc-*-solaris*)                   fmt=elf
427             if test ${this_target} = $target; then
428                 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
429                           [Define if default target is PowerPC Solaris.])
430             fi
431             if test x${endian} = xbig; then
432                 AC_MSG_ERROR(Solaris must be configured little endian)
433             fi ;;
434       ppc-*-rtems*)                     fmt=elf ;;
435       ppc-*-macos* | ppc-*-mpw*)        fmt=coff em=macos ;;
436       ppc-*-netware*)                   fmt=elf em=ppcnw ;;
437       ppc-**-nto*)                      fmt=elf ;;
438       ppc-*-kaos*)                      fmt=elf ;;
440       s390x-*-linux-gnu*)               fmt=elf em=linux ;;
441       s390-*-linux-gnu*)                fmt=elf em=linux ;;
443       sh*-*-linux*)                     fmt=elf em=linux
444             case ${cpu} in
445                 sh*eb)  endian=big ;;
446                 *)      endian=little ;;
447             esac ;;
448       sh5*-*-netbsd*)                   fmt=elf em=nbsd ;;
449       sh64*-*-netbsd*)                  fmt=elf em=nbsd ;;
450       sh*-*-netbsdelf*)                 fmt=elf em=nbsd ;;
451       sh-*-elf*)                        fmt=elf ;;
452       sh-*-coff*)                       fmt=coff ;;
453       sh-*-nto*)                        fmt=elf ;;
454       sh-*-pe*)                         fmt=coff em=pe bfd_gas=yes endian=little ;;
455       sh-*-rtemself*)                   fmt=elf ;;
456       sh-*-rtems*)                      fmt=coff ;;
457       sh-*-kaos*)                       fmt=elf ;;
458       shle*-*-kaos*)                    fmt=elf ;;
459       sh64-*-elf*)                      fmt=elf ;;
461       ns32k-pc532-mach*)                fmt=aout em=pc532mach ;;
462       ns32k-pc532-ux*)                  fmt=aout em=pc532mach ;;
463       ns32k-pc532-lites*)               fmt=aout em=nbsd532 ;;
464       ns32k-*-*n*bsd*)                  fmt=aout em=nbsd532 ;;
466       sparc-*-rtemsaout*)               fmt=aout ;;
467       sparc-*-rtemself*)                fmt=elf ;;
468       sparc-*-rtems*)                   fmt=elf ;;
469       sparc-*-sunos4*)                  fmt=aout em=sun3 ;;
470       sparc-*-aout | sparc*-*-vxworks*) fmt=aout em=sparcaout ;;
471       sparc-*-coff)                     fmt=coff ;;
472       sparc-*-linux*aout*)              fmt=aout em=linux ;;
473       sparc-*-linux-gnu*)               fmt=elf em=linux ;;
474       sparc-*-lynxos*)                  fmt=coff em=lynx ;;
475       sparc-fujitsu-none)               fmt=aout ;;
476       sparc-*-elf)                      fmt=elf ;;
477       sparc-*-sysv4*)                   fmt=elf ;;
478       sparc-*-solaris*)                 fmt=elf ;;
479       sparc-*-netbsdelf*)               fmt=elf em=nbsd ;;
480       sparc-*-*n*bsd*)  case ${cpu} in
481                             sparc64)    fmt=elf em=nbsd ;;
482                             *)          fmt=aout em=nbsd ;;
483                         esac ;;
484       strongarm-*-coff)                 fmt=coff ;;
485       strongarm-*-elf)                  fmt=elf ;;
486       strongarm-*-kaos*)                fmt=elf ;;
487       xscale-*-coff)                    fmt=coff ;;
488       xscale-*-elf)                     fmt=elf ;;
490       tic30-*-*aout*)                   fmt=aout bfd_gas=yes ;;
491       tic30-*-*coff*)                   fmt=coff bfd_gas=yes ;;
492       tic4x-*-* | c4x-*-*)              fmt=coff bfd_gas=yes ;;
493       tic54x-*-* | c54x*-*-*)           fmt=coff bfd_gas=yes need_libm=yes;;
494       tic80-*-*)                        fmt=coff ;;
496       v850-*-*)                         fmt=elf ;;
497       v850e-*-*)                        fmt=elf ;;
498       v850ea-*-*)                       fmt=elf ;;
500       vax-*-netbsdelf*)                 fmt=elf em=nbsd ;;
501       vax-*-netbsd*)                    fmt=aout em=nbsd ;;
502       vax-*-bsd* | vax-*-ultrix*)       fmt=aout ;;
503       vax-*-linux-gnu*)                 fmt=elf em=linux bfd_gas=yes ;;
504       vax-*-vms)                        fmt=vms ;;
506       w65-*-*)                          fmt=coff ;;
508       xstormy16-*-*)                    fmt=elf ;;
510       xtensa-*-*)                       fmt=elf ;;
512       z8k-*-coff | z8k-*-sim)           fmt=coff ;;
514       *-*-aout | *-*-scout)             fmt=aout ;;
515       *-*-freebsd* | *-*-kfreebsd*-gnu) fmt=elf em=freebsd ;;
516       *-*-nindy*)                       fmt=bout ;;
517       *-*-bsd*)                         fmt=aout em=sun3 ;;
518       *-*-generic)                      fmt=generic ;;
519       *-*-xray | *-*-hms)               fmt=coff ;;
520       *-*-sim)                          fmt=coff ;;
521       *-*-elf | *-*-sysv4* | *-*-solaris*) fmt=elf dev=yes ;;
522       *-*-aros*)                        fmt=elf em=linux bfd_gas=yes ;;
523       *-*-vxworks | *-*-windiss)        fmt=elf ;;
524       *-*-netware)                      fmt=elf ;;
525     esac
527     if test ${this_target} = $target ; then
528       endian_def=
529       if test x${endian} = xbig; then
530         endian_def=1
531       elif test x${endian} = xlittle; then
532         endian_def=0
533       fi
534       if test x${endian_def} != x; then
535         AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
536                            [Define as 1 if big endian.])
537       fi
538     fi
540     case ${cpu_type}-${fmt} in
541         alpha*-* | arm-* | i386-* | ia64*-* | mips-* | ns32k-* \
542                 | pdp11-* | ppc-* | sparc-* | strongarm-* | xscale-* \
543                 | *-elf | *-ecoff | *-som)
544             bfd_gas=yes ;;
545     esac
547 # Other random stuff.
549     case ${cpu_type} in
550       mips)
551         # Set mips_cpu to the name of the default CPU.
552         case ${target_cpu} in
553           mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el)
554             mips_cpu=from-abi
555             ;;
556           mipsisa32 | mipsisa32el)
557             mips_cpu=mips32
558             ;;
559           mipsisa32r2 | mipsisa32r2el)
560             mips_cpu=mips32r2
561             ;;
562           mipsisa64 | mipsisa64el)
563             mips_cpu=mips64
564             ;;
565           mipsisa64r2 | mipsisa64r2el)
566             mips_cpu=mips64r2
567             ;;
568           mipstx39 | mipstx39el)
569             mips_cpu=r3900
570             ;;
571           mips64vr | mips64vrel)
572             mips_cpu=vr4100
573             ;;
574           mipsisa32r2* | mipsisa64r2*)
575 changequote(,)dnl
576             mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'`
577 changequote([,])dnl
578             ;;
579           mips64* | mipsisa64* | mipsisa32*)
580 changequote(,)dnl
581             mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'`
582 changequote([,])dnl
583             ;;
584           *)
585             AC_ERROR($target_cpu isn't a supported MIPS CPU name)
586             ;;
587         esac
588         # See whether it's appropriate to set E_MIPS_ABI_O32 for o32
589         # binaries.  It's a GNU extension that some OSes don't understand.
590         # The value only matters on ELF targets.
591         case ${target} in
592           *-*-irix*)
593             use_e_mips_abi_o32=0
594             ;;
595           *)
596             use_e_mips_abi_o32=1
597             ;;
598         esac
599         # Decide whether to generate 32-bit or 64-bit code by default.
600         # Used to resolve -march=from-abi when an embedded ABI is selected.
601         case ${target} in
602           mips64*-*-* | mipsisa64*-*-*)
603             mips_default_64bit=1
604             ;;
605           *)
606             mips_default_64bit=0
607             ;;
608         esac
609         # Decide which ABI to target by default.
610         case ${target} in
611           mips64*-linux* | mips-sgi-irix6*)
612             mips_default_abi=N32_ABI
613             ;;
614           mips*-linux*)
615             mips_default_abi=O32_ABI
616             ;;
617           *)
618             mips_default_abi=NO_ABI
619             ;;
620         esac
621         AC_DEFINE_UNQUOTED(MIPS_CPU_STRING_DEFAULT, "$mips_cpu",
622                            [Default CPU for MIPS targets. ])
623         AC_DEFINE_UNQUOTED(USE_E_MIPS_ABI_O32, $use_e_mips_abi_o32,
624                            [Allow use of E_MIPS_ABI_O32 on MIPS targets. ])
625         AC_DEFINE_UNQUOTED(MIPS_DEFAULT_64BIT, $mips_default_64bit,
626                            [Generate 64-bit code by default on MIPS targets. ])
627         AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi,
628                            [Choose a default ABI for MIPS targets. ])
629         ;;
630     esac
632     # Do we need the opcodes library?
633     case ${cpu_type} in
634       vax | i386 | tic30)
635         ;;
637       *)
638         need_opcodes=yes
640         case "${enable_shared}" in
641         yes) shared_opcodes=true ;;
642         *opcodes*) shared_opcodes=true ;;
643         *) shared_opcodes=false ;;
644         esac
645         if test "${shared_opcodes}" = "true"; then
646           # A shared libopcodes must be linked against libbfd.
647           need_bfd=yes
648         fi
649         ;;
650     esac
652     # Any other special object files needed ?
653     case ${cpu_type} in
654       fr30 | ip2k | iq2000 | m32r | openrisc)
655         using_cgen=yes
656         ;;
658       frv)
659         using_cgen=yes
660         ;;
661       m68k)
662         case ${extra_objects} in
663         *m68k-parse.o*) ;;
664         *) extra_objects="$extra_objects m68k-parse.o" ;;
665         esac
666         ;;
668       mips)
669         echo ${extra_objects} | grep -s "itbl-parse.o" 
670         if test $? -ne 0 ; then
671           extra_objects="$extra_objects itbl-parse.o"
672         fi
674         echo ${extra_objects} | grep -s "itbl-lex.o" 
675         if test $? -ne 0 ; then
676           extra_objects="$extra_objects itbl-lex.o"
677         fi
679         echo ${extra_objects} | grep -s "itbl-ops.o" 
680         if test $? -ne 0 ; then
681           extra_objects="$extra_objects itbl-ops.o"
682         fi
683         ;;
685       i386 | s390 | sparc)
686         if test $this_target = $target ; then
687           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
688         fi
689         ;;
691       xstormy16)
692         using_cgen=yes
693         ;;
695       xtensa)
696         echo ${extra_objects} | grep -s "xtensa-relax.o"
697         if test $? -ne 0 ; then
698           extra_objects="$extra_objects xtensa-relax.o"
699         fi
700         ;;
702       *)
703         ;;
704     esac
706     if test $using_cgen = yes ; then
707         case "x${extra_objects}" in
708         *cgen.o*) ;;
709         *) extra_objects="$extra_objects cgen.o" ;;
710         esac
711     fi
713 # See if we really can support this configuration with the emulation code.
715     if test $this_target = $target ; then
716       primary_bfd_gas=$bfd_gas
717       obj_format=$fmt
718       te_file=$em
720       if test $bfd_gas = no ; then
721         # Can't support other configurations this way.
722         break
723       fi
724     elif test $bfd_gas = no ; then
725       # Can't support this configuration.
726       break
727     fi
729 # From target name and format, produce a list of supported emulations.
731     case ${generic_target}-${fmt} in
732       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
733       mips*-*-linux*-*) case "$endian" in
734                         big)    emulation="mipsbelf mipslelf mipself" ;;
735                         *)      emulation="mipslelf mipsbelf mipself" ;;
736                         esac ;;
737       mips-*-lnews*-ecoff) ;;
738       mips-*-*-ecoff)   case "$endian" in
739                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
740                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
741                         esac ;;
742       mips-*-*-elf)     case "$endian" in
743                         big)    emulation="mipsbelf mipslelf mipself" ;;
744                         *)      emulation="mipslelf mipsbelf mipself" ;;
745                         esac ;;
746       mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
747       # i386-pc-pe-coff != i386-pc-coff.
748       i386-*-pe-coff)   ;;
749       # Uncommenting the next line will turn on support for i386 AOUT
750       # for the default linux configuration
751       # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
752       #
753       i386-*-aout)      emulation="i386aout" ;;
754       i386-*-coff)      emulation="i386coff" ;;
755       i386-*-elf)       emulation="i386elf" ;;
757       # Always all formats.  The first stated emulation becomes the default.
758       cris-*-*aout*)    emulation="crisaout criself" ;;
759       cris-*-*)         emulation="criself crisaout" ;;
760     esac
762     emulations="$emulations $emulation"
764 done
766 # Turn on all targets if possible
767 if test ${all_targets} = "yes"; then
768   case ${target_cpu_type} in
769   i386)
770     case ${obj_format} in
771     aout)
772       emulations="$emulations i386coff i386elf"
773       ;;
774     coff)
775       emulations="$emulations i386aout i386elf"
776     ;;
777     elf)
778       emulations="$emulations i386aout i386coff"
779       ;;
780     esac
781   ;;
782   esac
785 # Assign floating point type.  Most processors with FP support
786 # IEEE FP.  On those that don't support FP at all, usually IEEE
787 # is emulated.
788 case ${target_cpu} in
789   vax | tahoe ) atof=${target_cpu} ;;
790   pdp11)        atof=vax ;;
791   *)            atof=ieee ;;
792 esac
794 case "${obj_format}" in
795   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
796 esac
798 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
799 cgen_cpu_prefix=""
800 if test $using_cgen = yes ; then
801   case ${target_cpu} in
802     *) cgen_cpu_prefix=${target_cpu} ;;
803   esac
804   AC_SUBST(cgen_cpu_prefix)
805   AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
809 dnl Make sure the desired support files exist.
812 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
813   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
816 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
817   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
820 case ${user_bfd_gas}-${primary_bfd_gas} in
821   yes-yes | no-no)
822     # We didn't override user's choice.
823     ;;
824   no-yes)
825     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
826     ;;
827   no-preferred)
828     primary_bfd_gas=no
829     ;;
830   *-preferred)
831     primary_bfd_gas=yes
832     ;;
833   yes-*)
834     primary_bfd_gas=yes
835     ;;
836   -*)
837     # User specified nothing.
838     ;;
839 esac
841 # Some COFF configurations want these random other flags set.
842 case ${obj_format} in
843   coff)
844     case ${target_cpu_type} in
845       i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
846       m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
847       m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
848     esac
849     ;;
850 esac
852 # Getting this done right is going to be a bitch.  Each configuration specified
853 # with --enable-targets=... should be checked for environment, format, cpu, and
854 # bfd_gas setting.
856 # For each configuration, the necessary object file support code must be linked
857 # in.  This might be only one, it might be up to four.  The necessary emulation
858 # code needs to be provided, too.
860 # And then there's "--enable-targets=all"....
862 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
864 formats="${obj_format}"
865 emfiles=""
866 EMULATIONS=""
867 GAS_UNIQ(emulations)
868 for em in . $emulations ; do
869   case $em in
870     .)  continue ;;
871     mipsbelf | mipslelf | mipself)
872         fmt=elf   file=mipself ;;
873     mipsbecoff | mipslecoff | mipsecoff)
874         fmt=ecoff file=mipsecoff ;;
875     *coff)
876         fmt=coff  file=$em ;;
877     *aout)
878         fmt=aout file=$em ;;
879     *elf)
880         fmt=elf file=$em ;;
881   esac
882   formats="$formats $fmt"
883   emfiles="$emfiles e-$file.o"
884   EMULATIONS="$EMULATIONS &$em,"
885 done
886 GAS_UNIQ(formats)
887 GAS_UNIQ(emfiles)
888 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
889   for fmt in $formats ; do
890     case $fmt in
891       aout)     AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
892       bout)     AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
893       coff)     AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
894       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
895       elf)      AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
896       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
897       hp300)    AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
898       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
899       som)      AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
900       vms)      AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
901     esac
902     extra_objects="$extra_objects obj-$fmt.o"
903   done
904   obj_format=multi
906 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
907   DEFAULT_EMULATION=`set . $emulations ; echo $2`
908   # e-mips* has more than one emulation per file, e-i386* has just one at the
909   # moment.  If only one emulation is specified, then don't define
910   # USE_EMULATIONS or include any of the e-files as they will only be bloat.
911   case "${obj_format}${emfiles}" in
912     multi* | *mips*)
913       extra_objects="$extra_objects $emfiles"
914       AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
915   esac
917 AC_SUBST(extra_objects)
918 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
919 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
920                    [Default emulation.])
922 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
923   yes-*-coff)   need_bfd=yes ;;
924   no-*-coff)    need_bfd=yes
925                 AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
926 esac
928 reject_dev_configs=yes
930 case ${reject_dev_configs}-${dev} in
931   yes-yes) # Oops.
932     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
933     ;;
934 esac
936 AC_SUBST(target_cpu_type)
937 AC_SUBST(obj_format)
938 AC_SUBST(te_file)
939 AC_SUBST(install_tooldir)
940 AC_SUBST(atof)
941 dnl AC_SUBST(emulation)
943 case "${primary_bfd_gas}" in
944   yes)  AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
945         need_bfd=yes ;;
946 esac
948 # do we need the opcodes library?
949 case "${need_opcodes}" in
950 yes)
951   OPCODES_LIB=../opcodes/libopcodes.la
952   ;;
953 esac
955 case "${need_bfd}" in
956 yes)
957   BFDLIB=../bfd/libbfd.la
958   BFDVER_H=../bfd/bfdver.h
959   ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h'
960   ;;
961 esac
963 AC_SUBST(BFDLIB)
964 AC_SUBST(OPCODES_LIB)
966 AC_SUBST(BFDVER_H)
967 AC_SUBST(ALL_OBJ_DEPS)
969 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}", [Target alias.])
970 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}",       [Canonical target.])
971 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}",   [Target CPU.])
972 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}", [Target vendor.])
973 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}",    [Target OS.])
975 AC_PROG_CC
977 AC_PROG_YACC
978 AM_PROG_LEX
980 ALL_LINGUAS="fr tr es"
981 CY_GNU_GETTEXT
983 AM_MAINTAINER_MODE
984 AC_EXEEXT
986 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
988 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
989 # people who are not cross-compiling but are compiling cross-assemblers.
990 AC_MSG_CHECKING(whether compiling a cross-assembler)
991 if test "${host}" = "${target}"; then
992   cross_gas=no
993 else
994   cross_gas=yes
995   AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
997 AC_MSG_RESULT($cross_gas)
999 dnl ansidecl.h will deal with const
1000 dnl AC_CONST
1001 AC_FUNC_ALLOCA
1002 AC_C_INLINE
1004 # VMS doesn't have unlink.
1005 AC_CHECK_FUNCS(unlink remove, break)
1007 # Some systems don't have sbrk().
1008 AC_CHECK_FUNCS(sbrk)
1010 # do we need the math library?
1011 case "${need_libm}" in
1012 yes) 
1013   AC_CHECK_LIBM
1014   AC_SUBST(LIBM)
1015   ;;
1016 esac
1018 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
1019 # enough, but on some of those systems, the assert macro relies on requoting
1020 # working properly!
1021 GAS_WORKING_ASSERT
1023 # On some systems, the system header files may not declare malloc, realloc,
1024 # and free.  There are places where gas needs these functions to have been
1025 # declared -- such as when taking their addresses.
1026 gas_test_headers="
1027 #ifdef HAVE_MEMORY_H
1028 #include <memory.h>
1029 #endif
1030 #ifdef HAVE_STRING_H
1031 #include <string.h>
1032 #else
1033 #ifdef HAVE_STRINGS_H
1034 #include <strings.h>
1035 #endif
1036 #endif
1037 #ifdef HAVE_STDLIB_H
1038 #include <stdlib.h>
1039 #endif
1040 #ifdef HAVE_UNISTD_H
1041 #include <unistd.h>
1042 #endif
1044 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
1045 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
1046 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
1047 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
1048 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
1050 # Does errno.h declare errno, or do we have to add a separate declaration
1051 # for it?
1052 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
1053 #ifdef HAVE_ERRNO_H
1054 #include <errno.h>
1055 #endif
1058 dnl This must come last.
1060 dnl We used to make symlinks to files in the source directory, but now
1061 dnl we just use the right name for .c files, and create .h files in
1062 dnl the build directory which include the right .h file.  Make sure
1063 dnl the old symlinks don't exist, so that a reconfigure in an existing
1064 dnl directory behaves reasonably.
1066 AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in)
1067 AC_CONFIG_COMMANDS([default],
1068 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
1069  echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
1070  echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
1071  echo '#include "te-'"${te_file}"'.h"' > targ-env.h
1072  echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
1073  if test "x$cgen_cpu_prefix" != x ; then
1074    echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
1075  fi
1077  sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
1078 [target_cpu_type=${target_cpu_type}
1079  cgen_cpu_prefix=${cgen_cpu_prefix}
1080  obj_format=${obj_format}
1081  te_file=${te_file}])
1083 AC_OUTPUT