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