* elf64-alpha.c (elf64_alpha_relocate_section): Soft fail
[binutils.git] / gas / configure.in
blob9191e11da0a93cd856f25546e68712cad768befd
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
12 AC_ISC_POSIX
14 changequote(,)dnl
15 BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[         ]*\([^  ]*\)[   ]*).*/\1/p' < ${srcdir}/../bfd/configure.in`
16 changequote([,])dnl
17 AM_INIT_AUTOMAKE(gas, ${BFD_VERSION})
19 AM_PROG_LIBTOOL
21 user_bfd_gas=
22 AC_ARG_ENABLE(bfd-assembler,
23 [  --enable-bfd-assembler  use BFD back end for writing object files],
24 [case "${enableval}" in
25   yes) need_bfd=yes user_bfd_gas=yes ;;
26   no)  user_bfd_gas=no ;;
27   *)   AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
28 esac])dnl
29 AC_ARG_ENABLE(targets,
30 [    targets            alternative target configurations besides the primary],
31 [case "${enableval}" in
32   yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
33             ;;
34   no)       enable_targets= ;;
35   *)        enable_targets=$enableval ;;
36 esac])dnl
37 AC_ARG_ENABLE(commonbfdlib,
38 [  --enable-commonbfdlib   build shared BFD/opcodes/libiberty library],
39 [case "${enableval}" in
40   yes) commonbfdlib=true ;;
41   no)  commonbfdlib=false ;;
42   *)   AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
43 esac])dnl
45 using_cgen=no
47 build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
48 AC_ARG_ENABLE(build-warnings,
49 [  --enable-build-warnings Enable build-time compiler warnings if gcc is used],
50 [case "${enableval}" in
51   yes)  ;;
52   no)   build_warnings="-w";;
53   ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
54         build_warnings="${build_warnings} ${t}";;
55   *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
56         build_warnings="${t} ${build_warnings}";;
57   *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
58 esac
59 if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
60   echo "Setting warning flags = $build_warnings" 6>&1
61 fi])dnl
62 WARN_CFLAGS=""
63 if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then
64     WARN_CFLAGS="${build_warnings}"
66 AC_SUBST(WARN_CFLAGS)
68 # Generate a header file
69 AM_CONFIG_HEADER(config.h:config.in)
71 # If we are on a DOS filesystem, we must use gdb.ini rather than
72 # .gdbinit.
73 GDBINIT=".gdbinit"
74 case "${host}" in
75   *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*)
76     GDBINIT="gdb.ini"
77     ;;
78 esac
79 AC_SUBST(GDBINIT)
81 te_file=generic
83 # Makefile target for installing gas in $(tooldir)/bin.
84 install_tooldir=install-exec-tooldir
86 canon_targets=""
87 all_targets=no
88 if test -n "$enable_targets" ; then
89   for t in `echo $enable_targets | sed 's/,/ /g'`; do
90     if test $t = "all"; then
91       all_targets=yes
92       continue
93     fi
94     result=`$ac_config_sub $t 2>/dev/null`
95     if test -n "$result" ; then
96       canon_targets="$canon_targets $result"
97 #    else
98 #      # Permit "all", etc.  We don't support it yet though.
99 #      canon_targets="$canon_targets $t"
100     fi
101   done
102   GAS_UNIQ(canon_targets)
105 emulations=""
107 for this_target in $target $canon_targets ; do
109 changequote(,)dnl
110     eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
111 changequote([,])dnl
113     # check for architecture variants
114     arch=
115     endian=
116     case ${cpu} in
117       alpha*)           cpu_type=alpha ;;
118       armeb)            cpu_type=arm endian=big ;;
119       arm*)             cpu_type=arm endian=little ;;
120       armb*)            cpu_type=arm endian=little ;;
121       armv*l)           cpu_type=arm endian=little ;;
122       armv*b)           cpu_type=arm endian=big ;;
123       xscale*)          cpu_type=arm endian=little ;;
124       strongarm*)       cpu_type=arm endian=little ;;
125       thumb*)           cpu_type=arm endian=little ;;
126       hppa*)            cpu_type=hppa ;;
127 changequote(,)dnl
128       i[3456]86)        cpu_type=i386 arch=i386;;
129       x86_64)           cpu_type=i386 arch=x86_64;;
130       ia64)             cpu_type=ia64 ;;
131       m6811|m6812|m68hc12) cpu_type=m68hc11 ;;
132       m680[012346]0)    cpu_type=m68k ;;
133 changequote([,])dnl
134       m68008)           cpu_type=m68k ;;
135       m683??)           cpu_type=m68k ;;
136       m5200)            cpu_type=m68k ;;
137       m8*)              cpu_type=m88k ;;
138       mips*el)          cpu_type=mips endian=little ;;
139       mips*)            cpu_type=mips endian=big ;;
140       pjl*)             cpu_type=pj endian=little ;;
141       pj*)              cpu_type=pj endian=big ;;
142       powerpc*le*)      cpu_type=ppc endian=little ;;
143       powerpc*)         cpu_type=ppc endian=big ;;
144       rs6000*)          cpu_type=ppc ;;
145       s390x*)           cpu_type=s390 arch=s390x ;;
146       s390*)            cpu_type=s390 arch=s390 ;;
147       sparclite*)       cpu_type=sparc arch=sparclite ;;
148       sparclet*)        cpu_type=sparc arch=sparclet ;;
149       sparc64*)         cpu_type=sparc arch=v9-64 ;;
150       sparc86x*)        cpu_type=sparc arch=sparc86x  ;;
151       sparc*)           cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
152       v850*)            cpu_type=v850 ;;
153       *)                cpu_type=${cpu} ;;
154     esac
156     if test ${this_target} = $target ; then
157       target_cpu_type=${cpu_type}
158     elif test ${target_cpu_type} != ${cpu_type} ; then
159       continue
160     fi
162     generic_target=${cpu_type}-$vendor-$os
163     dev=no
164     bfd_gas=no
165     em=generic
167     # assign object format
168     case ${generic_target} in
169       a29k-*-coff)          fmt=coff ;;
170       a29k-amd-udi)         fmt=coff ;;
171       a29k-amd-ebmon)       fmt=coff ;;
172       a29k-nyu-sym1)        fmt=coff ;;
173       a29k-*-rtems*)        fmt=coff ;;
174       a29k-*-vxworks*)      fmt=coff ;;
176       alpha*-*-*vms*)       fmt=evax ;;
177       alpha*-*-netware*)    fmt=ecoff ;;
178       alpha*-*-openbsd*)    fmt=ecoff ;;
179       alpha*-*-osf*)        fmt=ecoff ;;
180       alpha*-*-linuxecoff*) fmt=ecoff ;;
181       alpha*-*-linux-gnu*)  fmt=elf em=linux ;;
182       alpha*-*-netbsd*)     fmt=elf em=nbsd ;;
184       arc-*-elf*)           fmt=elf bfd_gas=yes ;;
186       arm-*-aout)                       fmt=aout ;;
187       arm-*-coff | thumb-*-coff)        fmt=coff ;;
188       arm-*-rtems | thumb-*-rtems)      fmt=elf ;;
189       arm-*-elf | thumb-*-elf)          fmt=elf ;;
190       arm*-*-conix*)                    fmt=elf ;;
191       arm-*-linux*aout*)                fmt=aout em=linux ;;
192       arm*-*-linux-gnu* | arm*-*-uclinux*)      
193                                         fmt=elf  em=linux ;;
194       arm-*-netbsd*)                    fmt=aout em=nbsd ;;
195       arm-*-oabi | thumb-*-oabi)        fmt=elf ;;
196       arm-epoc-pe | thumb-epoc-pe)      fmt=coff em=epoc-pe ;;
197       arm-*-wince)                      fmt=coff em=wince-pe ;;
198       arm-*-pe | thumb-*-pe)            fmt=coff em=pe ;;
199       arm-*-riscix*)                    fmt=aout em=riscix ;;
200       arm-*-vxworks)                    fmt=coff ;;
202       avr-*-*)              fmt=elf bfd_gas=yes ;;
204       cris-*-*)             fmt=multi bfd_gas=yes ;;
206       d10v-*-*)             fmt=elf bfd_gas=yes ;;
207       d30v-*-*)             fmt=elf bfd_gas=yes ;;
210       fr30-*-*)             fmt=elf bfd_gas=yes ;;
212       hppa-*-linux-gnu*)    case ${cpu} in
213                                 hppa*64*)
214                                         fmt=elf em=hppalinux64;;
215                                 hppa*)
216                                         fmt=elf em=linux;;
217                             esac ;;
218       hppa-*-*elf*)         fmt=elf em=hppa ;;
219       hppa-*-lites*)        fmt=elf em=hppa ;;
220       hppa-*-osf*)          fmt=som em=hppa ;;
221       hppa-*-rtems*)        fmt=elf em=hppa ;;
222       hppa-*-hpux11*)       case ${cpu} in
223                                 hppa*64*)
224                                         fmt=elf em=hppa64 ;;
225                                 hppa*)
226                                         fmt=som em=hppa ;;
227                             esac ;;
228       hppa-*-hpux*)         fmt=som em=hppa ;;
229       hppa-*-mpeix*)        fmt=som em=hppa ;;
230       hppa-*-bsd*)          fmt=som em=hppa ;;
231       hppa-*-hiux*)         fmt=som em=hppa ;;
233       h8300-*-rtems*)       fmt=coff ;;
234       h8300-*-coff)         fmt=coff ;;
235       h8300-*-elf)          fmt=elf ;;
236       h8500-*-rtems*)       fmt=coff ;;
237       h8500-*-coff)         fmt=coff ;;
239       i370-*-elf* | i370-*-linux*) fmt=elf ;;
240       i386-ibm-aix*)        fmt=coff em=i386aix ;;
241       i386-sequent-bsd*)    fmt=aout em=dynix bfd_gas=yes ;;
242       i386-*-beospe*)       fmt=coff em=pe bfd_gas=yes ;;
243       i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;;
244       i386-*-bsd*)          fmt=aout em=386bsd ;;
245       i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
246       i386-*-netbsdelf*)    fmt=elf em=nbsd bfd_gas=yes ;;
247       i386-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes;;
248       i386-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes;;
249       i386-*-linux*aout* | i386-*-linux*oldld)   fmt=aout em=linux ;;
250       i386-*-linux*coff*)   fmt=coff em=linux ;;
251       i386-*-linux-gnu*)    fmt=elf em=linux bfd_gas=yes ;;
252       x86_64-*-linux-gnu*)  fmt=elf em=linux bfd_gas=yes ;;
253       i386-*-lynxos*)       fmt=coff em=lynx ;;
254 changequote(,)dnl
255       i386-*-sysv[45]* | i386-*-solaris* | i386-*-elf)
256                             fmt=elf bfd_gas=yes ;;
257       i386-*-freebsdaout* | i386-*-freebsd[12].* | i386-*-freebsd[12])
258                             fmt=aout em=386bsd ;;
259 changequote([,])dnl
260       i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
261                           fmt=coff ;;
262       i386-*-sco3.2v5*)      fmt=elf
263                             if test ${this_target} = $target; then
264                                 AC_DEFINE(SCO_ELF, 1,
265                                     [Define if defaulting to ELF on SCO 5.])
266                             fi
267                             ;;
268       i386-*-sco3.2*)       fmt=coff ;;
269       i386-*-vsta)          fmt=aout ;;
270       i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
271                             fmt=coff em=go32 bfd_gas=yes
272                             AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
273                             ;;
274       i386-*-rtemself*)     fmt=elf ;;
275       i386-*-rtemscoff*)    fmt=coff ;;
276       i386-*-rtems*)        fmt=elf ;;
277       i386-*-gnu*)          fmt=elf ;;
278       i386-*-mach*)
279                             fmt=aout em=mach bfd_gas=yes ;;
280       i386-*-msdos*)        fmt=aout ;;
281       i386-*-moss*)         fmt=elf ;;
282       i386-*-pe)            fmt=coff em=pe bfd_gas=yes ;;
283       i386-*-cygwin*)       fmt=coff em=pe bfd_gas=yes ;;
284       i386-*-interix*)      fmt=coff em=interix bfd_gas=yes ;;
285       i386-*-mingw32*)      fmt=coff em=pe bfd_gas=yes ;;
286       i386-*-*nt*)          fmt=coff em=pe bfd_gas=yes ;;
287       i386-*-vxworks*)      fmt=aout ;;
288       i386-*-chaos)         fmt=elf ;;
289       i860-stardent-sysv4* | i860-stardent-elf*)
290                             fmt=elf bfd_gas=yes endian=little
291                             AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress) ;;
292       i960-*-bout)          fmt=bout ;;
293       i960-*-coff)          fmt=coff em=ic960 ;;
294       i960-*-rtems*)        fmt=coff em=ic960 ;;
295       i960-*-nindy*)        fmt=bout ;;
296       i960-*-vxworks4*)     fmt=bout ;;
297       i960-*-vxworks5.0)    fmt=bout ;;
298       i960-*-vxworks5.*)    fmt=coff em=ic960 ;;
299       i960-*-vxworks*)      fmt=bout ;;
300       i960-*-elf*)          fmt=elf ;;
302       ia64-*-elf*)          fmt=elf ;;
303       ia64-*-aix*)          fmt=elf em=ia64aix ;;
304       ia64-*-linux-gnu*)    fmt=elf em=linux ;;
305       ia64-*-hpux*)         fmt=elf em=hpux ;;
307       m32r-*-*)             fmt=elf bfd_gas=yes ;;
309       m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)fmt=elf bfd_gas=yes ;;
311       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
312                             fmt=aout em=sun3 ;;
313       m68k-motorola-sysv*)  fmt=coff em=delta ;;
314       m68k-bull-sysv3*)     fmt=coff em=dpx2 ;;
315       m68k-apollo-*)        fmt=coff em=apollo ;;
316       m68k-*-sysv4*) # must be before -sysv*
317                             fmt=elf em=svr4 ;;
318       m68k-*-elf*)          fmt=elf ;;
319       m68k-*-coff | m68k-*-sysv* | m68k-*-rtemscoff*)
320                             fmt=coff ;;
321       m68k-*-rtems*)        fmt=elf ;;
322       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
323       m68k-*-linux*aout*)   fmt=aout em=linux ;;
324       m68k-*-linux-gnu*)    fmt=elf em=linux ;;
325       m68k-*-gnu*)          fmt=elf ;;
326       m68k-*-lynxos*)       fmt=coff em=lynx ;;
327       m68k-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes ;;
328       m68k-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
329       m68k-apple-aux*)      fmt=coff em=aux ;;
330       m68k-*-psos*)         fmt=elf em=psos;;
332       m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
333       m88k-*-coff*)         fmt=coff ;;
335       mcore-*-elf)          fmt=elf bfd_gas=yes ;;
336       mcore-*-pe)           fmt=coff em=pe bfd_gas=yes ;;
338       # don't change em like *-*-bsd does
339       mips-dec-netbsd*)     fmt=elf endian=little ;;
340       mips-dec-openbsd*)    fmt=elf endian=little ;;
341       mips-dec-bsd*)        fmt=aout endian=little ;;
342       mips-sony-bsd*)       fmt=ecoff ;;
343       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
344       mips-*-ultrix*)       fmt=ecoff endian=little ;;
345       mips-*-osf*)          fmt=ecoff endian=little ;;
346       mips-*-ecoff*)        fmt=ecoff ;;
347       mips-*-pe*)           fmt=coff endian=little em=pe ;;
348       mips-*-irix6*)        fmt=elf ;;
349       mips-*-irix5*)        fmt=elf ;;
350       mips-*-irix*)         fmt=ecoff ;;
351       mips-*-lnews*)        fmt=ecoff em=lnews ;;
352       mips-*-riscos*)       fmt=ecoff ;;
353       mips-*-linux-gnu*)
354                             fmt=elf em=tmips
355                             AC_DEFINE(MIPS_STABS_ELF, 1,
356                                 [Use ELF stabs for MIPS, not ECOFF stabs])
357                             ;;
358       mips-*-sysv4*MP* | mips-*-gnu*)
359                             fmt=elf em=tmips ;;
360       mips-*-sysv*)         fmt=ecoff ;;
361       mips-*-elf* | mips-*-rtems* | mips-*-openbsd*)
362                             fmt=elf ;;
363       mips-*-vxworks*)      fmt=elf
364                             AC_DEFINE(MIPS_STABS_ELF, 1,
365                                 [Use ELF stabs for MIPS, not ECOFF stabs])
366                             ;;
367       mn10200-*-*)          fmt=elf bfd_gas=yes ;;
368       mn10300-*-*)          fmt=elf bfd_gas=yes ;;
369       openrisc-*-*)         fmt=elf bfd_gas=yes ;;
370       pj*)                  fmt=elf ;;
371       ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*)
372                             fmt=coff em=pe ;;
373       ppc-*-aix*)           fmt=coff ;;
374       ppc-*-beos*)          fmt=coff ;;
375       ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
376                             fmt=elf ;;
377       ppc-*-linux-gnu*)     fmt=elf
378                             case "$endian" in
379                             big)  ;;
380                             *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
381                             esac
382                             ;;
383       ppc-*-solaris*)       fmt=elf
384                             if test ${this_target} = $target; then
385                                 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
386                                 [Define if default target is PowerPC Solaris.])
387                             fi
388                             if test x${endian} = xbig; then
389                                 AC_MSG_ERROR(Solaris must be configured little endian)
390                             fi
391                             ;;
392       ppc-*-rtems*)         fmt=elf ;;
393       ppc-*-macos* | ppc-*-mpw*)
394                             fmt=coff em=macos ;;
395       ppc-*-netware*)       fmt=elf em=ppcnw ;;
396       ppc-*-vxworks*)       fmt=elf ;;
398       s390x-*-linux-gnu*)   fmt=elf em=linux ;;
399       s390-*-linux-gnu*)    fmt=elf em=linux ;;
401       sh-*-linux*)          fmt=elf em=linux ;;
402       sh-*-elf*)            fmt=elf ;;
403       sh-*-coff*)           fmt=coff bfd_gas=yes;;
404       sh-*-pe*)             fmt=coff em=pe bfd_gas=yes;;
405       sh-*-rtemself*)       fmt=elf ;;
406       sh-*-rtems*)          fmt=coff bfd_gas=yes;;
408       ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
409       ns32k-pc532-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;
410       ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
412       sparc-*-rtemsaout*)   fmt=aout ;;
413       sparc-*-rtemself*)    fmt=elf ;;
414       sparc-*-rtems*)       fmt=elf ;;
415       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
416       sparc-*-aout | sparc*-*-vxworks*)
417                             fmt=aout em=sparcaout ;;
418       sparc-*-coff)         fmt=coff ;;
419       sparc-*-linux*aout*)  fmt=aout em=linux ;;
420       sparc-*-linux-gnu*)   fmt=elf em=linux ;;
421       sparc-*-lynxos*)      fmt=coff em=lynx ;;
422       sparc-fujitsu-none)   fmt=aout ;;
423       sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
424                             fmt=elf ;;
425       sparc-*-netbsd*)      em=nbsd bfd_gas=yes
426                             case ${cpu} in
427                                 sparc) case ${os} in
428                                            *elf*) fmt=elf ;;
429                                            *)     fmt=aout ;;
430                                        esac ;;
431                                 sparc64) fmt=elf ;;
432                             esac
433                             ;;
434       sparc-*-openbsd*)     fmt=aout em=nbsd ;;
436       strongarm-*-coff)     fmt=coff ;;
437       strongarm-*-elf)      fmt=elf ;;
438       xscale-*-coff)     fmt=coff ;;
439       xscale-*-elf)      fmt=elf ;;
441       tic30-*-*aout*)       fmt=aout bfd_gas=yes ;;
442       tic30-*-*coff*)       fmt=coff bfd_gas=yes ;;
443       tic54x-*-* | c54x*-*-*)
444                             fmt=coff bfd_gas=yes need_libm=yes;;
445       tic80-*-*)            fmt=coff ;;
447       v850-*-*)             fmt=elf bfd_gas=yes ;;
448       v850e-*-*)            fmt=elf bfd_gas=yes ;;
449       v850ea-*-*)           fmt=elf bfd_gas=yes ;;
451       vax-*-bsd* | vax-*-ultrix*)
452                             fmt=aout ;;
453       vax-*-vms)            fmt=vms ;;
456       z8k-*-coff | z8k-*-sim)
457                             fmt=coff ;;
459       w65-*-*)              fmt=coff ;;
461       *-*-aout | *-*-scout)
462                             fmt=aout ;;
463       *-*-freebsd*)         fmt=elf em=freebsd bfd_gas=yes ;;
464       *-*-nindy*)
465                             fmt=bout ;;
466       *-*-bsd*)
467                             fmt=aout em=sun3 ;;
468       *-*-generic)          fmt=generic ;;
469       *-*-xray | *-*-hms)   fmt=coff ;;
470       *-*-sim)              fmt=coff ;;
471       *-*-elf | *-*-sysv4* | *-*-solaris*)
472                             AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
473                             fmt=elf dev=yes ;;
474       *-*-vxworks)          fmt=aout ;;
475       *-*-netware)          fmt=elf ;;
476     esac
478     if test ${this_target} = $target ; then
479       endian_def=
480       if test x${endian} = xbig; then
481         endian_def=1
482       elif test x${endian} = xlittle; then
483         endian_def=0
484       fi
485       if test x${endian_def} != x; then
486         AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
487                            [Define as 1 if big endian.])
488       fi
489     fi
491     case ${cpu_type}-${fmt} in
492       alpha*-*) bfd_gas=yes ;;
493       arm-*)    bfd_gas=yes ;;
494     # not yet
495     # i386-aout)        bfd_gas=preferred ;;
496       ia64*-*)  bfd_gas=yes ;;
497       mips-*)   bfd_gas=yes ;;
498       ns32k-*)  bfd_gas=yes ;;
499       pdp11-*)  bfd_gas=yes ;;
500       ppc-*)    bfd_gas=yes ;;
501       sparc-*)  bfd_gas=yes ;;
502       strongarm-*)      bfd_gas=yes ;;
503       xscale-*) bfd_gas=yes ;;
504       *-elf)    bfd_gas=yes ;;
505       *-ecoff)  bfd_gas=yes ;;
506       *-som)    bfd_gas=yes ;;
507     #enable bfd for coff and aout to allow testing if a bfd target is
508     #the primary target, but not for coff or aout as the primary target
509       i386-coff)        if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
510       i386-aout)        if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
511       *)                ;;
512     esac
514 # Other random stuff.
516     # Do we need the opcodes library?
517     case ${cpu_type} in
518       vax | i386 | tic30)
519         ;;
521       *)
522         need_opcodes=yes
524         case "${enable_shared}" in
525         yes) shared_opcodes=true ;;
526         *opcodes*) shared_opcodes=true ;;
527         *) shared_opcodes=false ;;
528         esac
529         if test "${shared_opcodes}" = "true"; then
530           # A shared libopcodes must be linked against libbfd.
531           need_bfd=yes
532         fi
533         ;;
534     esac
536     # Any other special object files needed ?
537     case ${cpu_type} in
538       fr30 | m32r | openrisc)
539         using_cgen=yes
540         ;;
542       m68k)
543         case ${extra_objects} in
544         *m68k-parse.o*) ;;
545         *) extra_objects="$extra_objects m68k-parse.o" ;;
546         esac
547         ;;
549       s390)
550        if test $this_target = $target ; then
551           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
552        fi
553        ;;
555       mips)
556         echo ${extra_objects} | grep -s "itbl-parse.o" 
557         if test $? -ne 0 ; then
558           extra_objects="$extra_objects itbl-parse.o"
559         fi
561         echo ${extra_objects} | grep -s "itbl-lex.o" 
562         if test $? -ne 0 ; then
563           extra_objects="$extra_objects itbl-lex.o"
564         fi
566         echo ${extra_objects} | grep -s "itbl-ops.o" 
567         if test $? -ne 0 ; then
568           extra_objects="$extra_objects itbl-ops.o"
569         fi
570         ;;
572       i386)
573         if test $this_target = $target ; then
574           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
575         fi
576         ;;
577       sparc)
578         if test $this_target = $target ; then
579           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
580         fi
581         ;;
582       *)
583         ;;
584     esac
586     if test $using_cgen = yes ; then
587         case "x${extra_objects}" in
588         *cgen.o*) ;;
589         *) extra_objects="$extra_objects cgen.o" ;;
590         esac
591     fi
593 # See if we really can support this configuration with the emulation code.
595     if test $this_target = $target ; then
596       primary_bfd_gas=$bfd_gas
597       obj_format=$fmt
598       te_file=$em
600       if test $bfd_gas = no ; then
601         # Can't support other configurations this way.
602         break
603       fi
604     elif test $bfd_gas = no ; then
605       # Can't support this configuration.
606       break
607     fi
609 # From target name and format, produce a list of supported emulations.
611     case ${generic_target}-${fmt} in
612       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
613       mips-*-linux-gnu*-*) case "$endian" in
614                         big)    emulation="mipsbelf mipslelf mipself" ;;
615                         *)      emulation="mipslelf mipsbelf mipself" ;;
616                         esac ;;
617       mips-*-lnews*-ecoff) ;;
618       mips-*-*-ecoff)   case "$endian" in
619                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
620                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
621                         esac ;;
622       mips-*-*-elf)     case "$endian" in
623                         big)    emulation="mipsbelf mipslelf mipself" ;;
624                         *)      emulation="mipslelf mipsbelf mipself" ;;
625                         esac ;;
626       mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
627       # i386-pc-pe-coff != i386-pc-coff.
628       i386-*-pe-coff)   ;;
629       # Uncommenting the next line will turn on support for i386 AOUT
630       # for the default linux configuration
631       # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
632       #
633       i386-*-aout)      emulation="i386aout" ;;
634       i386-*-coff)      emulation="i386coff" ;;
635       i386-*-elf)       emulation="i386elf" ;;
637       # Always all formats.  The first stated emulation becomes the default.
638       cris-*-*aout*)    emulation="crisaout criself" ;;
639       cris-*-*)         emulation="criself crisaout" ;;
640     esac
642     emulations="$emulations $emulation"
644 done
646 # Turn on all targets if possible
647 if test ${all_targets} = "yes"; then
648   case ${target_cpu_type} in
649   i386)
650     case ${obj_format} in
651     aout)
652       emulations="$emulations i386coff i386elf"
653       ;;
654     coff)
655       emulations="$emulations i386aout i386elf"
656     ;;
657     elf)
658       emulations="$emulations i386aout i386coff"
659       ;;
660     esac
661   ;;
662   esac
665 # Assign floating point type.  Most processors with FP support
666 # IEEE FP.  On those that don't support FP at all, usually IEEE
667 # is emulated.
668 case ${target_cpu} in
669   vax | tahoe ) atof=${target_cpu} ;;
670   pdp11)        atof=vax ;;
671   *)            atof=ieee ;;
672 esac
674 case "${obj_format}" in
675   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
676 esac
678 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
679 cgen_cpu_prefix=""
680 if test $using_cgen = yes ; then
681   case ${target_cpu} in
682     *) cgen_cpu_prefix=${target_cpu} ;;
683   esac
684   AC_SUBST(cgen_cpu_prefix)
685   AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
689 dnl Make sure the desired support files exist.
692 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
693   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
696 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
697   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
700 case ${user_bfd_gas}-${primary_bfd_gas} in
701   yes-yes | no-no)
702     # We didn't override user's choice.
703     ;;
704   no-yes)
705     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
706     ;;
707   no-preferred)
708     primary_bfd_gas=no
709     ;;
710   *-preferred)
711     primary_bfd_gas=yes
712     ;;
713   yes-*)
714     primary_bfd_gas=yes
715     ;;
716   -*)
717     # User specified nothing.
718     ;;
719 esac
721 # Some COFF configurations want these random other flags set.
722 case ${obj_format} in
723   coff)
724     case ${target_cpu_type} in
725       i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
726       m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
727       m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
728     esac
729     ;;
730 esac
732 # Getting this done right is going to be a bitch.  Each configuration specified
733 # with --enable-targets=... should be checked for environment, format, cpu, and
734 # bfd_gas setting.
736 # For each configuration, the necessary object file support code must be linked
737 # in.  This might be only one, it might be up to four.  The necessary emulation
738 # code needs to be provided, too.
740 # And then there's "--enable-targets=all"....
742 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
744 formats="${obj_format}"
745 emfiles=""
746 EMULATIONS=""
747 GAS_UNIQ(emulations)
748 for em in . $emulations ; do
749   case $em in
750     .)  continue ;;
751     mipsbelf | mipslelf | mipself)
752         fmt=elf   file=mipself ;;
753     mipsbecoff | mipslecoff | mipsecoff)
754         fmt=ecoff file=mipsecoff ;;
755     *coff)
756         fmt=coff  file=$em ;;
757     *aout)
758         fmt=aout file=$em ;;
759     *elf)
760         fmt=elf file=$em ;;
761   esac
762   formats="$formats $fmt"
763   emfiles="$emfiles e-$file.o"
764   EMULATIONS="$EMULATIONS &$em,"
765 done
766 GAS_UNIQ(formats)
767 GAS_UNIQ(emfiles)
768 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
769   for fmt in $formats ; do
770     case $fmt in
771       aout)     AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
772       bout)     AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
773       coff)     AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
774       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
775       elf)      AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
776       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
777       hp300)    AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
778       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
779       som)      AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
780       vms)      AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
781     esac
782     extra_objects="$extra_objects obj-$fmt.o"
783   done
784   obj_format=multi
786 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
787   DEFAULT_EMULATION=`set . $emulations ; echo $2`
788   # e-mips* has more than one emulation per file, e-i386* has just one at the
789   # moment.  If only one emulation is specified, then don't define
790   # USE_EMULATIONS or include any of the e-files as they will only be bloat.
791   case "${obj_format}${emfiles}" in
792     multi* | *mips*)
793       extra_objects="$extra_objects $emfiles"
794       AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
795   esac
797 AC_SUBST(extra_objects)
798 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
799 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
800                    [Default emulation.])
802 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
803   yes-*-coff)   need_bfd=yes ;;
804   no-*-coff)    need_bfd=yes
805                 AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
806 esac
808 reject_dev_configs=yes
810 case ${reject_dev_configs}-${dev} in
811   yes-yes) # Oops.
812     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
813     ;;
814 esac
816 AC_SUBST(target_cpu_type)
817 AC_SUBST(obj_format)
818 AC_SUBST(te_file)
819 AC_SUBST(install_tooldir)
820 AC_SUBST(atof)
821 dnl AC_SUBST(emulation)
823 case "${primary_bfd_gas}" in
824   yes)  AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
825         need_bfd=yes ;;
826 esac
828 # do we need the opcodes library?
829 case "${need_opcodes}" in
830 yes)
831   OPCODES_LIB=../opcodes/libopcodes.la
832   ;;
833 esac
835 case "${need_bfd}" in
836 yes)
837   BFDLIB=../bfd/libbfd.la
838   ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
839   ;;
840 esac
842 AC_SUBST(BFDLIB)
843 AC_SUBST(OPCODES_LIB)
845 AC_SUBST(ALL_OBJ_DEPS)
847 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}", [Target alias.])
848 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}",       [Canonical target.])
849 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}",   [Target CPU.])
850 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}", [Target vendor.])
851 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}",    [Target OS.])
853 AC_PROG_CC
855 AC_PROG_YACC
856 AM_PROG_LEX
858 ALL_LINGUAS=
859 CY_GNU_GETTEXT
861 AM_MAINTAINER_MODE
862 AC_EXEEXT
864 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
866 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
867 # people who are not cross-compiling but are compiling cross-assemblers.
868 AC_MSG_CHECKING(whether compiling a cross-assembler)
869 if test "${host}" = "${target}"; then
870   cross_gas=no
871 else
872   cross_gas=yes
873   AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
875 AC_MSG_RESULT($cross_gas)
877 dnl ansidecl.h will deal with const
878 dnl AC_CONST
879 AC_FUNC_ALLOCA
880 AC_C_INLINE
882 # VMS doesn't have unlink.
883 AC_CHECK_FUNCS(unlink remove, break)
885 # Some systems don't have sbrk().
886 AC_CHECK_FUNCS(sbrk)
888 # do we need the math library?
889 case "${need_libm}" in
890 yes) 
891   AC_CHECK_LIBM
892   AC_SUBST(LIBM)
893   ;;
894 esac
896 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
897 # enough, but on some of those systems, the assert macro relies on requoting
898 # working properly!
899 GAS_WORKING_ASSERT
901 # On some systems, the system header files may not declare malloc, realloc,
902 # and free.  There are places where gas needs these functions to have been
903 # declared -- such as when taking their addresses.
904 gas_test_headers="
905 #ifdef HAVE_MEMORY_H
906 #include <memory.h>
907 #endif
908 #ifdef HAVE_STRING_H
909 #include <string.h>
910 #else
911 #ifdef HAVE_STRINGS_H
912 #include <strings.h>
913 #endif
914 #endif
915 #ifdef HAVE_STDLIB_H
916 #include <stdlib.h>
917 #endif
918 #ifdef HAVE_UNISTD_H
919 #include <unistd.h>
920 #endif
922 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
923 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
924 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
925 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
926 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
928 # Does errno.h declare errno, or do we have to add a separate declaration
929 # for it?
930 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
931 #ifdef HAVE_ERRNO_H
932 #include <errno.h>
933 #endif
936 dnl This must come last.
938 dnl We used to make symlinks to files in the source directory, but now
939 dnl we just use the right name for .c files, and create .h files in
940 dnl the build directory which include the right .h file.  Make sure
941 dnl the old symlinks don't exist, so that a reconfigure in an existing
942 dnl directory behaves reasonably.
944 AC_OUTPUT(Makefile doc/Makefile ${GDBINIT}:gdbinit.in po/Makefile.in:po/Make-in,
945 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
946  echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
947  echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
948  echo '#include "te-'"${te_file}"'.h"' > targ-env.h
949  echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
950  if test "x$cgen_cpu_prefix" != x ; then
951    echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
952  fi
954  sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
955 [target_cpu_type=${target_cpu_type}
956  cgen_cpu_prefix=${cgen_cpu_prefix}
957  obj_format=${obj_format}
958  te_file=${te_file}])