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