OSDN Git Service

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