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