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