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