configure.in revision 107500
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      arm*b|xscale*b|strongarm*b) cpu_type=arm endian=big ;;
119      arm*|xscale*|strongarm*)    cpu_type=arm endian=little ;;
120      hppa*)		cpu_type=hppa ;;
121changequote(,)dnl
122      i[3456]86)	cpu_type=i386 arch=i386;;
123      x86_64)		cpu_type=i386 arch=x86_64;;
124      ia64)		cpu_type=ia64 ;;
125      m6811|m6812|m68hc12) cpu_type=m68hc11 ;;
126      m680[012346]0)	cpu_type=m68k ;;
127changequote([,])dnl
128      m68008)		cpu_type=m68k ;;
129      m683??)		cpu_type=m68k ;;
130      m5200)		cpu_type=m68k ;;
131      m8*)		cpu_type=m88k ;;
132      mips*el)		cpu_type=mips endian=little ;;
133      mips*)		cpu_type=mips endian=big ;;
134      or32*)		cpu_type=or32 endian=big ;;
135      pjl*)		cpu_type=pj endian=little ;;
136      pj*)		cpu_type=pj endian=big ;;
137      powerpc*le*)	cpu_type=ppc endian=little ;;
138      powerpc*)		cpu_type=ppc endian=big ;;
139      rs6000*)		cpu_type=ppc ;;
140      s390x*)		cpu_type=s390 arch=s390x ;;
141      s390*)		cpu_type=s390 arch=s390 ;;
142      sh5*)		cpu_type=sh64 endian=big ;;
143      sh5le*)		cpu_type=sh64 endian=little ;;
144      sh64*)            cpu_type=sh64 endian=big ;;
145      sh64le*)		cpu_type=sh64 endian=little ;;
146      sh*le)		cpu_type=sh endian=little ;;
147      sh*)		cpu_type=sh endian=big ;;
148      sparclite*)	cpu_type=sparc arch=sparclite ;;
149      sparclet*)	cpu_type=sparc arch=sparclet ;;
150      sparc64*)		cpu_type=sparc arch=v9-64 ;;
151      sparc86x*)	cpu_type=sparc arch=sparc86x  ;;
152      sparc*)		cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
153      v850*)		cpu_type=v850 ;;
154      *)		cpu_type=${cpu} ;;
155    esac
156
157    if test ${this_target} = $target ; then
158      target_cpu_type=${cpu_type}
159    elif test ${target_cpu_type} != ${cpu_type} ; then
160      continue
161    fi
162
163    generic_target=${cpu_type}-$vendor-$os
164    dev=no
165    bfd_gas=no
166    em=generic
167
168    # assign object format
169    case ${generic_target} in
170      a29k-*-coff)          fmt=coff ;;
171      a29k-amd-udi)         fmt=coff ;;
172      a29k-amd-ebmon)       fmt=coff ;;
173      a29k-nyu-sym1)        fmt=coff ;;
174      a29k-*-rtems*)        fmt=coff ;;
175      a29k-*-vxworks*)      fmt=coff ;;
176
177      alpha*-*-*vms*)	    fmt=evax ;;
178      alpha*-*-netware*)    fmt=ecoff ;;
179      alpha*-*-osf*)        fmt=ecoff ;;
180      alpha*-*-linuxecoff*) fmt=ecoff ;;
181      alpha*-*-linux-gnu*)  fmt=elf em=linux ;;
182      alpha*-*-netbsd*)     fmt=elf em=nbsd ;;
183      alpha*-*-openbsd*)    fmt=elf em=obsd ;;
184
185      arc-*-elf*)           fmt=elf bfd_gas=yes ;;
186
187      arm-*-aout)	                fmt=aout ;;
188      arm-*-coff | thumb-*-coff)        fmt=coff ;;
189      arm-*-rtems | thumb-*-rtems)      fmt=elf ;;
190      arm-*-elf | thumb-*-elf)          fmt=elf ;;
191      arm*-*-conix*)			fmt=elf ;;
192      arm-*-linux*aout*)	        fmt=aout em=linux ;;
193      arm*-*-linux-gnu* | arm*-*-uclinux*)	
194					fmt=elf  em=linux ;;
195      arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
196      arm-*-netbsd* | arm-*-openbsd*)   fmt=aout em=nbsd ;;
197      arm-*-oabi | thumb-*-oabi)        fmt=elf ;;
198      arm-epoc-pe | thumb-epoc-pe)      fmt=coff em=epoc-pe ;;
199      arm-*-wince)			fmt=coff em=wince-pe ;;
200      arm-*-pe | thumb-*-pe)            fmt=coff em=pe ;;
201      arm-*-riscix*)	                fmt=aout em=riscix ;;
202      arm-*-vxworks)	                fmt=coff ;;
203
204      avr-*-*)		    fmt=elf bfd_gas=yes ;;
205
206      cris-*-*)		    fmt=multi bfd_gas=yes ;;
207
208      d10v-*-*)		    fmt=elf bfd_gas=yes ;;
209      d30v-*-*)		    fmt=elf bfd_gas=yes ;;
210      dlx-*-*)		    fmt=elf ;;
211
212
213      fr30-*-*)		    fmt=elf bfd_gas=yes ;;
214      frv-*-*)		    fmt=elf bfd_gas=yes ;;
215
216      hppa-*-linux-gnu*)    case ${cpu} in
217				hppa*64*)
218					fmt=elf em=hppalinux64;;
219				hppa*)
220					fmt=elf em=linux;;
221			    esac ;;
222      hppa-*-*elf*)         fmt=elf em=hppa ;;
223      hppa-*-lites*)        fmt=elf em=hppa ;;
224      hppa-*-netbsd*)       fmt=elf em=nbsd ;;
225      hppa-*-openbsd*)      fmt=elf em=hppa ;;
226      hppa-*-osf*)          fmt=som em=hppa ;;
227      hppa-*-rtems*)        fmt=elf em=hppa ;;
228      hppa-*-hpux11*)	    case ${cpu} in
229				hppa*64*)
230					fmt=elf em=hppa64 ;;
231				hppa*)
232					fmt=som em=hppa ;;
233			    esac ;;
234      hppa-*-hpux*)         fmt=som em=hppa ;;
235      hppa-*-mpeix*)        fmt=som em=hppa ;;
236      hppa-*-bsd*)          fmt=som em=hppa ;;
237      hppa-*-hiux*)         fmt=som em=hppa ;;
238
239      h8300-*-rtems*)       fmt=coff ;;
240      h8300-*-coff)         fmt=coff ;;
241      h8300-*-elf)          fmt=elf ;;
242      h8500-*-rtems*)       fmt=coff ;;
243      h8500-*-coff)         fmt=coff ;;
244
245      i370-*-elf* | i370-*-linux*) fmt=elf ;;
246      i386-ibm-aix*)        fmt=coff em=i386aix ;;
247      i386-sequent-bsd*)    fmt=aout em=dynix bfd_gas=yes ;;
248      i386-*-beospe*)       fmt=coff em=pe bfd_gas=yes ;;
249      i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;;
250      i386-*-bsd*)          fmt=aout em=386bsd ;;
251      i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
252      i386-*-netbsdpe*)       fmt=coff em=pe bfd_gas=yes ;;
253      i386-*-netbsd*)       em=nbsd bfd_gas=yes
254			    case ${cpu} in
255			      x86_64)	fmt=elf ;;
256			      *)	case ${os} in
257					  *elf*) fmt=elf ;;
258					  *)     fmt=aout ;;
259					esac
260					;;
261			    esac
262			    ;;
263      i386-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes;;
264      i386-*-linux*aout* | i386-*-linux*oldld)   fmt=aout em=linux ;;
265      i386-*-linux*coff*)   fmt=coff em=linux ;;
266      i386-*-linux-gnu*)    fmt=elf em=linux bfd_gas=yes ;;
267      x86_64-*-linux-gnu*)  fmt=elf em=linux bfd_gas=yes ;;
268      i386-*-lynxos*)       fmt=coff em=lynx ;;
269changequote(,)dnl
270      i386-*-sysv[45]* | i386-*-solaris* | i386-*-elf)
271			    fmt=elf bfd_gas=yes ;;
272      i386-*-freebsdaout* | i386-*-freebsd[12].* | i386-*-freebsd[12])
273                            fmt=aout em=386bsd ;;
274changequote([,])dnl
275      i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
276                          fmt=coff ;;
277      i386-*-sco3.2v5*)      fmt=elf
278			    if test ${this_target} = $target; then
279				AC_DEFINE(SCO_ELF, 1,
280				    [Define if defaulting to ELF on SCO 5.])
281			    fi
282			    ;;
283      i386-*-sco3.2*)       fmt=coff ;;
284      i386-*-vsta)          fmt=aout ;;
285      i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
286			    fmt=coff em=go32 bfd_gas=yes
287			    AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
288			    ;;
289      i386-*-rtemself*)     fmt=elf ;;
290      i386-*-rtemscoff*)    fmt=coff ;;
291      i386-*-rtems*)        fmt=elf ;;
292      i386-*-gnu*)          fmt=elf ;;
293      i386-*-mach*)
294			    fmt=aout em=mach bfd_gas=yes ;;
295      i386-*-msdos*)        fmt=aout ;;
296      i386-*-moss*)	    fmt=elf ;;
297      i386-*-pe)            fmt=coff em=pe bfd_gas=yes ;;
298      i386-*-cygwin*)       fmt=coff em=pe bfd_gas=yes ;;
299      i386-*-interix*)	    fmt=coff em=interix bfd_gas=yes ;;
300      i386-*-mingw32*)      fmt=coff em=pe bfd_gas=yes ;;
301      i386-*-nto-qnx*)	    fmt=elf ;;
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 ;;
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 ;;
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      sh5*-*-netbsd*)       fmt=elf em=nbsd ;;
426      sh64*-*-netbsd*)      fmt=elf em=nbsd ;;
427      sh*-*-netbsdelf*)     fmt=elf em=nbsd ;;
428      sh-*-elf*)	    fmt=elf ;;
429      sh-*-coff*)           fmt=coff ;;
430      sh-*-pe*)             fmt=coff em=pe bfd_gas=yes endian=little ;;
431      sh-*-rtemself*)       fmt=elf ;;
432      sh-*-rtems*)	    fmt=coff ;;
433
434      sh64-*-elf*)	    fmt=elf ;;
435      ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
436      ns32k-*-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;
437      ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
438
439      sparc-*-rtemsaout*)   fmt=aout ;;
440      sparc-*-rtemself*)    fmt=elf ;;
441      sparc-*-rtems*)       fmt=elf ;;
442      sparc-*-sunos4*)      fmt=aout em=sun3 ;;
443      sparc-*-aout | sparc*-*-vxworks*)
444			    fmt=aout em=sparcaout ;;
445      sparc-*-coff)         fmt=coff ;;
446      sparc-*-linux*aout*)  fmt=aout em=linux ;;
447      sparc-*-linux-gnu*)   fmt=elf em=linux ;;
448      sparc-*-lynxos*)      fmt=coff em=lynx ;;
449      sparc-fujitsu-none)   fmt=aout ;;
450      sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
451			    fmt=elf ;;
452      sparc-*-netbsd*)      em=nbsd bfd_gas=yes
453                            case ${cpu} in
454                                sparc) case ${os} in
455                                           *elf*) fmt=elf ;;
456                                           *)     fmt=aout ;;
457                                       esac ;;
458                                sparc64) fmt=elf ;;
459                            esac
460                            ;;
461      sparc-*-openbsd*)     em=nbsd
462                            case ${cpu} in
463                               sparc) fmt=aout ;;
464                               sparc64) fmt=elf ;;
465                            esac
466                            ;;
467
468      strongarm-*-coff)     fmt=coff ;;
469      strongarm-*-elf)      fmt=elf ;;
470      xscale-*-coff)     fmt=coff ;;
471      xscale-*-elf)      fmt=elf ;;
472
473      tic30-*-*aout*)	    fmt=aout bfd_gas=yes ;;
474      tic30-*-*coff*)       fmt=coff bfd_gas=yes ;;
475      tic54x-*-* | c54x*-*-*)
476			    fmt=coff bfd_gas=yes need_libm=yes;;
477      tic80-*-*)	    fmt=coff ;;
478
479      v850-*-*)		    fmt=elf bfd_gas=yes ;;
480      v850e-*-*)	    fmt=elf bfd_gas=yes ;;
481      v850ea-*-*)	    fmt=elf bfd_gas=yes ;;
482
483      vax-*-netbsdelf*)     fmt=elf em=nbsd bfd_gas=yes ;;
484      vax-*-netbsdaout* | vax-*-netbsd*)
485			    fmt=aout em=nbsd ;;
486      vax-*-bsd* | vax-*-ultrix*)
487			    fmt=aout ;;
488      vax-*-vms)            fmt=vms ;;
489
490      w65-*-*)              fmt=coff ;;
491
492      xstormy16-*-*)	    fmt=elf bfd_gas=yes ;;
493
494      z8k-*-coff | z8k-*-sim)
495			    fmt=coff ;;
496
497      *-*-aout | *-*-scout)
498			    fmt=aout ;;
499      *-*-freebsd*)	    fmt=elf em=freebsd bfd_gas=yes ;;
500      *-*-nindy*)
501			    fmt=bout ;;
502      *-*-bsd*)
503			    fmt=aout em=sun3 ;;
504      *-*-generic)          fmt=generic ;;
505      *-*-xray | *-*-hms)   fmt=coff ;;
506      *-*-sim)              fmt=coff ;;
507      *-*-elf | *-*-sysv4* | *-*-solaris*)
508			    AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
509			    fmt=elf dev=yes ;;
510      *-*-vxworks)          fmt=aout ;;
511      *-*-netware)          fmt=elf ;;
512    esac
513
514    if test ${this_target} = $target ; then
515      endian_def=
516      if test x${endian} = xbig; then
517	endian_def=1
518      elif test x${endian} = xlittle; then
519	endian_def=0
520      fi
521      if test x${endian_def} != x; then
522	AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
523			   [Define as 1 if big endian.])
524      fi
525    fi
526
527    case ${cpu_type}-${fmt} in
528      alpha*-*)	bfd_gas=yes ;;
529      arm-*)	bfd_gas=yes ;;
530    # not yet
531    # i386-aout)	bfd_gas=preferred ;;
532      ia64*-*)	bfd_gas=yes ;;
533      mips-*)	bfd_gas=yes ;;
534      ns32k-*)	bfd_gas=yes ;;
535      pdp11-*)	bfd_gas=yes ;;
536      ppc-*)	bfd_gas=yes ;;
537      sparc-*)	bfd_gas=yes ;;
538      strongarm-*)	bfd_gas=yes ;;
539      xscale-*)	bfd_gas=yes ;;
540      *-elf)	bfd_gas=yes ;;
541      *-ecoff)	bfd_gas=yes ;;
542      *-som)	bfd_gas=yes ;;
543    #enable bfd for coff and aout to allow testing if a bfd target is
544    #the primary target, but not for coff or aout as the primary target
545      i386-coff)	if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
546      i386-aout)	if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
547      *)		;;
548    esac
549
550# Other random stuff.
551
552    # Do we need the opcodes library?
553    case ${cpu_type} in
554      vax | i386 | tic30)
555	;;
556
557      *)
558	need_opcodes=yes
559
560	case "${enable_shared}" in
561	yes) shared_opcodes=true ;;
562	*opcodes*) shared_opcodes=true ;;
563	*) shared_opcodes=false ;;
564	esac
565	if test "${shared_opcodes}" = "true"; then
566	  # A shared libopcodes must be linked against libbfd.
567	  need_bfd=yes
568	fi
569	;;
570    esac
571
572    # Any other special object files needed ?
573    case ${cpu_type} in
574      fr30 | m32r | openrisc)
575	using_cgen=yes
576	;;
577
578      frv)
579	using_cgen=yes
580	;;
581      m68k)
582	case ${extra_objects} in
583	*m68k-parse.o*) ;;
584	*) extra_objects="$extra_objects m68k-parse.o" ;;
585	esac
586	;;
587
588      mips)
589	echo ${extra_objects} | grep -s "itbl-parse.o" 
590	if test $? -ne 0 ; then
591	  extra_objects="$extra_objects itbl-parse.o"
592	fi
593
594	echo ${extra_objects} | grep -s "itbl-lex.o" 
595	if test $? -ne 0 ; then
596	  extra_objects="$extra_objects itbl-lex.o"
597	fi
598
599	echo ${extra_objects} | grep -s "itbl-ops.o" 
600	if test $? -ne 0 ; then
601	  extra_objects="$extra_objects itbl-ops.o"
602	fi
603	;;
604
605      i386 | s390 | sparc)
606	if test $this_target = $target ; then
607	  AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
608	fi
609	;;
610
611      xstormy16)
612	using_cgen=yes
613	;;
614
615      *)
616	;;
617    esac
618
619    if test $using_cgen = yes ; then
620	case "x${extra_objects}" in
621	*cgen.o*) ;;
622	*) extra_objects="$extra_objects cgen.o" ;;
623	esac
624    fi
625
626# See if we really can support this configuration with the emulation code.
627
628    if test $this_target = $target ; then
629      primary_bfd_gas=$bfd_gas
630      obj_format=$fmt
631      te_file=$em
632
633      if test $bfd_gas = no ; then
634	# Can't support other configurations this way.
635	break
636      fi
637    elif test $bfd_gas = no ; then
638      # Can't support this configuration.
639      break
640    fi
641
642# From target name and format, produce a list of supported emulations.
643
644    case ${generic_target}-${fmt} in
645      mips-*-irix5*-*)	emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
646      mips*-*-linux*-*) case "$endian" in
647			big)	emulation="mipsbelf mipslelf mipself" ;;
648			*)	emulation="mipslelf mipsbelf mipself" ;;
649			esac ;;
650      mips-*-lnews*-ecoff) ;;
651      mips-*-*-ecoff)	case "$endian" in
652			big)	emulation="mipsbecoff mipslecoff mipsecoff" ;;
653			*)	emulation="mipslecoff mipsbecoff mipsecoff" ;;
654			esac ;;
655      mips-*-*-elf)	case "$endian" in
656			big)	emulation="mipsbelf mipslelf mipself" ;;
657			*)	emulation="mipslelf mipsbelf mipself" ;;
658			esac ;;
659      mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
660      # i386-pc-pe-coff != i386-pc-coff.
661      i386-*-pe-coff)	;;
662      # Uncommenting the next line will turn on support for i386 AOUT
663      # for the default linux configuration
664      # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
665      #
666      i386-*-aout)	emulation="i386aout" ;;
667      i386-*-coff)	emulation="i386coff" ;;
668      i386-*-elf)	emulation="i386elf" ;;
669
670      # Always all formats.  The first stated emulation becomes the default.
671      cris-*-*aout*)	emulation="crisaout criself" ;;
672      cris-*-*)		emulation="criself crisaout" ;;
673    esac
674
675    emulations="$emulations $emulation"
676
677done
678
679# Turn on all targets if possible
680if test ${all_targets} = "yes"; then
681  case ${target_cpu_type} in
682  i386)
683    case ${obj_format} in
684    aout)
685      emulations="$emulations i386coff i386elf"
686      ;;
687    coff)
688      emulations="$emulations i386aout i386elf"
689    ;;
690    elf)
691      emulations="$emulations i386aout i386coff"
692      ;;
693    esac
694  ;;
695  esac
696fi
697
698# Assign floating point type.  Most processors with FP support
699# IEEE FP.  On those that don't support FP at all, usually IEEE
700# is emulated.
701case ${target_cpu} in
702  vax | tahoe )	atof=${target_cpu} ;;
703  pdp11)	atof=vax ;;
704  *)		atof=ieee ;;
705esac
706
707case "${obj_format}" in
708  "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
709esac
710
711# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
712cgen_cpu_prefix=""
713if test $using_cgen = yes ; then
714  case ${target_cpu} in
715    *) cgen_cpu_prefix=${target_cpu} ;;
716  esac
717  AC_SUBST(cgen_cpu_prefix)
718  AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
719fi
720
721dnl
722dnl Make sure the desired support files exist.
723dnl
724
725if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
726  AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
727fi
728
729if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
730  AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
731fi
732
733case ${user_bfd_gas}-${primary_bfd_gas} in
734  yes-yes | no-no)
735    # We didn't override user's choice.
736    ;;
737  no-yes)
738    AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
739    ;;
740  no-preferred)
741    primary_bfd_gas=no
742    ;;
743  *-preferred)
744    primary_bfd_gas=yes
745    ;;
746  yes-*)
747    primary_bfd_gas=yes
748    ;;
749  -*)
750    # User specified nothing.
751    ;;
752esac
753
754# Some COFF configurations want these random other flags set.
755case ${obj_format} in
756  coff)
757    case ${target_cpu_type} in
758      i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
759      m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
760      m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
761    esac
762    ;;
763esac
764
765# Getting this done right is going to be a bitch.  Each configuration specified
766# with --enable-targets=... should be checked for environment, format, cpu, and
767# bfd_gas setting.
768#
769# For each configuration, the necessary object file support code must be linked
770# in.  This might be only one, it might be up to four.  The necessary emulation
771# code needs to be provided, too.
772#
773# And then there's "--enable-targets=all"....
774#
775# For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
776
777formats="${obj_format}"
778emfiles=""
779EMULATIONS=""
780GAS_UNIQ(emulations)
781for em in . $emulations ; do
782  case $em in
783    .)	continue ;;
784    mipsbelf | mipslelf | mipself)
785	fmt=elf   file=mipself ;;
786    mipsbecoff | mipslecoff | mipsecoff)
787	fmt=ecoff file=mipsecoff ;;
788    *coff)
789	fmt=coff  file=$em ;;
790    *aout)
791	fmt=aout file=$em ;;
792    *elf)
793	fmt=elf file=$em ;;
794  esac
795  formats="$formats $fmt"
796  emfiles="$emfiles e-$file.o"
797  EMULATIONS="$EMULATIONS &$em,"
798done
799GAS_UNIQ(formats)
800GAS_UNIQ(emfiles)
801if test `set . $formats ; shift ; echo $#` -gt 1 ; then
802  for fmt in $formats ; do
803    case $fmt in
804      aout)	AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
805      bout)	AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
806      coff)	AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
807      ecoff)	AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
808      elf)	AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
809      generic)	AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
810      hp300)	AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
811      ieee)	AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
812      som)	AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
813      vms)	AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
814    esac
815    extra_objects="$extra_objects obj-$fmt.o"
816  done
817  obj_format=multi
818fi
819if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
820  DEFAULT_EMULATION=`set . $emulations ; echo $2`
821  # e-mips* has more than one emulation per file, e-i386* has just one at the
822  # moment.  If only one emulation is specified, then don't define
823  # USE_EMULATIONS or include any of the e-files as they will only be bloat.
824  case "${obj_format}${emfiles}" in
825    multi* | *mips*)
826      extra_objects="$extra_objects $emfiles"
827      AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
828  esac
829fi
830AC_SUBST(extra_objects)
831AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
832AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
833		   [Default emulation.])
834
835case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
836  yes-*-coff)	need_bfd=yes ;;
837  no-*-coff)	need_bfd=yes
838		AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
839esac
840
841reject_dev_configs=yes
842
843case ${reject_dev_configs}-${dev} in
844  yes-yes) # Oops.
845    AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
846    ;;
847esac
848
849AC_SUBST(target_cpu_type)
850AC_SUBST(obj_format)
851AC_SUBST(te_file)
852AC_SUBST(install_tooldir)
853AC_SUBST(atof)
854dnl AC_SUBST(emulation)
855
856case "${primary_bfd_gas}" in
857  yes)	AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
858	need_bfd=yes ;;
859esac
860
861# do we need the opcodes library?
862case "${need_opcodes}" in
863yes)
864  OPCODES_LIB=../opcodes/libopcodes.la
865  ;;
866esac
867
868case "${need_bfd}" in
869yes)
870  BFDLIB=../bfd/libbfd.la
871  ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h'
872  ;;
873esac
874
875AC_SUBST(BFDLIB)
876AC_SUBST(OPCODES_LIB)
877
878AC_SUBST(ALL_OBJ_DEPS)
879
880AC_DEFINE_UNQUOTED(TARGET_ALIAS,	"${target_alias}", [Target alias.])
881AC_DEFINE_UNQUOTED(TARGET_CANONICAL,	"${target}",       [Canonical target.])
882AC_DEFINE_UNQUOTED(TARGET_CPU,		"${target_cpu}",   [Target CPU.])
883AC_DEFINE_UNQUOTED(TARGET_VENDOR,	"${target_vendor}", [Target vendor.])
884AC_DEFINE_UNQUOTED(TARGET_OS,		"${target_os}",    [Target OS.])
885
886AC_PROG_CC
887
888AC_PROG_YACC
889AM_PROG_LEX
890
891ALL_LINGUAS="fr tr es"
892CY_GNU_GETTEXT
893
894AM_MAINTAINER_MODE
895AC_EXEEXT
896
897AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
898
899# Put this here so that autoconf's "cross-compiling" message doesn't confuse
900# people who are not cross-compiling but are compiling cross-assemblers.
901AC_MSG_CHECKING(whether compiling a cross-assembler)
902if test "${host}" = "${target}"; then
903  cross_gas=no
904else
905  cross_gas=yes
906  AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
907fi
908AC_MSG_RESULT($cross_gas)
909
910dnl ansidecl.h will deal with const
911dnl AC_CONST
912AC_FUNC_ALLOCA
913AC_C_INLINE
914
915# VMS doesn't have unlink.
916AC_CHECK_FUNCS(unlink remove, break)
917
918# Some systems don't have sbrk().
919AC_CHECK_FUNCS(sbrk)
920
921# do we need the math library?
922case "${need_libm}" in
923yes) 
924  AC_CHECK_LIBM
925  AC_SUBST(LIBM)
926  ;;
927esac
928
929# Some non-ANSI preprocessors botch requoting inside strings.  That's bad
930# enough, but on some of those systems, the assert macro relies on requoting
931# working properly!
932GAS_WORKING_ASSERT
933
934# On some systems, the system header files may not declare malloc, realloc,
935# and free.  There are places where gas needs these functions to have been
936# declared -- such as when taking their addresses.
937gas_test_headers="
938#ifdef HAVE_MEMORY_H
939#include <memory.h>
940#endif
941#ifdef HAVE_STRING_H
942#include <string.h>
943#else
944#ifdef HAVE_STRINGS_H
945#include <strings.h>
946#endif
947#endif
948#ifdef HAVE_STDLIB_H
949#include <stdlib.h>
950#endif
951#ifdef HAVE_UNISTD_H
952#include <unistd.h>
953#endif
954"
955GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
956GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
957GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
958GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
959GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
960
961# Does errno.h declare errno, or do we have to add a separate declaration
962# for it?
963GAS_CHECK_DECL_NEEDED(errno, f, int f, [
964#ifdef HAVE_ERRNO_H
965#include <errno.h>
966#endif
967])
968
969dnl This must come last.
970
971dnl We used to make symlinks to files in the source directory, but now
972dnl we just use the right name for .c files, and create .h files in
973dnl the build directory which include the right .h file.  Make sure
974dnl the old symlinks don't exist, so that a reconfigure in an existing
975dnl directory behaves reasonably.
976
977AC_OUTPUT(Makefile doc/Makefile ${GDBINIT}:gdbinit.in po/Makefile.in:po/Make-in,
978[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
979 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
980 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
981 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
982 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
983 if test "x$cgen_cpu_prefix" != x ; then
984   echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
985 fi
986
987 sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
988[target_cpu_type=${target_cpu_type}
989 cgen_cpu_prefix=${cgen_cpu_prefix}
990 obj_format=${obj_format}
991 te_file=${te_file}])
992