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