* configure.in: Add hppa-*-openbsd* target, change
[external/binutils.git] / gas / configure.in
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)
10
11 AC_CANONICAL_SYSTEM
12 AC_ISC_POSIX
13
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})
18
19 AM_PROG_LIBTOOL
20
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
44
45 using_cgen=no
46
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}"
65 fi
66 AC_SUBST(WARN_CFLAGS)
67
68 # Generate a header file
69 AM_CONFIG_HEADER(config.h:config.in)
70
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)
80
81 te_file=generic
82
83 # Makefile target for installing gas in $(tooldir)/bin.
84 install_tooldir=install-exec-tooldir
85
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)
103 fi
104
105 emulations=""
106
107 for this_target in $target $canon_targets ; do
108
109 changequote(,)dnl
110     eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
111 changequote([,])dnl
112
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       or32*)            cpu_type=or32 endian=big ;;
141       pjl*)             cpu_type=pj endian=little ;;
142       pj*)              cpu_type=pj endian=big ;;
143       powerpc*le*)      cpu_type=ppc endian=little ;;
144       powerpc*)         cpu_type=ppc endian=big ;;
145       rs6000*)          cpu_type=ppc ;;
146       s390x*)           cpu_type=s390 arch=s390x ;;
147       s390*)            cpu_type=s390 arch=s390 ;;
148       sh5*)             cpu_type=sh64 endian=big ;;
149       sh5le*)           cpu_type=sh64 endian=little ;;
150       sh64*)            cpu_type=sh64 endian=big ;;
151       sh64le*)          cpu_type=sh64 endian=little ;;
152       sh*le)            cpu_type=sh endian=little ;;
153       sh*)              cpu_type=sh endian=big ;;
154       sparclite*)       cpu_type=sparc arch=sparclite ;;
155       sparclet*)        cpu_type=sparc arch=sparclet ;;
156       sparc64*)         cpu_type=sparc arch=v9-64 ;;
157       sparc86x*)        cpu_type=sparc arch=sparc86x  ;;
158       sparc*)           cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
159       v850*)            cpu_type=v850 ;;
160       *)                cpu_type=${cpu} ;;
161     esac
162
163     if test ${this_target} = $target ; then
164       target_cpu_type=${cpu_type}
165     elif test ${target_cpu_type} != ${cpu_type} ; then
166       continue
167     fi
168
169     generic_target=${cpu_type}-$vendor-$os
170     dev=no
171     bfd_gas=no
172     em=generic
173
174     # assign object format
175     case ${generic_target} in
176       a29k-*-coff)          fmt=coff ;;
177       a29k-amd-udi)         fmt=coff ;;
178       a29k-amd-ebmon)       fmt=coff ;;
179       a29k-nyu-sym1)        fmt=coff ;;
180       a29k-*-rtems*)        fmt=coff ;;
181       a29k-*-vxworks*)      fmt=coff ;;
182
183       alpha*-*-*vms*)       fmt=evax ;;
184       alpha*-*-netware*)    fmt=ecoff ;;
185       alpha*-*-osf*)        fmt=ecoff ;;
186       alpha*-*-linuxecoff*) fmt=ecoff ;;
187       alpha*-*-linux-gnu*)  fmt=elf em=linux ;;
188       alpha*-*-netbsd*)     fmt=elf em=nbsd ;;
189       alpha*-*-openbsd*)    fmt=elf em=obsd ;;
190
191       arc-*-elf*)           fmt=elf bfd_gas=yes ;;
192
193       arm-*-aout)                       fmt=aout ;;
194       arm-*-coff | thumb-*-coff)        fmt=coff ;;
195       arm-*-rtems | thumb-*-rtems)      fmt=elf ;;
196       arm-*-elf | thumb-*-elf)          fmt=elf ;;
197       arm*-*-conix*)                    fmt=elf ;;
198       arm-*-linux*aout*)                fmt=aout em=linux ;;
199       arm*-*-linux-gnu* | arm*-*-uclinux*)      
200                                         fmt=elf  em=linux ;;
201       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
202       arm-*-netbsd* | arm-*-openbsd*)   fmt=aout em=nbsd ;;
203       arm-*-oabi | thumb-*-oabi)        fmt=elf ;;
204       arm-epoc-pe | thumb-epoc-pe)      fmt=coff em=epoc-pe ;;
205       arm-*-wince)                      fmt=coff em=wince-pe ;;
206       arm-*-pe | thumb-*-pe)            fmt=coff em=pe ;;
207       arm-*-riscix*)                    fmt=aout em=riscix ;;
208       arm-*-vxworks)                    fmt=coff ;;
209
210       avr-*-*)              fmt=elf bfd_gas=yes ;;
211
212       cris-*-*)             fmt=multi bfd_gas=yes ;;
213
214       d10v-*-*)             fmt=elf bfd_gas=yes ;;
215       d30v-*-*)             fmt=elf bfd_gas=yes ;;
216       dlx-*-*)              fmt=elf ;;
217
218
219       fr30-*-*)             fmt=elf bfd_gas=yes ;;
220       frv-*-*)              fmt=elf bfd_gas=yes ;;
221
222       hppa-*-linux-gnu*)    case ${cpu} in
223                                 hppa*64*)
224                                         fmt=elf em=hppalinux64;;
225                                 hppa*)
226                                         fmt=elf em=linux;;
227                             esac ;;
228       hppa-*-*elf*)         fmt=elf em=hppa ;;
229       hppa-*-lites*)        fmt=elf em=hppa ;;
230       hppa-*-netbsd*)       fmt=elf em=nbsd ;;
231       hppa-*-openbsd*)      fmt=elf em=hppa ;;
232       hppa-*-osf*)          fmt=som em=hppa ;;
233       hppa-*-rtems*)        fmt=elf em=hppa ;;
234       hppa-*-hpux11*)       case ${cpu} in
235                                 hppa*64*)
236                                         fmt=elf em=hppa64 ;;
237                                 hppa*)
238                                         fmt=som em=hppa ;;
239                             esac ;;
240       hppa-*-hpux*)         fmt=som em=hppa ;;
241       hppa-*-mpeix*)        fmt=som em=hppa ;;
242       hppa-*-bsd*)          fmt=som em=hppa ;;
243       hppa-*-hiux*)         fmt=som em=hppa ;;
244
245       h8300-*-rtems*)       fmt=coff ;;
246       h8300-*-coff)         fmt=coff ;;
247       h8300-*-elf)          fmt=elf ;;
248       h8500-*-rtems*)       fmt=coff ;;
249       h8500-*-coff)         fmt=coff ;;
250
251       i370-*-elf* | i370-*-linux*) fmt=elf ;;
252       i386-ibm-aix*)        fmt=coff em=i386aix ;;
253       i386-sequent-bsd*)    fmt=aout em=dynix bfd_gas=yes ;;
254       i386-*-beospe*)       fmt=coff em=pe bfd_gas=yes ;;
255       i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;;
256       i386-*-bsd*)          fmt=aout em=386bsd ;;
257       i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
258       i386-*-netbsdpe*)       fmt=coff em=pe bfd_gas=yes ;;
259       i386-*-netbsd*)       em=nbsd bfd_gas=yes
260                             case ${cpu} in
261                               x86_64)   fmt=elf ;;
262                               *)        case ${os} in
263                                           *elf*) fmt=elf ;;
264                                           *)     fmt=aout ;;
265                                         esac
266                                         ;;
267                             esac
268                             ;;
269       i386-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes;;
270       i386-*-linux*aout* | i386-*-linux*oldld)   fmt=aout em=linux ;;
271       i386-*-linux*coff*)   fmt=coff em=linux ;;
272       i386-*-linux-gnu*)    fmt=elf em=linux bfd_gas=yes ;;
273       x86_64-*-linux-gnu*)  fmt=elf em=linux bfd_gas=yes ;;
274       i386-*-lynxos*)       fmt=coff em=lynx ;;
275 changequote(,)dnl
276       i386-*-sysv[45]* | i386-*-solaris* | i386-*-elf)
277                             fmt=elf bfd_gas=yes ;;
278       i386-*-freebsdaout* | i386-*-freebsd[12].* | i386-*-freebsd[12])
279                             fmt=aout em=386bsd ;;
280 changequote([,])dnl
281       i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
282                           fmt=coff ;;
283       i386-*-sco3.2v5*)      fmt=elf
284                             if test ${this_target} = $target; then
285                                 AC_DEFINE(SCO_ELF, 1,
286                                     [Define if defaulting to ELF on SCO 5.])
287                             fi
288                             ;;
289       i386-*-sco3.2*)       fmt=coff ;;
290       i386-*-vsta)          fmt=aout ;;
291       i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
292                             fmt=coff em=go32 bfd_gas=yes
293                             AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
294                             ;;
295       i386-*-rtemself*)     fmt=elf ;;
296       i386-*-rtemscoff*)    fmt=coff ;;
297       i386-*-rtems*)        fmt=elf ;;
298       i386-*-gnu*)          fmt=elf ;;
299       i386-*-mach*)
300                             fmt=aout em=mach bfd_gas=yes ;;
301       i386-*-msdos*)        fmt=aout ;;
302       i386-*-moss*)         fmt=elf ;;
303       i386-*-pe)            fmt=coff em=pe bfd_gas=yes ;;
304       i386-*-cygwin*)       fmt=coff em=pe bfd_gas=yes ;;
305       i386-*-interix*)      fmt=coff em=interix bfd_gas=yes ;;
306       i386-*-mingw32*)      fmt=coff em=pe bfd_gas=yes ;;
307       i386-*-nto-qnx*)      fmt=elf ;;
308       i386-*-*nt*)          fmt=coff em=pe bfd_gas=yes ;;
309       i386-*-vxworks*)      fmt=aout ;;
310       i386-*-chaos)         fmt=elf ;;
311       i860-stardent-sysv4* | i860-stardent-elf*)
312                             fmt=elf bfd_gas=yes endian=little
313                             AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress) ;;
314       i960-*-bout)          fmt=bout ;;
315       i960-*-coff)          fmt=coff em=ic960 ;;
316       i960-*-rtems*)        fmt=coff em=ic960 ;;
317       i960-*-nindy*)        fmt=bout ;;
318       i960-*-vxworks4*)     fmt=bout ;;
319       i960-*-vxworks5.0)    fmt=bout ;;
320       i960-*-vxworks5.*)    fmt=coff em=ic960 ;;
321       i960-*-vxworks*)      fmt=bout ;;
322       i960-*-elf*)          fmt=elf ;;
323
324       ia64-*-elf*)          fmt=elf ;;
325       ia64-*-aix*)          fmt=elf em=ia64aix ;;
326       ia64-*-linux-gnu*)    fmt=elf em=linux ;;
327       ia64-*-hpux*)         fmt=elf em=hpux ;;
328       ia64-*-netbsd*)       fmt=elf em=nbsd ;;
329
330       m32r-*-*)             fmt=elf bfd_gas=yes ;;
331
332       m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)fmt=elf bfd_gas=yes ;;
333
334       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
335                             fmt=aout em=sun3 ;;
336       m68k-motorola-sysv*)  fmt=coff em=delta ;;
337       m68k-bull-sysv3*)     fmt=coff em=dpx2 ;;
338       m68k-apollo-*)        fmt=coff em=apollo ;;
339       m68k-*-sysv4*) # must be before -sysv*
340                             fmt=elf em=svr4 ;;
341       m68k-*-elf*)          fmt=elf ;;
342       m68k-*-coff | m68k-*-sysv* | m68k-*-rtemscoff*)
343                             fmt=coff ;;
344       m68k-*-rtems*)        fmt=elf ;;
345       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
346       m68k-*-linux*aout*)   fmt=aout em=linux ;;
347       m68k-*-linux-gnu*)    fmt=elf em=linux ;;
348       m68k-*-gnu*)          fmt=elf ;;
349       m68k-*-lynxos*)       fmt=coff em=lynx ;;
350       m68k-*-netbsdelf*)    fmt=elf em=nbsd bfd_gas=yes ;;
351       m68k-*-netbsdaout* | m68k-*-netbsd*)
352                             fmt=aout em=nbsd bfd_gas=yes ;;
353       m68k-*-openbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
354       m68k-apple-aux*)      fmt=coff em=aux ;;
355       m68k-*-psos*)         fmt=elf em=psos;;
356
357       m88k-motorola-sysv3*) fmt=coff em=delt88 ;;
358       m88k-*-coff*)         fmt=coff ;;
359
360       mcore-*-elf)          fmt=elf bfd_gas=yes ;;
361       mcore-*-pe)           fmt=coff em=pe bfd_gas=yes ;;
362
363       # don't change em like *-*-bsd does
364       mips-dec-openbsd*)    fmt=elf endian=little ;;
365       mips-dec-bsd*)        fmt=aout endian=little ;;
366       mips-sony-bsd*)       fmt=ecoff ;;
367       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
368       mips-*-ultrix*)       fmt=ecoff endian=little ;;
369       mips-*-osf*)          fmt=ecoff endian=little ;;
370       mips-*-ecoff*)        fmt=ecoff ;;
371       mips-*-pe*)           fmt=coff endian=little em=pe ;;
372       mips-*-irix6*)        fmt=elf ;;
373       mips-*-irix5*)        fmt=elf ;;
374       mips-*-irix*)         fmt=ecoff ;;
375       mips-*-lnews*)        fmt=ecoff em=lnews ;;
376       mips-*-riscos*)       fmt=ecoff ;;
377       mips*-*-linux*)       fmt=elf em=tmips ;;
378       mips-*-sysv4*MP* | mips-*-gnu*)
379                             fmt=elf em=tmips ;;
380       mips-*-sysv*)         fmt=ecoff ;;
381       mips-*-elf* | mips-*-rtems* | mips-*-netbsd* | mips-*-openbsd*)
382                             fmt=elf ;;
383       mips-*-vxworks*)      fmt=elf ;;
384       mmix-*-*)             fmt=elf bfd_gas=yes ;;
385       mn10200-*-*)          fmt=elf bfd_gas=yes ;;
386       mn10300-*-*)          fmt=elf bfd_gas=yes ;;
387       openrisc-*-*)         fmt=elf bfd_gas=yes ;;
388       or32-*-rtems*)        fmt=coff ;;
389       or32-*-coff)          fmt=coff ;;
390       or32-*-elf)           fmt=elf ;;
391       pj*)                  fmt=elf ;;
392       ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*)
393                             fmt=coff em=pe ;;
394       ppc-*-aix5*)          fmt=coff em=aix5 ;;
395       ppc-*-aix*)           fmt=coff ;;
396       ppc-*-beos*)          fmt=coff ;;
397       ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
398                             fmt=elf ;;
399       ppc-*-linux-gnu*)     fmt=elf
400                             case "$endian" in
401                             big)  ;;
402                             *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
403                             esac
404                             ;;
405       ppc-*-solaris*)       fmt=elf
406                             if test ${this_target} = $target; then
407                                 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
408                                 [Define if default target is PowerPC Solaris.])
409                             fi
410                             if test x${endian} = xbig; then
411                                 AC_MSG_ERROR(Solaris must be configured little endian)
412                             fi
413                             ;;
414       ppc-*-rtems*)         fmt=elf ;;
415       ppc-*-macos* | ppc-*-mpw*)
416                             fmt=coff em=macos ;;
417       ppc-*-netware*)       fmt=elf em=ppcnw ;;
418       ppc-*-vxworks*)       fmt=elf ;;
419       ppc-*-windiss*)       fmt=elf ;;
420
421       s390x-*-linux-gnu*)   fmt=elf em=linux ;;
422       s390-*-linux-gnu*)    fmt=elf em=linux ;;
423
424       sh*-*-linux*)         fmt=elf em=linux
425                             case ${cpu} in
426                                 sh*eb)
427                                         endian=big ;;
428                                 sh*)
429                                         endian=little ;;
430                             esac ;;
431       sh5*-*-netbsd*)       fmt=elf em=nbsd ;;
432       sh64*-*-netbsd*)      fmt=elf em=nbsd ;;
433       sh*-*-netbsdelf*)     fmt=elf em=nbsd ;;
434       sh-*-elf*)            fmt=elf ;;
435       sh-*-coff*)           fmt=coff ;;
436       sh-*-pe*)             fmt=coff em=pe bfd_gas=yes endian=little ;;
437       sh-*-rtemself*)       fmt=elf ;;
438       sh-*-rtems*)          fmt=coff ;;
439
440       sh64-*-elf*)          fmt=elf ;;
441       ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
442       ns32k-*-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;
443       ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;;
444
445       sparc-*-rtemsaout*)   fmt=aout ;;
446       sparc-*-rtemself*)    fmt=elf ;;
447       sparc-*-rtems*)       fmt=elf ;;
448       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
449       sparc-*-aout | sparc*-*-vxworks*)
450                             fmt=aout em=sparcaout ;;
451       sparc-*-coff)         fmt=coff ;;
452       sparc-*-linux*aout*)  fmt=aout em=linux ;;
453       sparc-*-linux-gnu*)   fmt=elf em=linux ;;
454       sparc-*-lynxos*)      fmt=coff em=lynx ;;
455       sparc-fujitsu-none)   fmt=aout ;;
456       sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
457                             fmt=elf ;;
458       sparc-*-netbsd*)      em=nbsd bfd_gas=yes
459                             case ${cpu} in
460                                 sparc) case ${os} in
461                                            *elf*) fmt=elf ;;
462                                            *)     fmt=aout ;;
463                                        esac ;;
464                                 sparc64) fmt=elf ;;
465                             esac
466                             ;;
467       sparc-*-openbsd*)     em=nbsd
468                             case ${cpu} in
469                                sparc) fmt=aout ;;
470                                sparc64) fmt=elf ;;
471                             esac
472                             ;;
473
474       strongarm-*-coff)     fmt=coff ;;
475       strongarm-*-elf)      fmt=elf ;;
476       xscale-*-coff)     fmt=coff ;;
477       xscale-*-elf)      fmt=elf ;;
478
479       tic30-*-*aout*)       fmt=aout bfd_gas=yes ;;
480       tic30-*-*coff*)       fmt=coff bfd_gas=yes ;;
481       tic54x-*-* | c54x*-*-*)
482                             fmt=coff bfd_gas=yes need_libm=yes;;
483       tic80-*-*)            fmt=coff ;;
484
485       v850-*-*)             fmt=elf bfd_gas=yes ;;
486       v850e-*-*)            fmt=elf bfd_gas=yes ;;
487       v850ea-*-*)           fmt=elf bfd_gas=yes ;;
488
489       vax-*-netbsdelf*)     fmt=elf em=nbsd bfd_gas=yes ;;
490       vax-*-netbsdaout* | vax-*-netbsd*)
491                             fmt=aout em=nbsd ;;
492       vax-*-bsd* | vax-*-ultrix*)
493                             fmt=aout ;;
494       vax-*-vms)            fmt=vms ;;
495
496       w65-*-*)              fmt=coff ;;
497
498       xstormy16-*-*)        fmt=elf bfd_gas=yes ;;
499
500       z8k-*-coff | z8k-*-sim)
501                             fmt=coff ;;
502
503       *-*-aout | *-*-scout)
504                             fmt=aout ;;
505       *-*-freebsd*)         fmt=elf em=freebsd bfd_gas=yes ;;
506       *-*-nindy*)
507                             fmt=bout ;;
508       *-*-bsd*)
509                             fmt=aout em=sun3 ;;
510       *-*-generic)          fmt=generic ;;
511       *-*-xray | *-*-hms)   fmt=coff ;;
512       *-*-sim)              fmt=coff ;;
513       *-*-elf | *-*-sysv4* | *-*-solaris*)
514                             AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
515                             fmt=elf dev=yes ;;
516       *-*-vxworks)          fmt=aout ;;
517       *-*-netware)          fmt=elf ;;
518     esac
519
520     if test ${this_target} = $target ; then
521       endian_def=
522       if test x${endian} = xbig; then
523         endian_def=1
524       elif test x${endian} = xlittle; then
525         endian_def=0
526       fi
527       if test x${endian_def} != x; then
528         AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
529                            [Define as 1 if big endian.])
530       fi
531     fi
532
533     case ${cpu_type}-${fmt} in
534       alpha*-*) bfd_gas=yes ;;
535       arm-*)    bfd_gas=yes ;;
536     # not yet
537     # i386-aout)        bfd_gas=preferred ;;
538       ia64*-*)  bfd_gas=yes ;;
539       mips-*)   bfd_gas=yes ;;
540       ns32k-*)  bfd_gas=yes ;;
541       pdp11-*)  bfd_gas=yes ;;
542       ppc-*)    bfd_gas=yes ;;
543       sparc-*)  bfd_gas=yes ;;
544       strongarm-*)      bfd_gas=yes ;;
545       xscale-*) bfd_gas=yes ;;
546       *-elf)    bfd_gas=yes ;;
547       *-ecoff)  bfd_gas=yes ;;
548       *-som)    bfd_gas=yes ;;
549     #enable bfd for coff and aout to allow testing if a bfd target is
550     #the primary target, but not for coff or aout as the primary target
551       i386-coff)        if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
552       i386-aout)        if test x${primary_bfd_gas} = xyes; then bfd_gas=yes; fi ;;
553       *)                ;;
554     esac
555
556 # Other random stuff.
557
558     # Do we need the opcodes library?
559     case ${cpu_type} in
560       vax | i386 | tic30)
561         ;;
562
563       *)
564         need_opcodes=yes
565
566         case "${enable_shared}" in
567         yes) shared_opcodes=true ;;
568         *opcodes*) shared_opcodes=true ;;
569         *) shared_opcodes=false ;;
570         esac
571         if test "${shared_opcodes}" = "true"; then
572           # A shared libopcodes must be linked against libbfd.
573           need_bfd=yes
574         fi
575         ;;
576     esac
577
578     # Any other special object files needed ?
579     case ${cpu_type} in
580       fr30 | m32r | openrisc)
581         using_cgen=yes
582         ;;
583
584       frv)
585         using_cgen=yes
586         ;;
587       m68k)
588         case ${extra_objects} in
589         *m68k-parse.o*) ;;
590         *) extra_objects="$extra_objects m68k-parse.o" ;;
591         esac
592         ;;
593
594       mips)
595         echo ${extra_objects} | grep -s "itbl-parse.o" 
596         if test $? -ne 0 ; then
597           extra_objects="$extra_objects itbl-parse.o"
598         fi
599
600         echo ${extra_objects} | grep -s "itbl-lex.o" 
601         if test $? -ne 0 ; then
602           extra_objects="$extra_objects itbl-lex.o"
603         fi
604
605         echo ${extra_objects} | grep -s "itbl-ops.o" 
606         if test $? -ne 0 ; then
607           extra_objects="$extra_objects itbl-ops.o"
608         fi
609         ;;
610
611       i386 | s390 | sparc)
612         if test $this_target = $target ; then
613           AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
614         fi
615         ;;
616
617       xstormy16)
618         using_cgen=yes
619         ;;
620
621       *)
622         ;;
623     esac
624
625     if test $using_cgen = yes ; then
626         case "x${extra_objects}" in
627         *cgen.o*) ;;
628         *) extra_objects="$extra_objects cgen.o" ;;
629         esac
630     fi
631
632 # See if we really can support this configuration with the emulation code.
633
634     if test $this_target = $target ; then
635       primary_bfd_gas=$bfd_gas
636       obj_format=$fmt
637       te_file=$em
638
639       if test $bfd_gas = no ; then
640         # Can't support other configurations this way.
641         break
642       fi
643     elif test $bfd_gas = no ; then
644       # Can't support this configuration.
645       break
646     fi
647
648 # From target name and format, produce a list of supported emulations.
649
650     case ${generic_target}-${fmt} in
651       mips-*-irix5*-*)  emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
652       mips*-*-linux*-*) case "$endian" in
653                         big)    emulation="mipsbelf mipslelf mipself" ;;
654                         *)      emulation="mipslelf mipsbelf mipself" ;;
655                         esac ;;
656       mips-*-lnews*-ecoff) ;;
657       mips-*-*-ecoff)   case "$endian" in
658                         big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
659                         *)      emulation="mipslecoff mipsbecoff mipsecoff" ;;
660                         esac ;;
661       mips-*-*-elf)     case "$endian" in
662                         big)    emulation="mipsbelf mipslelf mipself" ;;
663                         *)      emulation="mipslelf mipsbelf mipself" ;;
664                         esac ;;
665       mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
666       # i386-pc-pe-coff != i386-pc-coff.
667       i386-*-pe-coff)   ;;
668       # Uncommenting the next line will turn on support for i386 AOUT
669       # for the default linux configuration
670       # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
671       #
672       i386-*-aout)      emulation="i386aout" ;;
673       i386-*-coff)      emulation="i386coff" ;;
674       i386-*-elf)       emulation="i386elf" ;;
675
676       # Always all formats.  The first stated emulation becomes the default.
677       cris-*-*aout*)    emulation="crisaout criself" ;;
678       cris-*-*)         emulation="criself crisaout" ;;
679     esac
680
681     emulations="$emulations $emulation"
682
683 done
684
685 # Turn on all targets if possible
686 if test ${all_targets} = "yes"; then
687   case ${target_cpu_type} in
688   i386)
689     case ${obj_format} in
690     aout)
691       emulations="$emulations i386coff i386elf"
692       ;;
693     coff)
694       emulations="$emulations i386aout i386elf"
695     ;;
696     elf)
697       emulations="$emulations i386aout i386coff"
698       ;;
699     esac
700   ;;
701   esac
702 fi
703
704 # Assign floating point type.  Most processors with FP support
705 # IEEE FP.  On those that don't support FP at all, usually IEEE
706 # is emulated.
707 case ${target_cpu} in
708   vax | tahoe ) atof=${target_cpu} ;;
709   pdp11)        atof=vax ;;
710   *)            atof=ieee ;;
711 esac
712
713 case "${obj_format}" in
714   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
715 esac
716
717 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
718 cgen_cpu_prefix=""
719 if test $using_cgen = yes ; then
720   case ${target_cpu} in
721     *) cgen_cpu_prefix=${target_cpu} ;;
722   esac
723   AC_SUBST(cgen_cpu_prefix)
724   AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
725 fi
726
727 dnl
728 dnl Make sure the desired support files exist.
729 dnl
730
731 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
732   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
733 fi
734
735 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
736   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
737 fi
738
739 case ${user_bfd_gas}-${primary_bfd_gas} in
740   yes-yes | no-no)
741     # We didn't override user's choice.
742     ;;
743   no-yes)
744     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
745     ;;
746   no-preferred)
747     primary_bfd_gas=no
748     ;;
749   *-preferred)
750     primary_bfd_gas=yes
751     ;;
752   yes-*)
753     primary_bfd_gas=yes
754     ;;
755   -*)
756     # User specified nothing.
757     ;;
758 esac
759
760 # Some COFF configurations want these random other flags set.
761 case ${obj_format} in
762   coff)
763     case ${target_cpu_type} in
764       i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
765       m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
766       m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
767     esac
768     ;;
769 esac
770
771 # Getting this done right is going to be a bitch.  Each configuration specified
772 # with --enable-targets=... should be checked for environment, format, cpu, and
773 # bfd_gas setting.
774 #
775 # For each configuration, the necessary object file support code must be linked
776 # in.  This might be only one, it might be up to four.  The necessary emulation
777 # code needs to be provided, too.
778 #
779 # And then there's "--enable-targets=all"....
780 #
781 # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
782
783 formats="${obj_format}"
784 emfiles=""
785 EMULATIONS=""
786 GAS_UNIQ(emulations)
787 for em in . $emulations ; do
788   case $em in
789     .)  continue ;;
790     mipsbelf | mipslelf | mipself)
791         fmt=elf   file=mipself ;;
792     mipsbecoff | mipslecoff | mipsecoff)
793         fmt=ecoff file=mipsecoff ;;
794     *coff)
795         fmt=coff  file=$em ;;
796     *aout)
797         fmt=aout file=$em ;;
798     *elf)
799         fmt=elf file=$em ;;
800   esac
801   formats="$formats $fmt"
802   emfiles="$emfiles e-$file.o"
803   EMULATIONS="$EMULATIONS &$em,"
804 done
805 GAS_UNIQ(formats)
806 GAS_UNIQ(emfiles)
807 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
808   for fmt in $formats ; do
809     case $fmt in
810       aout)     AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
811       bout)     AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
812       coff)     AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
813       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
814       elf)      AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
815       generic)  AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
816       hp300)    AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
817       ieee)     AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
818       som)      AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
819       vms)      AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
820     esac
821     extra_objects="$extra_objects obj-$fmt.o"
822   done
823   obj_format=multi
824 fi
825 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
826   DEFAULT_EMULATION=`set . $emulations ; echo $2`
827   # e-mips* has more than one emulation per file, e-i386* has just one at the
828   # moment.  If only one emulation is specified, then don't define
829   # USE_EMULATIONS or include any of the e-files as they will only be bloat.
830   case "${obj_format}${emfiles}" in
831     multi* | *mips*)
832       extra_objects="$extra_objects $emfiles"
833       AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
834   esac
835 fi
836 AC_SUBST(extra_objects)
837 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
838 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
839                    [Default emulation.])
840
841 case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
842   yes-*-coff)   need_bfd=yes ;;
843   no-*-coff)    need_bfd=yes
844                 AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
845 esac
846
847 reject_dev_configs=yes
848
849 case ${reject_dev_configs}-${dev} in
850   yes-yes) # Oops.
851     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
852     ;;
853 esac
854
855 AC_SUBST(target_cpu_type)
856 AC_SUBST(obj_format)
857 AC_SUBST(te_file)
858 AC_SUBST(install_tooldir)
859 AC_SUBST(atof)
860 dnl AC_SUBST(emulation)
861
862 case "${primary_bfd_gas}" in
863   yes)  AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
864         need_bfd=yes ;;
865 esac
866
867 # do we need the opcodes library?
868 case "${need_opcodes}" in
869 yes)
870   OPCODES_LIB=../opcodes/libopcodes.la
871   ;;
872 esac
873
874 case "${need_bfd}" in
875 yes)
876   BFDLIB=../bfd/libbfd.la
877   ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h'
878   ;;
879 esac
880
881 AC_SUBST(BFDLIB)
882 AC_SUBST(OPCODES_LIB)
883
884 AC_SUBST(ALL_OBJ_DEPS)
885
886 AC_DEFINE_UNQUOTED(TARGET_ALIAS,        "${target_alias}", [Target alias.])
887 AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}",       [Canonical target.])
888 AC_DEFINE_UNQUOTED(TARGET_CPU,          "${target_cpu}",   [Target CPU.])
889 AC_DEFINE_UNQUOTED(TARGET_VENDOR,       "${target_vendor}", [Target vendor.])
890 AC_DEFINE_UNQUOTED(TARGET_OS,           "${target_os}",    [Target OS.])
891
892 AC_PROG_CC
893
894 AC_PROG_YACC
895 AM_PROG_LEX
896
897 ALL_LINGUAS="fr tr es"
898 CY_GNU_GETTEXT
899
900 AM_MAINTAINER_MODE
901 AC_EXEEXT
902
903 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
904
905 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
906 # people who are not cross-compiling but are compiling cross-assemblers.
907 AC_MSG_CHECKING(whether compiling a cross-assembler)
908 if test "${host}" = "${target}"; then
909   cross_gas=no
910 else
911   cross_gas=yes
912   AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
913 fi
914 AC_MSG_RESULT($cross_gas)
915
916 dnl ansidecl.h will deal with const
917 dnl AC_CONST
918 AC_FUNC_ALLOCA
919 AC_C_INLINE
920
921 # VMS doesn't have unlink.
922 AC_CHECK_FUNCS(unlink remove, break)
923
924 # Some systems don't have sbrk().
925 AC_CHECK_FUNCS(sbrk)
926
927 # do we need the math library?
928 case "${need_libm}" in
929 yes) 
930   AC_CHECK_LIBM
931   AC_SUBST(LIBM)
932   ;;
933 esac
934
935 # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
936 # enough, but on some of those systems, the assert macro relies on requoting
937 # working properly!
938 GAS_WORKING_ASSERT
939
940 # On some systems, the system header files may not declare malloc, realloc,
941 # and free.  There are places where gas needs these functions to have been
942 # declared -- such as when taking their addresses.
943 gas_test_headers="
944 #ifdef HAVE_MEMORY_H
945 #include <memory.h>
946 #endif
947 #ifdef HAVE_STRING_H
948 #include <string.h>
949 #else
950 #ifdef HAVE_STRINGS_H
951 #include <strings.h>
952 #endif
953 #endif
954 #ifdef HAVE_STDLIB_H
955 #include <stdlib.h>
956 #endif
957 #ifdef HAVE_UNISTD_H
958 #include <unistd.h>
959 #endif
960 "
961 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
962 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
963 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
964 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
965 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
966
967 # Does errno.h declare errno, or do we have to add a separate declaration
968 # for it?
969 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
970 #ifdef HAVE_ERRNO_H
971 #include <errno.h>
972 #endif
973 ])
974
975 dnl This must come last.
976
977 dnl We used to make symlinks to files in the source directory, but now
978 dnl we just use the right name for .c files, and create .h files in
979 dnl the build directory which include the right .h file.  Make sure
980 dnl the old symlinks don't exist, so that a reconfigure in an existing
981 dnl directory behaves reasonably.
982
983 AC_OUTPUT(Makefile doc/Makefile ${GDBINIT}:gdbinit.in po/Makefile.in:po/Make-in,
984 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
985  echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
986  echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
987  echo '#include "te-'"${te_file}"'.h"' > targ-env.h
988  echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
989  if test "x$cgen_cpu_prefix" != x ; then
990    echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
991  fi
992
993  sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
994 [target_cpu_type=${target_cpu_type}
995  cgen_cpu_prefix=${cgen_cpu_prefix}
996  obj_format=${obj_format}
997  te_file=${te_file}])