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