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