1999-05-28 Martin Dorey <mdorey@madge.com>
[binutils.git] / gas / configure.in
blobf022063273e05441dc5db1f69e797047dc7b5175
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-*-freebsdelf*)   fmt=elf bfd_gas=yes ;;
180       i386-*-freebsd*)      fmt=aout em=386bsd ;;
181       i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
182                           fmt=coff ;;
183       i386-*-sco3.2v5*)      fmt=elf
184                             if test ${this_target} = $target; then
185                                 AC_DEFINE(SCO_ELF, 1,
186                                     [Define if defaulting to ELF on SCO 5.])
187                             fi
188                             ;;
189       i386-*-sco3.2*)       fmt=coff ;;
190       i386-*-vsta)          fmt=aout ;;
191       i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
192                             fmt=coff em=go32;;
193       i386-*-rtemself*)     fmt=elf ;;
194       i386-*-rtems*)        fmt=coff ;;
195       i386-*-gnu*)          fmt=elf ;;
196       i386-*-mach*)
197                             fmt=aout em=mach bfd_gas=yes ;;
198       i386-*-msdos*)        fmt=aout ;;
199       i386-*-moss*)         fmt=elf ;;
200       i386-*-pe)            fmt=coff em=pe ;;
201       i386-*-cygwin*)       fmt=coff em=pe bfd_gas=yes ;;
202       i386-*-mingw32*)      fmt=coff em=pe bfd_gas=yes ;;
203       i386-*-*nt*)          fmt=coff em=pe ;;
204       i960-*-bout)          fmt=bout ;;
205       i960-*-coff)          fmt=coff em=ic960 ;;
206       i960-*-rtems*)        fmt=coff em=ic960 ;;
207       i960-*-nindy*)        fmt=bout ;;
208       i960-*-vxworks4*)     fmt=bout ;;
209       i960-*-vxworks5.0)    fmt=bout ;;
210       i960-*-vxworks5.*)    fmt=coff em=ic960 ;;
211       i960-*-vxworks*)      fmt=bout ;;
212       i960-*-elf*)          fmt=elf ;;
214       m32r-*-*)             fmt=elf bfd_gas=yes ;;
216       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
217                             fmt=aout em=sun3 ;;
218       m68k-motorola-sysv*)  fmt=coff em=delta ;;
219       m68k-bull-sysv3*)     fmt=coff em=dpx2 ;;
220       m68k-apollo-*)        fmt=coff em=apollo ;;
221       m68k-*-sysv4*) # must be before -sysv*
222                             fmt=elf em=svr4 ;;
223       m68k-*-elf*)          fmt=elf ;;
224       m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
225                             fmt=coff ;;
226       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
227       m68k-*-linux*aout*)   fmt=aout em=linux ;;
228       m68k-*-linux-gnu*)    fmt=elf em=linux ;;
229       m68k-*-gnu*)          fmt=elf ;;
230       m68k-*-lynxos*)       fmt=coff em=lynx ;;
231       m68k-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes ;;
232       m68k-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
233       m68k-apple-aux*)      fmt=coff em=aux ;;
234       m68k-*-psos*)         fmt=elf em=psos;;
236       m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
237       m88k-*-coff*)         fmt=coff ;;
239       mcore-*-elf)          fmt=elf bfd_gas=yes ;;
240       mcore-*-pe)           fmt=coff em=pe bfd_gas=yes ;;
242       # don't change em like *-*-bsd does
243       mips-dec-netbsd*)     fmt=elf endian=little ;;
244       mips-dec-openbsd*)    fmt=elf endian=little ;;
245       mips-dec-bsd*)        fmt=aout endian=little ;;
246       mips-sony-bsd*)       fmt=ecoff ;;
247       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
248       mips-*-ultrix*)       fmt=ecoff endian=little ;;
249       mips-*-osf*)          fmt=ecoff endian=little ;;
250       mips-*-ecoff*)        fmt=ecoff ;;
251       mips-*-ecoff*)        fmt=ecoff ;;
252       mips-*-irix6*)        fmt=elf ;;
253       mips-*-irix5*)        fmt=elf ;;
254       mips-*-irix*)         fmt=ecoff ;;
255       mips-*-lnews*)        fmt=ecoff em=lnews ;;
256       mips-*-riscos*)       fmt=ecoff ;;
257       mips-*-sysv*)         fmt=ecoff ;;
258       mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*)
259                             fmt=elf ;;
260       mips-*-vxworks*)      fmt=elf
261                             AC_DEFINE(MIPS_STABS_ELF, 1,
262                                 [Use ELF stabs for MIPS, not ECOFF stabs])
263                             ;;
264       mn10200-*-*)          fmt=elf bfd_gas=yes ;;
265       mn10300-*-*)          fmt=elf bfd_gas=yes ;;
266       ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*)
267                             fmt=coff em=pe ;;
268       ppc-*-aix*)           fmt=coff ;;
269       ppc-*-beos*)          fmt=coff ;;
270       ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
271                             fmt=elf ;;
272       ppc-*-linux-gnu*)     fmt=elf
273                             case "$endian" in
274                             big)  ;;
275                             *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
276                             esac
277                             ;;
278       ppc-*-solaris*)       fmt=elf
279                             if test ${this_target} = $target; then
280                                 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
281                                 [Define if default target is PowerPC Solaris.])
282                             fi
283                             if test x${endian} = xbig; then
284                                 AC_MSG_ERROR(Solaris must be configured little endian)
285                             fi
286                             ;;
287       ppc-*-rtems*)         fmt=elf ;;
288       ppc-*-macos* | ppc-*-mpw*)
289                             fmt=coff em=macos ;;
290       ppc-*-netware*)       fmt=elf em=ppcnw ;;
292       sh-*-elf*)            fmt=elf ;;
293       sh-*-coff*)           fmt=coff ;;
294       sh-*-rtemself*)       fmt=elf ;;
295       sh-*-rtems*)          fmt=coff ;;
297       ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
298       ns32k-pc532-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;
299       ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
301       sparc-*-rtems*)       fmt=aout ;;
302       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
303       sparc-*-aout | sparc*-*-vxworks*)
304                             fmt=aout em=sparcaout ;;
305       sparc-*-coff)         fmt=coff ;;
306       sparc-*-linux*aout*)  fmt=aout em=linux ;;
307       sparc-*-linux-gnu*)   fmt=elf em=linux ;;
308       sparc-*-lynxos*)      fmt=coff em=lynx ;;
309       sparc-fujitsu-none)   fmt=aout ;;
310       sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
311                             fmt=elf ;;
312       sparc-*-netbsd*)      fmt=aout em=nbsd ;;
313       sparc-*-openbsd*)     fmt=aout em=nbsd ;;
315       strongarm-*-coff)     fmt=coff ;;
316       strongarm-*-elf)      fmt=elf ;;
318       tic30-*-*aout*)       fmt=aout bfd_gas=yes ;;
319       tic30-*-*coff*)       fmt=coff bfd_gas=yes ;;
320       tic80-*-*)            fmt=coff ;;
322       v850-*-*)             fmt=elf bfd_gas=yes ;;
323       v850e-*-*)            fmt=elf bfd_gas=yes ;;
324       v850ea-*-*)           fmt=elf bfd_gas=yes ;;
326       vax-*-bsd* | vax-*-ultrix*)
327                             fmt=aout ;;
328       vax-*-vms)            fmt=vms ;;
331       z8k-*-coff | z8k-*-sim)
332                             fmt=coff ;;
334       w65-*-*)              fmt=coff ;;
336       *-*-aout | *-*-scout)
337                             fmt=aout ;;
338       *-*-nindy*)
339                             fmt=bout ;;
340       *-*-bsd*)
341                             fmt=aout em=sun3 ;;
342       *-*-generic)          fmt=generic ;;
343       *-*-xray | *-*-hms)   fmt=coff ;;
344       *-*-sim)              fmt=coff ;;
345       *-*-elf | *-*-sysv4* | *-*-solaris*)
346                             AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
347                             fmt=elf dev=yes ;;
348       *-*-vxworks)          fmt=aout ;;
349       *-*-netware)          fmt=elf ;;
350     esac
352     if test ${this_target} = $target ; then
353       endian_def=
354       if test x${endian} = xbig; then
355         endian_def=1
356       elif test x${endian} = xlittle; then
357         endian_def=0
358       fi
359       if test x${endian_def} != x; then
360         AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
361                            [Define as 1 if big endian.])
362       fi
363     fi
365     case ${cpu_type}-${fmt} in
366       alpha*-*) bfd_gas=yes ;;
367       arm-*)    bfd_gas=yes ;;
368     # not yet
369     # i386-aout)        bfd_gas=preferred ;;
370       mips-*)   bfd_gas=yes ;;
371       ns32k-*)  bfd_gas=yes ;;
372       ppc-*)    bfd_gas=yes ;;
373       sparc-*)  bfd_gas=yes ;;
374       strongarm-*)      bfd_gas=yes ;;
375       *-elf)    bfd_gas=yes ;;
376       *-ecoff)  bfd_gas=yes ;;
377       *-som)    bfd_gas=yes ;;
378       *)                ;;
379     esac
381 # Other random stuff.
383     # Do we need the opcodes library?
384     case ${cpu_type} in
385       vax | i386 | tic30)
386         ;;
388       *)
389         need_opcodes=yes
391         case "${enable_shared}" in
392         yes) shared_opcodes=true ;;
393         *opcodes*) shared_opcodes=true ;;
394         *) shared_opcodes=false ;;
395         esac
396         if test "${shared_opcodes}" = "true"; then
397           # A shared libopcodes must be linked against libbfd.
398           need_bfd=yes
399         fi
400         ;;
401     esac
403     # Any other special object files needed ?
404     case ${cpu_type} in
405       fr30 | m32r)
406         using_cgen=yes
407         ;;
409       m68k)
410         case ${extra_objects} in
411         *m68k-parse.o*) ;;
412         *) extra_objects="$extra_objects m68k-parse.o" ;;
413         esac
414         ;;
416       mips)
417         echo ${extra_objects} | grep -s "itbl-parse.o" 
418         if test $? -ne 0 ; then
419           extra_objects="$extra_objects itbl-parse.o"
420         fi
422         echo ${extra_objects} | grep -s "itbl-lex.o" 
423         if test $? -ne 0 ; then
424           extra_objects="$extra_objects itbl-lex.o"
425         fi
427         echo ${extra_objects} | grep -s "itbl-ops.o" 
428         if test $? -ne 0 ; then
429           extra_objects="$extra_objects itbl-ops.o"
430         fi
431         ;;
433       sparc)
434         if test $this_target = $target ; then
435           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
436         fi
437         ;;
438       *)
439         ;;
440     esac
442     if test $using_cgen = yes ; then
443         case "x${extra_objects}" in
444         *cgen.o*) ;;
445         *) extra_objects="$extra_objects cgen.o" ;;
446         esac
447     fi
449 # See if we really can support this configuration with the emulation code.
451     if test $this_target = $target ; then
452       primary_bfd_gas=$bfd_gas
453       obj_format=$fmt
454       te_file=$em
456       if test $bfd_gas = no ; then
457         # Can't support other configurations this way.
458         break
459       fi
460     elif test $bfd_gas = no ; then
461       # Can't support this configuration.
462       break
463     fi
465 # From target name and format, produce a list of supported emulations.
467     case ${generic_target}-${fmt} in
468       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
469       mips-*-linux-gnu*-*) case "$endian" in
470                         big)    emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
471                         *)      emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;;
472                         esac ;;
473       mips-*-lnews*-ecoff) ;;
474       mips-*-*-ecoff)   case "$endian" in
475                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
476                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
477                         esac ;;
478       mips-*-*-elf)     case "$endian" in
479                         big)    emulation="mipsbelf mipslelf mipself" ;;
480                         *)      emulation="mipslelf mipsbelf mipself" ;;
481       # Uncommenting the next line will turn on support for i386 COFF
482       # in any i386 ELF configuration.  This probably doesn't work
483       # correctly.
484       # i386-*-*-elf)   emulation="i386coff i386elf" ;;
485                         esac ;;
486     esac
488     emulations="$emulations $emulation"
490 done
492 # Assign floating point type.  Most processors with FP support
493 # IEEE FP.  On those that don't support FP at all, usually IEEE
494 # is emulated.
495 case ${target_cpu} in
496   vax | tahoe ) atof=${target_cpu} ;;
497   *)            atof=ieee ;;
498 esac
500 case "${obj_format}" in
501   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
502 esac
504 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
505 cgen_cpu_prefix=""
506 if test $using_cgen = yes ; then
507   case ${target_cpu} in
508     *) cgen_cpu_prefix=${target_cpu} ;;
509   esac
510   AC_SUBST(cgen_cpu_prefix)
511   AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
515 dnl Make sure the desired support files exist.
518 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
519   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
522 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
523   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
526 case ${user_bfd_gas}-${primary_bfd_gas} in
527   yes-yes | no-no)
528     # We didn't override user's choice.
529     ;;
530   no-yes)
531     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
532     ;;
533   no-preferred)
534     primary_bfd_gas=no
535     ;;
536   *-preferred)
537     primary_bfd_gas=yes
538     ;;
539   yes-*)
540     primary_bfd_gas=yes
541     ;;
542   -*)
543     # User specified nothing.
544     ;;
545 esac
547 # Some COFF configurations want these random other flags set.
548 case ${obj_format} in
549   coff)
550     case ${target_cpu_type} in
551       i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
552       m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
553       m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
554     esac
555     ;;
556 esac
558 # Getting this done right is going to be a bitch.  Each configuration specified
559 # with --enable-targets=... should be checked for environment, format, cpu, and
560 # bfd_gas setting.
562 # For each configuration, the necessary object file support code must be linked
563 # in.  This might be only one, it might be up to four.  The necessary emulation
564 # code needs to be provided, too.
566 # And then there's "--enable-targets=all"....
568 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
570 formats="${obj_format}"
571 emfiles=""
572 EMULATIONS=""
573 GAS_UNIQ(emulations)
574 for em in . $emulations ; do
575   case $em in
576     .)  continue ;;
577     mipsbelf | mipslelf)
578         fmt=elf   file=mipself ;;
579     mipsbecoff | mipslecoff)
580         fmt=ecoff file=mipsecoff ;;
581     i386coff)
582         fmt=coff  file=i386coff ;;
583     i386elf)
584         fmt=elf   file=i386elf ;;
585   esac
586   formats="$formats $fmt"
587   emfiles="$emfiles e-$file.o"
588   EMULATIONS="$EMULATIONS &$em,"
589 done
590 GAS_UNIQ(formats)
591 GAS_UNIQ(emfiles)
592 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
593   for fmt in $formats ; do
594     case $fmt in
595       aout)     AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
596       bout)     AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
597       coff)     AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
598       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
599       elf)      AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
600       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
601       hp300)    AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
602       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
603       som)      AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
604       vms)      AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
605     esac
606     extra_objects="$extra_objects obj-$fmt.o"
607   done
608   obj_format=multi
610 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
611   te_file=multi
612   extra_objects="$extra_objects $emfiles"
613   DEFAULT_EMULATION=`set . $emulations ; echo $2`
614   AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?])
616 AC_SUBST(extra_objects)
617 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
618 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
619                    [Default emulation.])
621 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
622   yes-*-coff)   need_bfd=yes ;;
623   no-*-coff)    need_bfd=yes
624                 AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
625 esac
627 reject_dev_configs=yes
629 case ${reject_dev_configs}-${dev} in
630   yes-yes) # Oops.
631     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
632     ;;
633 esac
635 AC_SUBST(target_cpu_type)
636 AC_SUBST(obj_format)
637 AC_SUBST(te_file)
638 AC_SUBST(install_tooldir)
639 AC_SUBST(atof)
640 dnl AC_SUBST(emulation)
642 case "${primary_bfd_gas}" in
643   yes)  AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
644         need_bfd=yes ;;
645 esac
647 # do we need the opcodes library?
648 case "${need_opcodes}" in
649 yes)
650   OPCODES_LIB=../opcodes/libopcodes.la
651   ;;
652 esac
654 case "${need_bfd}" in
655 yes)
656   BFDLIB=../bfd/libbfd.la
657   ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
658   ;;
659 esac
661 AC_SUBST(BFDLIB)
662 AC_SUBST(OPCODES_LIB)
664 AC_SUBST(ALL_OBJ_DEPS)
666 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}", [Target alias.])
667 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}",       [Canonical target.])
668 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}",   [Target CPU.])
669 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}", [Target vendor.])
670 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}",    [Target OS.])
672 AC_PROG_CC
674 AC_PROG_YACC
675 AM_PROG_LEX
677 ALL_LINGUAS=
678 CY_GNU_GETTEXT
680 AM_MAINTAINER_MODE
681 AC_EXEEXT
683 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
685 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
686 # people who are not cross-compiling but are compiling cross-assemblers.
687 AC_MSG_CHECKING(whether compiling a cross-assembler)
688 if test "${host}" = "${target}"; then
689   cross_gas=no
690 else
691   cross_gas=yes
692   AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
694 AC_MSG_RESULT($cross_gas)
696 dnl ansidecl.h will deal with const
697 dnl AC_CONST
698 AC_FUNC_ALLOCA
699 AC_C_INLINE
701 # VMS doesn't have unlink.
702 AC_CHECK_FUNCS(unlink remove, break)
704 # Some systems don't have sbrk().
705 AC_CHECK_FUNCS(sbrk)
707 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
708 # enough, but on some of those systems, the assert macro relies on requoting
709 # working properly!
710 GAS_WORKING_ASSERT
712 # On some systems, the system header files may not declare malloc, realloc,
713 # and free.  There are places where gas needs these functions to have been
714 # declared -- such as when taking their addresses.
715 gas_test_headers="
716 #ifdef HAVE_MEMORY_H
717 #include <memory.h>
718 #endif
719 #ifdef HAVE_STRING_H
720 #include <string.h>
721 #else
722 #ifdef HAVE_STRINGS_H
723 #include <strings.h>
724 #endif
725 #endif
726 #ifdef HAVE_STDLIB_H
727 #include <stdlib.h>
728 #endif
729 #ifdef HAVE_UNISTD_H
730 #include <unistd.h>
731 #endif
733 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
734 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
735 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
736 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
737 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
739 # Does errno.h declare errno, or do we have to add a separate declaration
740 # for it?
741 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
742 #ifdef HAVE_ERRNO_H
743 #include <errno.h>
744 #endif
747 dnl This must come last.
749 dnl We used to make symlinks to files in the source directory, but now
750 dnl we just use the right name for .c files, and create .h files in
751 dnl the build directory which include the right .h file.  Make sure
752 dnl the old symlinks don't exist, so that a reconfigure in an existing
753 dnl directory behaves reasonably.
755 AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in po/Makefile.in:po/Make-in,
756 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
757  echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
758  echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
759  echo '#include "te-'"${te_file}"'.h"' > targ-env.h
760  echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
761  if test "x$cgen_cpu_prefix" != x ; then
762    echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
763  fi
765  sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
766 [target_cpu_type=${target_cpu_type}
767  cgen_cpu_prefix=${cgen_cpu_prefix}
768  obj_format=${obj_format}
769  te_file=${te_file}])