OSDN Git Service

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