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