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