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.57)
9AC_INIT(as.h)
10
11dnl Autoconf 2.57 will find the aux dir without this.  However, unless
12dnl we specify this explicitly, automake-1.7 will assume that ylwrap is in
13dnl gas/ instead of gas/../.
14AC_CONFIG_AUX_DIR(..)
15AC_CANONICAL_SYSTEM
16AC_ISC_POSIX
17
18changequote(,)dnl
19BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ 	]*\([^ 	]*\)[ 	]*).*/\1/p' < ${srcdir}/../bfd/configure.in`
20changequote([,])dnl
21AM_INIT_AUTOMAKE(gas, ${BFD_VERSION})
22
23AM_PROG_LIBTOOL
24
25user_bfd_gas=
26AC_ARG_ENABLE(bfd-assembler,
27[  --enable-bfd-assembler  use BFD back end for writing object files],
28[case "${enableval}" in
29  yes) need_bfd=yes user_bfd_gas=yes ;;
30  no)  user_bfd_gas=no ;;
31  *)   AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
32esac])dnl
33AC_ARG_ENABLE(targets,
34[    targets            alternative target configurations besides the primary],
35[case "${enableval}" in
36  yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
37	    ;;
38  no)	    enable_targets= ;;
39  *)	    enable_targets=$enableval ;;
40esac])dnl
41AC_ARG_ENABLE(commonbfdlib,
42[  --enable-commonbfdlib   build shared BFD/opcodes/libiberty library],
43[case "${enableval}" in
44  yes) commonbfdlib=true ;;
45  no)  commonbfdlib=false ;;
46  *)   AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
47esac])dnl
48
49using_cgen=no
50
51build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
52AC_ARG_ENABLE(build-warnings,
53[  --enable-build-warnings Enable build-time compiler warnings if gcc is used],
54[case "${enableval}" in
55  yes)	;;
56  no)	build_warnings="-w";;
57  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
58        build_warnings="${build_warnings} ${t}";;
59  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
60        build_warnings="${t} ${build_warnings}";;
61  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
62esac
63if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
64  echo "Setting warning flags = $build_warnings" 6>&1
65fi])dnl
66WARN_CFLAGS=""
67if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then
68    WARN_CFLAGS="${build_warnings}"
69fi
70AC_SUBST(WARN_CFLAGS)
71
72# Generate a header file
73AM_CONFIG_HEADER(config.h:config.in)
74
75# If we are on a DOS filesystem, we must use gdb.ini rather than
76# .gdbinit.
77case "${host}" in
78  *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*)
79    GDBINIT="gdb.ini"
80    AC_CONFIG_FILES(gdb.ini:gdbinit.in)
81    ;;
82  *)
83    GDBINIT=".gdbinit"
84    AC_CONFIG_FILES(.gdbinit:gdbinit.in)
85    ;;
86esac
87AC_SUBST(GDBINIT)
88
89#We need this for the host.  BOUT header is in host order.
90AC_C_BIGENDIAN
91
92te_file=generic
93
94# Makefile target for installing gas in $(tooldir)/bin.
95install_tooldir=install-exec-tooldir
96
97canon_targets=""
98all_targets=no
99if test -n "$enable_targets" ; then
100  for t in `echo $enable_targets | sed 's/,/ /g'`; do
101    if test $t = "all"; then
102      all_targets=yes
103      continue
104    fi
105    result=`$ac_config_sub $t 2>/dev/null`
106    if test -n "$result" ; then
107      canon_targets="$canon_targets $result"
108#    else
109#      # Permit "all", etc.  We don't support it yet though.
110#      canon_targets="$canon_targets $t"
111    fi
112  done
113  GAS_UNIQ(canon_targets)
114fi
115
116emulations=""
117
118for this_target in $target $canon_targets ; do
119
120    targ=${this_target}
121    . ${srcdir}/configure.tgt
122
123    case ${target_cpu} in
124      crisv32)
125	AC_DEFINE_UNQUOTED(DEFAULT_CRIS_ARCH, $arch,
126			   [Default CRIS architecture.])
127	;;
128    esac
129
130    if test ${this_target} = $target ; then
131      target_cpu_type=${cpu_type}
132    elif test ${target_cpu_type} != ${cpu_type} ; then
133      continue
134    fi
135
136    generic_target=${cpu_type}-${target_vendor}-${target_os}
137    case ${generic_target} in
138      i386-*-sco3.2v5*)
139	if test ${this_target} = $target; then
140	  AC_DEFINE(SCO_ELF, 1, [Define if defaulting to ELF on SCO 5.])
141	fi
142	;;
143
144      i386-*-msdosdjgpp* \
145      | i386-*-go32* \
146      | i386-go32-rtems*)
147	AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
148	;;
149
150      i860-*-*)
151	AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress)
152	;;
153
154      mips-sony-bsd*)
155	;;
156      mips-*-bsd*)
157	AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.)
158	;;
159
160      ppc-*-aix5.*)
161	AC_DEFINE(AIX_WEAK_SUPPORT, 1,
162		  [Define if using AIX 5.2 value for C_WEAKEXT.])
163	;;
164      ppc-*-linux-gnu*)
165	case "$endian" in
166	  big)  ;;
167	  *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
168	esac
169	;;
170      ppc-*-solaris*)
171	if test ${this_target} = $target; then
172	  AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
173		    [Define if default target is PowerPC Solaris.])
174	fi
175	if test x${endian} = xbig; then
176	  AC_MSG_ERROR(Solaris must be configured little endian)
177	fi
178	;;
179
180      sh*-*-symbianelf*)
181	AC_DEFINE(TARGET_SYMBIAN, 1, [Define if target is Symbian OS.])
182	;;
183    esac
184
185    if test ${this_target} = $target ; then
186      endian_def=
187      if test x${endian} = xbig; then
188	endian_def=1
189      elif test x${endian} = xlittle; then
190	endian_def=0
191      fi
192      if test x${endian_def} != x; then
193	AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
194			   [Define as 1 if big endian.])
195      fi
196    fi
197
198# Other random stuff.
199
200    case ${cpu_type} in
201      mips)
202	# Set mips_cpu to the name of the default CPU.
203	case ${target_cpu} in
204	  mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el)
205	    mips_cpu=from-abi
206	    ;;
207	  mipsisa32 | mipsisa32el)
208	    mips_cpu=mips32
209	    ;;
210	  mipsisa32r2 | mipsisa32r2el)
211	    mips_cpu=mips32r2
212	    ;;
213	  mipsisa64 | mipsisa64el)
214	    mips_cpu=mips64
215	    ;;
216	  mipsisa64r2 | mipsisa64r2el)
217	    mips_cpu=mips64r2
218	    ;;
219	  mipstx39 | mipstx39el)
220	    mips_cpu=r3900
221	    ;;
222	  mips64vr | mips64vrel)
223	    mips_cpu=vr4100
224	    ;;
225	  mipsisa32r2* | mipsisa64r2*)
226changequote(,)dnl
227	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'`
228changequote([,])dnl
229	    ;;
230	  mips64* | mipsisa64* | mipsisa32*)
231changequote(,)dnl
232	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'`
233changequote([,])dnl
234	    ;;
235	  *)
236	    AC_ERROR($target_cpu isn't a supported MIPS CPU name)
237	    ;;
238	esac
239	# See whether it's appropriate to set E_MIPS_ABI_O32 for o32
240	# binaries.  It's a GNU extension that some OSes don't understand.
241	# The value only matters on ELF targets.
242	case ${target} in
243	  *-*-irix*)
244	    use_e_mips_abi_o32=0
245	    ;;
246	  *)
247	    use_e_mips_abi_o32=1
248	    ;;
249	esac
250	# Decide whether to generate 32-bit or 64-bit code by default.
251	# Used to resolve -march=from-abi when an embedded ABI is selected.
252	case ${target} in
253	  mips64*-*-* | mipsisa64*-*-*)
254	    mips_default_64bit=1
255	    ;;
256	  *)
257	    mips_default_64bit=0
258	    ;;
259	esac
260	# Decide which ABI to target by default.
261	case ${target} in
262	  mips64*-linux* | mips-sgi-irix6*)
263	    mips_default_abi=N32_ABI
264	    ;;
265	  mips*-linux*)
266	    mips_default_abi=O32_ABI
267	    ;;
268	  *)
269	    mips_default_abi=NO_ABI
270	    ;;
271	esac
272	AC_DEFINE_UNQUOTED(MIPS_CPU_STRING_DEFAULT, "$mips_cpu",
273			   [Default CPU for MIPS targets. ])
274	AC_DEFINE_UNQUOTED(USE_E_MIPS_ABI_O32, $use_e_mips_abi_o32,
275			   [Allow use of E_MIPS_ABI_O32 on MIPS targets. ])
276	AC_DEFINE_UNQUOTED(MIPS_DEFAULT_64BIT, $mips_default_64bit,
277			   [Generate 64-bit code by default on MIPS targets. ])
278	AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi,
279			   [Choose a default ABI for MIPS targets. ])
280	;;
281    esac
282
283    # Do we need the opcodes library?
284    case ${cpu_type} in
285      vax | i386 | tic30)
286	;;
287
288      *)
289	need_opcodes=yes
290
291	case "${enable_shared}" in
292	yes) shared_opcodes=true ;;
293	*opcodes*) shared_opcodes=true ;;
294	*) shared_opcodes=false ;;
295	esac
296	if test "${shared_opcodes}" = "true"; then
297	  # A shared libopcodes must be linked against libbfd.
298	  need_bfd=yes
299	fi
300	;;
301    esac
302
303    # Any other special object files needed ?
304    case ${cpu_type} in
305      fr30 | ip2k | iq2000 | m32r | openrisc)
306	using_cgen=yes
307	;;
308
309      frv)
310	using_cgen=yes
311	;;
312      m68k)
313	case ${extra_objects} in
314	*m68k-parse.o*) ;;
315	*) extra_objects="$extra_objects m68k-parse.o" ;;
316	esac
317	;;
318
319      mips)
320	echo ${extra_objects} | grep -s "itbl-parse.o"
321	if test $? -ne 0 ; then
322	  extra_objects="$extra_objects itbl-parse.o"
323	fi
324
325	echo ${extra_objects} | grep -s "itbl-lex.o"
326	if test $? -ne 0 ; then
327	  extra_objects="$extra_objects itbl-lex.o"
328	fi
329
330	echo ${extra_objects} | grep -s "itbl-ops.o"
331	if test $? -ne 0 ; then
332	  extra_objects="$extra_objects itbl-ops.o"
333	fi
334	;;
335
336      i386 | s390 | sparc)
337	if test $this_target = $target ; then
338	  AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
339	fi
340	;;
341
342      xstormy16)
343	using_cgen=yes
344	;;
345
346      xtensa)
347	echo ${extra_objects} | grep -s "xtensa-relax.o"
348	if test $? -ne 0 ; then
349	  extra_objects="$extra_objects xtensa-relax.o"
350	fi
351	;;
352
353      *)
354	;;
355    esac
356
357    if test $using_cgen = yes ; then
358	case "x${extra_objects}" in
359	*cgen.o*) ;;
360	*) extra_objects="$extra_objects cgen.o" ;;
361	esac
362    fi
363
364# See if we really can support this configuration with the emulation code.
365
366    if test $this_target = $target ; then
367      primary_bfd_gas=$bfd_gas
368      obj_format=$fmt
369      te_file=$em
370
371      if test $bfd_gas = no ; then
372	# Can't support other configurations this way.
373	break
374      fi
375    elif test $bfd_gas = no ; then
376      # Can't support this configuration.
377      break
378    fi
379
380# From target name and format, produce a list of supported emulations.
381
382    case ${generic_target}-${fmt} in
383      mips-*-irix5*-*)	emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
384      mips*-*-linux*-*) case "$endian" in
385			big)	emulation="mipsbelf mipslelf mipself" ;;
386			*)	emulation="mipslelf mipsbelf mipself" ;;
387			esac ;;
388      mips-*-lnews*-ecoff) ;;
389      mips-*-*-ecoff)	case "$endian" in
390			big)	emulation="mipsbecoff mipslecoff mipsecoff" ;;
391			*)	emulation="mipslecoff mipsbecoff mipsecoff" ;;
392			esac ;;
393      mips-*-*-elf)	case "$endian" in
394			big)	emulation="mipsbelf mipslelf mipself" ;;
395			*)	emulation="mipslelf mipsbelf mipself" ;;
396			esac ;;
397      mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
398      # i386-pc-pe-coff != i386-pc-coff.
399      i386-*-pe-coff)	;;
400      # Uncommenting the next line will turn on support for i386 AOUT
401      # for the default linux configuration
402      # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
403      #
404      i386-*-aout)	emulation="i386aout" ;;
405      i386-*-coff)	emulation="i386coff" ;;
406      i386-*-elf)	emulation="i386elf" ;;
407
408      # Always all formats.  The first stated emulation becomes the default.
409      cris-*-*aout*)	emulation="crisaout criself" ;;
410      cris-*-*)		emulation="criself crisaout" ;;
411    esac
412
413    emulations="$emulations $emulation"
414
415done
416
417# Turn on all targets if possible
418if test ${all_targets} = "yes"; then
419  case ${target_cpu_type} in
420  i386)
421    case ${obj_format} in
422    aout)
423      emulations="$emulations i386coff i386elf"
424      ;;
425    coff)
426      emulations="$emulations i386aout i386elf"
427    ;;
428    elf)
429      emulations="$emulations i386aout i386coff"
430      ;;
431    esac
432  ;;
433  esac
434fi
435
436# Assign floating point type.  Most processors with FP support
437# IEEE FP.  On those that don't support FP at all, usually IEEE
438# is emulated.
439case ${target_cpu} in
440  vax | tahoe )	atof=${target_cpu} ;;
441  pdp11)	atof=vax ;;
442  *)		atof=ieee ;;
443esac
444
445case "${obj_format}" in
446  "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
447esac
448
449# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
450cgen_cpu_prefix=""
451if test $using_cgen = yes ; then
452  case ${target_cpu} in
453    *) cgen_cpu_prefix=${target_cpu} ;;
454  esac
455  AC_SUBST(cgen_cpu_prefix)
456  AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
457fi
458
459dnl
460dnl Make sure the desired support files exist.
461dnl
462
463if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
464  AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
465fi
466
467if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
468  AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
469fi
470
471case ${user_bfd_gas}-${primary_bfd_gas} in
472  yes-yes | no-no)
473    # We didn't override user's choice.
474    ;;
475  no-yes)
476    AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
477    ;;
478  no-preferred)
479    primary_bfd_gas=no
480    ;;
481  *-preferred)
482    primary_bfd_gas=yes
483    ;;
484  yes-*)
485    primary_bfd_gas=yes
486    ;;
487  -*)
488    # User specified nothing.
489    ;;
490esac
491
492# Some COFF configurations want these random other flags set.
493case ${obj_format} in
494  coff)
495    case ${target_cpu_type} in
496      i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
497      m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
498      m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
499    esac
500    ;;
501esac
502
503# Getting this done right is going to be a bitch.  Each configuration specified
504# with --enable-targets=... should be checked for environment, format, cpu, and
505# bfd_gas setting.
506#
507# For each configuration, the necessary object file support code must be linked
508# in.  This might be only one, it might be up to four.  The necessary emulation
509# code needs to be provided, too.
510#
511# And then there's "--enable-targets=all"....
512#
513# For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
514
515formats="${obj_format}"
516emfiles=""
517EMULATIONS=""
518GAS_UNIQ(emulations)
519for em in . $emulations ; do
520  case $em in
521    .)	continue ;;
522    mipsbelf | mipslelf | mipself)
523	fmt=elf   file=mipself ;;
524    mipsbecoff | mipslecoff | mipsecoff)
525	fmt=ecoff file=mipsecoff ;;
526    *coff)
527	fmt=coff  file=$em ;;
528    *aout)
529	fmt=aout file=$em ;;
530    *elf)
531	fmt=elf file=$em ;;
532  esac
533  formats="$formats $fmt"
534  emfiles="$emfiles e-$file.o"
535  EMULATIONS="$EMULATIONS &$em,"
536done
537GAS_UNIQ(formats)
538GAS_UNIQ(emfiles)
539if test `set . $formats ; shift ; echo $#` -gt 1 ; then
540  for fmt in $formats ; do
541    case $fmt in
542      aout)	AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
543      bout)	AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
544      coff)	AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
545      ecoff)	AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
546      elf)	AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
547      generic)	AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
548      hp300)	AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
549      ieee)	AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
550      som)	AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
551      vms)	AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
552    esac
553    extra_objects="$extra_objects obj-$fmt.o"
554  done
555  obj_format=multi
556fi
557if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
558  DEFAULT_EMULATION=`set . $emulations ; echo $2`
559  # e-mips* has more than one emulation per file, e-i386* has just one at the
560  # moment.  If only one emulation is specified, then don't define
561  # USE_EMULATIONS or include any of the e-files as they will only be bloat.
562  case "${obj_format}${emfiles}" in
563    multi* | *mips*)
564      extra_objects="$extra_objects $emfiles"
565      AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
566  esac
567fi
568AC_SUBST(extra_objects)
569AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
570AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
571		   [Default emulation.])
572
573case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
574  yes-*-coff)	need_bfd=yes ;;
575  no-*-coff)	need_bfd=yes
576		AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
577esac
578
579reject_dev_configs=yes
580
581case ${reject_dev_configs}-${dev} in
582  yes-yes) # Oops.
583    AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
584    ;;
585esac
586
587AC_SUBST(target_cpu_type)
588AC_SUBST(obj_format)
589AC_SUBST(te_file)
590AC_SUBST(install_tooldir)
591AC_SUBST(atof)
592dnl AC_SUBST(emulation)
593
594case "${primary_bfd_gas}" in
595  yes)	AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
596	need_bfd=yes ;;
597esac
598
599# do we need the opcodes library?
600case "${need_opcodes}" in
601yes)
602  OPCODES_LIB=../opcodes/libopcodes.la
603  ;;
604esac
605
606case "${need_bfd}" in
607yes)
608  BFDLIB=../bfd/libbfd.la
609  BFDVER_H=../bfd/bfdver.h
610  ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h'
611  ;;
612esac
613
614AC_SUBST(BFDLIB)
615AC_SUBST(OPCODES_LIB)
616
617AC_SUBST(BFDVER_H)
618AC_SUBST(ALL_OBJ_DEPS)
619
620AC_DEFINE_UNQUOTED(TARGET_ALIAS,	"${target_alias}", [Target alias.])
621AC_DEFINE_UNQUOTED(TARGET_CANONICAL,	"${target}",       [Canonical target.])
622AC_DEFINE_UNQUOTED(TARGET_CPU,		"${target_cpu}",   [Target CPU.])
623AC_DEFINE_UNQUOTED(TARGET_VENDOR,	"${target_vendor}", [Target vendor.])
624AC_DEFINE_UNQUOTED(TARGET_OS,		"${target_os}",    [Target OS.])
625
626AC_PROG_CC
627
628AC_PROG_YACC
629AM_PROG_LEX
630
631ALL_LINGUAS="fr tr es"
632CY_GNU_GETTEXT
633
634AM_MAINTAINER_MODE
635AC_EXEEXT
636
637AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
638
639# Put this here so that autoconf's "cross-compiling" message doesn't confuse
640# people who are not cross-compiling but are compiling cross-assemblers.
641AC_MSG_CHECKING(whether compiling a cross-assembler)
642if test "${host}" = "${target}"; then
643  cross_gas=no
644else
645  cross_gas=yes
646  AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
647fi
648AC_MSG_RESULT($cross_gas)
649
650dnl ansidecl.h will deal with const
651dnl AC_CONST
652AC_FUNC_ALLOCA
653AC_C_INLINE
654
655# VMS doesn't have unlink.
656AC_CHECK_FUNCS(unlink remove, break)
657
658# Some systems don't have sbrk().
659AC_CHECK_FUNCS(sbrk)
660
661# do we need the math library?
662case "${need_libm}" in
663yes)
664  AC_CHECK_LIBM
665  AC_SUBST(LIBM)
666  ;;
667esac
668
669# Some non-ANSI preprocessors botch requoting inside strings.  That's bad
670# enough, but on some of those systems, the assert macro relies on requoting
671# working properly!
672GAS_WORKING_ASSERT
673
674# On some systems, the system header files may not declare malloc, realloc,
675# and free.  There are places where gas needs these functions to have been
676# declared -- such as when taking their addresses.
677gas_test_headers="
678#ifdef HAVE_MEMORY_H
679#include <memory.h>
680#endif
681#ifdef HAVE_STRING_H
682#include <string.h>
683#else
684#ifdef HAVE_STRINGS_H
685#include <strings.h>
686#endif
687#endif
688#ifdef HAVE_STDLIB_H
689#include <stdlib.h>
690#endif
691#ifdef HAVE_UNISTD_H
692#include <unistd.h>
693#endif
694"
695GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
696GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
697GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
698GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
699GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
700
701# Does errno.h declare errno, or do we have to add a separate declaration
702# for it?
703GAS_CHECK_DECL_NEEDED(errno, f, int f, [
704#ifdef HAVE_ERRNO_H
705#include <errno.h>
706#endif
707])
708
709dnl This must come last.
710
711dnl We used to make symlinks to files in the source directory, but now
712dnl we just use the right name for .c files, and create .h files in
713dnl the build directory which include the right .h file.  Make sure
714dnl the old symlinks don't exist, so that a reconfigure in an existing
715dnl directory behaves reasonably.
716
717AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in)
718AC_CONFIG_COMMANDS([default],
719[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
720 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
721 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
722 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
723 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
724 if test "x$cgen_cpu_prefix" != x ; then
725   echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
726 fi
727
728 sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
729[target_cpu_type=${target_cpu_type}
730 cgen_cpu_prefix=${cgen_cpu_prefix}
731 obj_format=${obj_format}
732 te_file=${te_file}])
733
734AC_OUTPUT
735