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