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