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