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