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