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