* disassemble.c (disassembler_usage): Don't use a prototype. Mark
[binutils.git] / gas / configure.in
blob8ee42a6deb80a508310d401873d3d9a5e8f09bbe
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.9.5)
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 # Generate a header file
44 AM_CONFIG_HEADER(config.h:config.in)
46 # If we are on a DOS filesystem, we must use gdb.ini rather than
47 # .gdbinit.
48 GDBINIT=".gdbinit"
49 case "${host}" in
50   *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*)
51     GDBINIT="gdb.ini"
52     ;;
53 esac
54 AC_SUBST(GDBINIT)
56 te_file=generic
58 # Makefile target for installing gas in $(tooldir)/bin.
59 install_tooldir=install-exec-tooldir
61 canon_targets=""
62 all_targets=no
63 if test -n "$enable_targets" ; then
64   for t in `echo $enable_targets | sed 's/,/ /g'`; do
65     if test $t = "all"; then
66       all_targets=yes
67       continue
68     fi
69     result=`$ac_config_sub $t 2>/dev/null`
70     if test -n "$result" ; then
71       canon_targets="$canon_targets $result"
72 #    else
73 #      # Permit "all", etc.  We don't support it yet though.
74 #      canon_targets="$canon_targets $t"
75     fi
76   done
77   GAS_UNIQ(canon_targets)
80 emulations=""
82 for this_target in $target $canon_targets ; do
84 changequote(,)dnl
85     eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
86 changequote([,])dnl
88     # check for architecture variants
89     arch=
90     endian=
91     case ${cpu} in
92       alpha*)           cpu_type=alpha ;;
93       armeb)            cpu_type=arm endian=big ;;
94       arm*)             cpu_type=arm endian=little ;;
95       armb*)            cpu_type=arm endian=little ;;
96       armv*l)           cpu_type=arm endian=little ;;
97       armv*b)           cpu_type=arm endian=big ;;
98       strongarm*)       cpu_type=arm endian=little ;;
99       thumb*)           cpu_type=arm endian=little ;;
100       hppa*)            cpu_type=hppa ;;
101 changequote(,)dnl
102       i[456]86)         cpu_type=i386 ;;
103       m680[012346]0)    cpu_type=m68k ;;
104 changequote([,])dnl
105       m68008)           cpu_type=m68k ;;
106       m683??)           cpu_type=m68k ;;
107       m5200)            cpu_type=m68k ;;
108       m8*)              cpu_type=m88k ;;
109       mips*el)          cpu_type=mips endian=little ;;
110       mips*)            cpu_type=mips endian=big ;;
111       pjl*)             cpu_type=pj endian=little ;;
112       pj*)              cpu_type=pj endian=big ;;
113       powerpcle*)       cpu_type=ppc endian=little ;;
114       powerpc*)         cpu_type=ppc endian=big ;;
115       rs6000*)          cpu_type=ppc ;;
116       sparclite*)       cpu_type=sparc arch=sparclite ;;
117       sparclet*)        cpu_type=sparc arch=sparclet ;;
118       sparc64*)         cpu_type=sparc arch=v9-64 ;;
119       sparc86x*)        cpu_type=sparc arch=sparc86x  ;;
120       sparc*)           cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
121       v850*)            cpu_type=v850 ;;
122       *)                cpu_type=${cpu} ;;
123     esac
125     if test ${this_target} = $target ; then
126       target_cpu_type=${cpu_type}
127     elif test ${target_cpu_type} != ${cpu_type} ; then
128       continue
129     fi
131     generic_target=${cpu_type}-$vendor-$os
132     dev=no
133     bfd_gas=no
134     em=generic
136     # assign object format
137     case ${generic_target} in
138       a29k-*-coff)          fmt=coff ;;
139       a29k-amd-udi)         fmt=coff ;;
140       a29k-amd-ebmon)       fmt=coff ;;
141       a29k-nyu-sym1)        fmt=coff ;;
142       a29k-*-vxworks*)      fmt=coff ;;
144       alpha*-*-*vms*)       fmt=evax ;;
145       alpha*-*-netware*)    fmt=ecoff ;;
146       alpha*-*-openbsd*)    fmt=ecoff ;;
147       alpha*-*-osf*)        fmt=ecoff ;;
148       alpha*-*-linuxecoff*) fmt=ecoff ;;
149       alpha*-*-linux-gnu*)  fmt=elf em=linux ;;
150       alpha*-*-netbsd*)     fmt=elf em=nbsd ;;
152       arc-*-elf*)           fmt=elf bfd_gas=yes ;;
154       arm-*-aout)                       fmt=aout ;;
155       arm-*-coff | thumb-*-coff)        fmt=coff ;;
156       arm-*-elf | thumb-*-elf)          fmt=elf ;;
157       arm*-*-conix*)                    fmt=elf ;;
158       arm-*-linux*aout*)                fmt=aout em=linux ;;
159       arm*-*-linux-gnu*)                fmt=elf  em=linux ;;
160       arm-*-netbsd*)                    fmt=aout em=nbsd bfd_gas=yes ;;
161       arm-*-oabi | thumb-*-oabi)        fmt=elf ;;
162       arm-epoc-pe | thumb-epoc-pe)      fmt=coff em=epoc-pe ;;
163       arm-*-wince)          fmt=coff em=wince-pe bfd_gas=yes;;
164       arm-*-pe | thumb-*-pe)            fmt=coff em=pe ;;
165       arm-*-riscix*)                    fmt=aout em=riscix ;;
167       avr-*-*)              fmt=elf bfd_gas=yes ;;
169       d10v-*-*)             fmt=elf bfd_gas=yes ;;
170       d30v-*-*)             fmt=elf bfd_gas=yes ;;
173       fr30-*-*)             fmt=elf bfd_gas=yes ;;
175       hppa-*-*elf*)         fmt=elf em=hppa ;;
176       hppa-*-linux-gnu*)    fmt=elf em=hppa ;;
177       hppa-*-lites*)        fmt=elf em=hppa ;;
178       hppa-*-osf*)          fmt=som em=hppa ;;
179       hppa-*-rtems*)        fmt=elf em=hppa ;;
180       hppa-*-hpux*)         fmt=som em=hppa ;;
181       hppa-*-mpeix*)        fmt=som em=hppa ;;
182       hppa-*-bsd*)          fmt=som em=hppa ;;
183       hppa-*-hiux*)         fmt=som em=hppa ;;
185       h8300-*-coff)         fmt=coff ;;
187       i370-*-elf* | i370-*-linux*) fmt=elf ;;
188       i386-ibm-aix*)        fmt=coff em=i386aix ;;
189       i386-sequent-bsd*)    fmt=aout em=dynix bfd_gas=yes ;;
190       i386-*-beospe*)       fmt=coff em=pe bfd_gas=yes ;;
191       i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;;
192       i386-*-bsd*)          fmt=aout em=386bsd ;;
193       i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
194       i386-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes;;
195       i386-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes;;
196       i386-*-linux*aout* | i386-*-linuxoldld)   fmt=aout em=linux ;;
197       i386-*-linux*coff*)   fmt=coff em=linux ;;
198       i386-*-linux-gnu*)    fmt=elf em=linux bfd_gas=yes ;;
199       i386-*-lynxos*)       fmt=coff em=lynx ;;
200       i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
201                             fmt=elf bfd_gas=yes ;;
202       i386-*-freebsdaout* | i386-*-freebsd[12].* | i386-*-freebsd[12])
203                             fmt=aout em=386bsd ;;
204       i386-*-freebsd*)      fmt=elf bfd_gas=yes ;;
205       i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
206                           fmt=coff ;;
207       i386-*-sco3.2v5*)      fmt=elf
208                             if test ${this_target} = $target; then
209                                 AC_DEFINE(SCO_ELF, 1,
210                                     [Define if defaulting to ELF on SCO 5.])
211                             fi
212                             ;;
213       i386-*-sco3.2*)       fmt=coff ;;
214       i386-*-vsta)          fmt=aout ;;
215       i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
216                             fmt=coff em=go32;;
217       i386-*-rtemself*)     fmt=elf ;;
218       i386-*-rtems*)        fmt=coff ;;
219       i386-*-gnu*)          fmt=elf ;;
220       i386-*-mach*)
221                             fmt=aout em=mach bfd_gas=yes ;;
222       i386-*-msdos*)        fmt=aout ;;
223       i386-*-moss*)         fmt=elf ;;
224       i386-*-pe)            fmt=coff em=pe ;;
225       i386-*-cygwin*)       fmt=coff em=pe bfd_gas=yes ;;
226       i386-*-interix*)      fmt=coff em=interix bfd_gas=yes ;;
227       i386-*-mingw32*)      fmt=coff em=pe bfd_gas=yes ;;
228       i386-*-*nt*)          fmt=coff em=pe ;;
229       i386-*-vxworks*)      fmt=aout ;;
230       i960-*-bout)          fmt=bout ;;
231       i960-*-coff)          fmt=coff em=ic960 ;;
232       i960-*-rtems*)        fmt=coff em=ic960 ;;
233       i960-*-nindy*)        fmt=bout ;;
234       i960-*-vxworks4*)     fmt=bout ;;
235       i960-*-vxworks5.0)    fmt=bout ;;
236       i960-*-vxworks5.*)    fmt=coff em=ic960 ;;
237       i960-*-vxworks*)      fmt=bout ;;
238       i960-*-elf*)          fmt=elf ;;
240       m32r-*-*)             fmt=elf bfd_gas=yes ;;
242       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
243                             fmt=aout em=sun3 ;;
244       m68k-motorola-sysv*)  fmt=coff em=delta ;;
245       m68k-bull-sysv3*)     fmt=coff em=dpx2 ;;
246       m68k-apollo-*)        fmt=coff em=apollo ;;
247       m68k-*-sysv4*) # must be before -sysv*
248                             fmt=elf em=svr4 ;;
249       m68k-*-elf*)          fmt=elf ;;
250       m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
251                             fmt=coff ;;
252       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
253       m68k-*-linux*aout*)   fmt=aout em=linux ;;
254       m68k-*-linux-gnu*)    fmt=elf em=linux ;;
255       m68k-*-gnu*)          fmt=elf ;;
256       m68k-*-lynxos*)       fmt=coff em=lynx ;;
257       m68k-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes ;;
258       m68k-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
259       m68k-apple-aux*)      fmt=coff em=aux ;;
260       m68k-*-psos*)         fmt=elf em=psos;;
262       m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
263       m88k-*-coff*)         fmt=coff ;;
265       mcore-*-elf)          fmt=elf bfd_gas=yes ;;
266       mcore-*-pe)           fmt=coff em=pe bfd_gas=yes ;;
268       # don't change em like *-*-bsd does
269       mips-dec-netbsd*)     fmt=elf endian=little ;;
270       mips-dec-openbsd*)    fmt=elf endian=little ;;
271       mips-dec-bsd*)        fmt=aout endian=little ;;
272       mips-sony-bsd*)       fmt=ecoff ;;
273       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
274       mips-*-ultrix*)       fmt=ecoff endian=little ;;
275       mips-*-osf*)          fmt=ecoff endian=little ;;
276       mips-*-ecoff*)        fmt=ecoff ;;
277       mips-*-ecoff*)        fmt=ecoff ;;
278       mips-*-pe*)           fmt=coff endian=little em=pe ;;
279       mips-*-irix6*)        fmt=elf ;;
280       mips-*-irix5*)        fmt=elf ;;
281       mips-*-irix*)         fmt=ecoff ;;
282       mips-*-lnews*)        fmt=ecoff em=lnews ;;
283       mips-*-riscos*)       fmt=ecoff ;;
284       mips-*-sysv*)         fmt=ecoff ;;
285       mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*)
286                             fmt=elf ;;
287       mips-*-vxworks*)      fmt=elf
288                             AC_DEFINE(MIPS_STABS_ELF, 1,
289                                 [Use ELF stabs for MIPS, not ECOFF stabs])
290                             ;;
291       mn10200-*-*)          fmt=elf bfd_gas=yes ;;
292       mn10300-*-*)          fmt=elf bfd_gas=yes ;;
293       pj*)                  fmt=elf ;;
294       ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*)
295                             fmt=coff em=pe ;;
296       ppc-*-aix*)           fmt=coff ;;
297       ppc-*-beos*)          fmt=coff ;;
298       ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
299                             fmt=elf ;;
300       ppc-*-linux-gnu*)     fmt=elf
301                             case "$endian" in
302                             big)  ;;
303                             *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
304                             esac
305                             ;;
306       ppc-*-solaris*)       fmt=elf
307                             if test ${this_target} = $target; then
308                                 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
309                                 [Define if default target is PowerPC Solaris.])
310                             fi
311                             if test x${endian} = xbig; then
312                                 AC_MSG_ERROR(Solaris must be configured little endian)
313                             fi
314                             ;;
315       ppc-*-rtems*)         fmt=elf ;;
316       ppc-*-macos* | ppc-*-mpw*)
317                             fmt=coff em=macos ;;
318       ppc-*-netware*)       fmt=elf em=ppcnw ;;
319       ppc-*-vxworks*)       fmt=elf ;;
321       sh-*-elf*)            fmt=elf ;;
322       sh-*-coff*)           fmt=coff ;;
323       sh-*-pe*)             fmt=coff em=pe bfd_gas=yes;;
324       sh-*-rtemself*)       fmt=elf ;;
325       sh-*-rtems*)          fmt=coff ;;
327       ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
328       ns32k-pc532-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;
329       ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
331       sparc-*-rtems*)       fmt=aout ;;
332       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
333       sparc-*-aout | sparc*-*-vxworks*)
334                             fmt=aout em=sparcaout ;;
335       sparc-*-coff)         fmt=coff ;;
336       sparc-*-linux*aout*)  fmt=aout em=linux ;;
337       sparc-*-linux-gnu*)   fmt=elf em=linux ;;
338       sparc-*-lynxos*)      fmt=coff em=lynx ;;
339       sparc-fujitsu-none)   fmt=aout ;;
340       sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
341                             fmt=elf ;;
342       sparc-*-netbsd*)      fmt=aout em=nbsd ;;
343       sparc-*-openbsd*)     fmt=aout em=nbsd ;;
345       strongarm-*-coff)     fmt=coff ;;
346       strongarm-*-elf)      fmt=elf ;;
348       tic30-*-*aout*)       fmt=aout bfd_gas=yes ;;
349       tic30-*-*coff*)       fmt=coff bfd_gas=yes ;;
350       tic80-*-*)            fmt=coff ;;
352       v850-*-*)             fmt=elf bfd_gas=yes ;;
353       v850e-*-*)            fmt=elf bfd_gas=yes ;;
354       v850ea-*-*)           fmt=elf bfd_gas=yes ;;
356       vax-*-bsd* | vax-*-ultrix*)
357                             fmt=aout ;;
358       vax-*-vms)            fmt=vms ;;
361       z8k-*-coff | z8k-*-sim)
362                             fmt=coff ;;
364       w65-*-*)              fmt=coff ;;
366       *-*-aout | *-*-scout)
367                             fmt=aout ;;
368       *-*-nindy*)
369                             fmt=bout ;;
370       *-*-bsd*)
371                             fmt=aout em=sun3 ;;
372       *-*-generic)          fmt=generic ;;
373       *-*-xray | *-*-hms)   fmt=coff ;;
374       *-*-sim)              fmt=coff ;;
375       *-*-elf | *-*-sysv4* | *-*-solaris*)
376                             AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
377                             fmt=elf dev=yes ;;
378       *-*-vxworks)          fmt=aout ;;
379       *-*-netware)          fmt=elf ;;
380     esac
382     if test ${this_target} = $target ; then
383       endian_def=
384       if test x${endian} = xbig; then
385         endian_def=1
386       elif test x${endian} = xlittle; then
387         endian_def=0
388       fi
389       if test x${endian_def} != x; then
390         AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
391                            [Define as 1 if big endian.])
392       fi
393     fi
395     case ${cpu_type}-${fmt} in
396       alpha*-*) bfd_gas=yes ;;
397       arm-*)    bfd_gas=yes ;;
398     # not yet
399     # i386-aout)        bfd_gas=preferred ;;
400       mips-*)   bfd_gas=yes ;;
401       ns32k-*)  bfd_gas=yes ;;
402       ppc-*)    bfd_gas=yes ;;
403       sparc-*)  bfd_gas=yes ;;
404       strongarm-*)      bfd_gas=yes ;;
405       *-elf)    bfd_gas=yes ;;
406       *-ecoff)  bfd_gas=yes ;;
407       *-som)    bfd_gas=yes ;;
408     #enable bfd for coff and aout to allow testing if a bfd target is
409     #the primary target, but not for coff or aout as the primary target
410       i386-coff)        if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
411       i386-aout)        if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
412       *)                ;;
413     esac
415 # Other random stuff.
417     # Do we need the opcodes library?
418     case ${cpu_type} in
419       vax | i386 | tic30)
420         ;;
422       *)
423         need_opcodes=yes
425         case "${enable_shared}" in
426         yes) shared_opcodes=true ;;
427         *opcodes*) shared_opcodes=true ;;
428         *) shared_opcodes=false ;;
429         esac
430         if test "${shared_opcodes}" = "true"; then
431           # A shared libopcodes must be linked against libbfd.
432           need_bfd=yes
433         fi
434         ;;
435     esac
437     # Any other special object files needed ?
438     case ${cpu_type} in
439       fr30 | m32r)
440         using_cgen=yes
441         ;;
443       m68k)
444         case ${extra_objects} in
445         *m68k-parse.o*) ;;
446         *) extra_objects="$extra_objects m68k-parse.o" ;;
447         esac
448         ;;
450       mips)
451         echo ${extra_objects} | grep -s "itbl-parse.o" 
452         if test $? -ne 0 ; then
453           extra_objects="$extra_objects itbl-parse.o"
454         fi
456         echo ${extra_objects} | grep -s "itbl-lex.o" 
457         if test $? -ne 0 ; then
458           extra_objects="$extra_objects itbl-lex.o"
459         fi
461         echo ${extra_objects} | grep -s "itbl-ops.o" 
462         if test $? -ne 0 ; then
463           extra_objects="$extra_objects itbl-ops.o"
464         fi
465         ;;
467       sparc)
468         if test $this_target = $target ; then
469           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
470         fi
471         ;;
472       *)
473         ;;
474     esac
476     if test $using_cgen = yes ; then
477         case "x${extra_objects}" in
478         *cgen.o*) ;;
479         *) extra_objects="$extra_objects cgen.o" ;;
480         esac
481     fi
483 # See if we really can support this configuration with the emulation code.
485     if test $this_target = $target ; then
486       primary_bfd_gas=$bfd_gas
487       obj_format=$fmt
488       te_file=$em
490       if test $bfd_gas = no ; then
491         # Can't support other configurations this way.
492         break
493       fi
494     elif test $bfd_gas = no ; then
495       # Can't support this configuration.
496       break
497     fi
499 # From target name and format, produce a list of supported emulations.
501     case ${generic_target}-${fmt} in
502       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
503       mips-*-linux-gnu*-*) case "$endian" in
504                         big)    emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
505                         *)      emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
506                         esac ;;
507       mips-*-lnews*-ecoff) ;;
508       mips-*-*-ecoff)   case "$endian" in
509                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
510                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
511                         esac ;;
512       mips-*-*-elf)     case "$endian" in
513                         big)    emulation="mipsbelf mipslelf mipself" ;;
514                         *)      emulation="mipslelf mipsbelf mipself" ;;
515                         esac ;;
516       # Uncommenting the next line will turn on support for i386 AOUT
517       # for the default linux configuration
518       # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
519       #
520       i386-*-aout)      emulation="i386aout" ;;
521       i386-*-coff)      emulation="i386coff" ;;
522       i386-*-elf)       emulation="i386elf" ;;
523     esac
525     emulations="$emulations $emulation"
527 done
529 # Turn on all targets if possible
530 if test ${all_targets} = "yes"; then
531   case ${target_cpu_type} in
532   i386)
533     case ${obj_format} in
534     aout)
535       emulations="$emulations i386coff i386elf"
536       ;;
537     coff)
538       emulations="$emulations i386aout i386elf"
539     ;;
540     elf)
541       emulations="$emulations i386aout i386coff"
542       ;;
543     esac
544   ;;
545   esac
548 # Assign floating point type.  Most processors with FP support
549 # IEEE FP.  On those that don't support FP at all, usually IEEE
550 # is emulated.
551 case ${target_cpu} in
552   vax | tahoe ) atof=${target_cpu} ;;
553   *)            atof=ieee ;;
554 esac
556 case "${obj_format}" in
557   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
558 esac
560 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
561 cgen_cpu_prefix=""
562 if test $using_cgen = yes ; then
563   case ${target_cpu} in
564     *) cgen_cpu_prefix=${target_cpu} ;;
565   esac
566   AC_SUBST(cgen_cpu_prefix)
567   AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
571 dnl Make sure the desired support files exist.
574 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
575   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
578 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
579   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
582 case ${user_bfd_gas}-${primary_bfd_gas} in
583   yes-yes | no-no)
584     # We didn't override user's choice.
585     ;;
586   no-yes)
587     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
588     ;;
589   no-preferred)
590     primary_bfd_gas=no
591     ;;
592   *-preferred)
593     primary_bfd_gas=yes
594     ;;
595   yes-*)
596     primary_bfd_gas=yes
597     ;;
598   -*)
599     # User specified nothing.
600     ;;
601 esac
603 # Some COFF configurations want these random other flags set.
604 case ${obj_format} in
605   coff)
606     case ${target_cpu_type} in
607       i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
608       m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
609       m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
610     esac
611     ;;
612 esac
614 # Getting this done right is going to be a bitch.  Each configuration specified
615 # with --enable-targets=... should be checked for environment, format, cpu, and
616 # bfd_gas setting.
618 # For each configuration, the necessary object file support code must be linked
619 # in.  This might be only one, it might be up to four.  The necessary emulation
620 # code needs to be provided, too.
622 # And then there's "--enable-targets=all"....
624 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
626 formats="${obj_format}"
627 emfiles=""
628 EMULATIONS=""
629 GAS_UNIQ(emulations)
630 for em in . $emulations ; do
631   case $em in
632     .)  continue ;;
633     mipsbelf | mipslelf)
634         fmt=elf   file=mipself ;;
635     mipsbecoff | mipslecoff)
636         fmt=ecoff file=mipsecoff ;;
637     i386aout)
638         fmt=aout  file=i386aout ;;
639     i386coff)
640         fmt=coff  file=i386coff ;;
641     i386elf)
642         fmt=elf   file=i386elf ;;
643   esac
644   formats="$formats $fmt"
645   emfiles="$emfiles e-$file.o"
646   EMULATIONS="$EMULATIONS &$em,"
647 done
648 GAS_UNIQ(formats)
649 GAS_UNIQ(emfiles)
650 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
651   for fmt in $formats ; do
652     case $fmt in
653       aout)     AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
654       bout)     AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
655       coff)     AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
656       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
657       elf)      AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
658       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
659       hp300)    AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
660       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
661       som)      AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
662       vms)      AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
663     esac
664     extra_objects="$extra_objects obj-$fmt.o"
665   done
666   obj_format=multi
668 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
669   DEFAULT_EMULATION=`set . $emulations ; echo $2`
670   # e-mips* has more than one emulation per file, e-i386* has just one at the
671   # moment.  If only one emulation is specified, then don't define
672   # USE_EMULATIONS or include any of the e-files as they will only be bloat.
673   case "${obj_format}${emfiles}" in
674     multi* | *mips*)
675       extra_objects="$extra_objects $emfiles"
676       AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
677   esac
679 AC_SUBST(extra_objects)
680 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
681 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
682                    [Default emulation.])
684 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
685   yes-*-coff)   need_bfd=yes ;;
686   no-*-coff)    need_bfd=yes
687                 AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
688 esac
690 reject_dev_configs=yes
692 case ${reject_dev_configs}-${dev} in
693   yes-yes) # Oops.
694     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
695     ;;
696 esac
698 AC_SUBST(target_cpu_type)
699 AC_SUBST(obj_format)
700 AC_SUBST(te_file)
701 AC_SUBST(install_tooldir)
702 AC_SUBST(atof)
703 dnl AC_SUBST(emulation)
705 case "${primary_bfd_gas}" in
706   yes)  AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
707         need_bfd=yes ;;
708 esac
710 # do we need the opcodes library?
711 case "${need_opcodes}" in
712 yes)
713   OPCODES_LIB=../opcodes/libopcodes.la
714   ;;
715 esac
717 case "${need_bfd}" in
718 yes)
719   BFDLIB=../bfd/libbfd.la
720   ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
721   ;;
722 esac
724 AC_SUBST(BFDLIB)
725 AC_SUBST(OPCODES_LIB)
727 AC_SUBST(ALL_OBJ_DEPS)
729 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}", [Target alias.])
730 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}",       [Canonical target.])
731 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}",   [Target CPU.])
732 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}", [Target vendor.])
733 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}",    [Target OS.])
735 AC_PROG_CC
737 AC_PROG_YACC
738 AM_PROG_LEX
740 ALL_LINGUAS=
741 CY_GNU_GETTEXT
743 AM_MAINTAINER_MODE
744 AC_EXEEXT
746 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
748 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
749 # people who are not cross-compiling but are compiling cross-assemblers.
750 AC_MSG_CHECKING(whether compiling a cross-assembler)
751 if test "${host}" = "${target}"; then
752   cross_gas=no
753 else
754   cross_gas=yes
755   AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
757 AC_MSG_RESULT($cross_gas)
759 dnl ansidecl.h will deal with const
760 dnl AC_CONST
761 AC_FUNC_ALLOCA
762 AC_C_INLINE
764 # VMS doesn't have unlink.
765 AC_CHECK_FUNCS(unlink remove, break)
767 # Some systems don't have sbrk().
768 AC_CHECK_FUNCS(sbrk)
770 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
771 # enough, but on some of those systems, the assert macro relies on requoting
772 # working properly!
773 GAS_WORKING_ASSERT
775 # On some systems, the system header files may not declare malloc, realloc,
776 # and free.  There are places where gas needs these functions to have been
777 # declared -- such as when taking their addresses.
778 gas_test_headers="
779 #ifdef HAVE_MEMORY_H
780 #include <memory.h>
781 #endif
782 #ifdef HAVE_STRING_H
783 #include <string.h>
784 #else
785 #ifdef HAVE_STRINGS_H
786 #include <strings.h>
787 #endif
788 #endif
789 #ifdef HAVE_STDLIB_H
790 #include <stdlib.h>
791 #endif
792 #ifdef HAVE_UNISTD_H
793 #include <unistd.h>
794 #endif
796 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
797 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
798 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
799 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
800 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
802 # Does errno.h declare errno, or do we have to add a separate declaration
803 # for it?
804 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
805 #ifdef HAVE_ERRNO_H
806 #include <errno.h>
807 #endif
810 dnl This must come last.
812 dnl We used to make symlinks to files in the source directory, but now
813 dnl we just use the right name for .c files, and create .h files in
814 dnl the build directory which include the right .h file.  Make sure
815 dnl the old symlinks don't exist, so that a reconfigure in an existing
816 dnl directory behaves reasonably.
818 AC_OUTPUT(Makefile doc/Makefile ${GDBINIT}:gdbinit.in po/Makefile.in:po/Make-in,
819 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
820  echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
821  echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
822  echo '#include "te-'"${te_file}"'.h"' > targ-env.h
823  echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
824  if test "x$cgen_cpu_prefix" != x ; then
825    echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
826  fi
828  sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
829 [target_cpu_type=${target_cpu_type}
830  cgen_cpu_prefix=${cgen_cpu_prefix}
831  obj_format=${obj_format}
832  te_file=${te_file}])