1 dnl Process this file with autoconf to produce a configure script.
3 dnl And be careful when changing it! If you must add tests with square
4 dnl brackets, be sure changequote invocations surround it.
7 dnl v2.5 needed for --bindir et al
10 AC_CONFIG_SRCDIR(as.h)
12 dnl Autoconf 2.57 will find the aux dir without this. However, unless
13 dnl we specify this explicitly, automake-1.7 will assume that ylwrap is in
14 dnl gas/ instead of gas/../.
20 BFD_VERSION=`${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p'`
22 AM_INIT_AUTOMAKE(gas, ${BFD_VERSION})
26 AC_USE_SYSTEM_EXTENSIONS
31 AC_ARG_ENABLE(targets,
32 [ --enable-targets alternative target configurations besides the primary],
33 [case "${enableval}" in
34 yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all')
36 no) enable_targets= ;;
37 *) enable_targets=$enableval ;;
41 if grep '^RELEASE=y' ${srcdir}/../bfd/Makefile.am >/dev/null 2>/dev/null ; then
44 AC_ARG_ENABLE(checking,
45 [ --enable-checking enable run-time checks],
46 [case "${enableval}" in
47 no|none) ac_checking= ;;
50 if test x$ac_checking != x ; then
51 AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.])
58 # Generate a header file
59 AC_CONFIG_HEADERS(config.h:config.in)
62 AH_VERBATIM([00_CONFIG_H_CHECK],
63 [/* Check that config.h is #included before system headers
64 (this works only for glibc, but that should be enough). */
65 #if defined(__GLIBC__) && !defined(__CONFIG_H__)
66 # error config.h must be #included before system headers
68 #define __CONFIG_H__ 1])
70 # If we are on a DOS filesystem, we must use gdb.ini rather than
73 *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*)
75 AC_CONFIG_FILES(gdb.ini:gdbinit.in)
79 AC_CONFIG_FILES(.gdbinit:gdbinit.in)
84 #We need this for the host. BOUT header is in host order.
89 # Makefile target for installing gas in $(tooldir)/bin.
90 install_tooldir=install-exec-tooldir
94 if test -n "$enable_targets" ; then
95 for t in `echo $enable_targets | sed 's/,/ /g'`; do
96 if test $t = "all"; then
100 result=`$ac_config_sub $t 2>/dev/null`
101 if test -n "$result" ; then
102 canon_targets="$canon_targets $result"
104 # # Permit "all", etc. We don't support it yet though.
105 # canon_targets="$canon_targets $t"
108 GAS_UNIQ(canon_targets)
113 for this_target in $target $canon_targets ; do
116 . ${srcdir}/configure.tgt
118 case ${target_cpu} in
120 AC_DEFINE_UNQUOTED(DEFAULT_CRIS_ARCH, $arch,
121 [Default CRIS architecture.])
125 if test ${this_target} = $target ; then
126 target_cpu_type=${cpu_type}
127 elif test ${target_cpu_type} != ${cpu_type} ; then
131 generic_target=${cpu_type}-${target_vendor}-${target_os}
132 case ${generic_target} in
134 if test ${this_target} = $target; then
135 AC_DEFINE(SCO_ELF, 1, [Define if defaulting to ELF on SCO 5.])
142 AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
146 AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress)
155 AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.)
161 AC_DEFINE(AIX_WEAK_SUPPORT, 1,
162 [Define if using AIX 5.2 value for C_WEAKEXT.])
167 *) AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
171 if test ${this_target} = $target; then
172 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
173 [Define if default target is PowerPC Solaris.])
175 if test x${endian} = xbig; then
176 AC_MSG_ERROR(Solaris must be configured little endian)
181 AC_DEFINE(TARGET_SYMBIAN, 1, [Define if target is Symbian OS.])
185 if test ${this_target} = $target ; then
187 if test x${endian} = xbig; then
189 elif test x${endian} = xlittle; then
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.])
198 # Other random stuff.
202 # Set mips_cpu to the name of the default CPU.
203 case ${target_cpu} in
204 mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el)
207 mipsisa32 | mipsisa32el)
210 mipsisa32r2 | mipsisa32r2el)
213 mipsisa64 | mipsisa64el)
216 mipsisa64r2 | mipsisa64r2el)
219 mipstx39 | mipstx39el)
222 mips64vr | mips64vrel)
225 mipsisa32r2* | mipsisa64r2*)
227 mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'`
230 mips64* | mipsisa64* | mipsisa32*)
232 mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'`
236 AC_MSG_ERROR($target_cpu isn't a supported MIPS CPU name)
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.
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.
253 mips64*-*-* | mipsisa64*-*-*)
260 # Decide which ABI to target by default.
262 mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* | mips64*-kfreebsd*-gnu)
263 mips_default_abi=N32_ABI
265 mips*-linux* | mips*-freebsd* | mips*-kfreebsd*-gnu)
266 mips_default_abi=O32_ABI
269 mips_default_abi=N64_ABI
272 mips_default_abi=NO_ABI
275 AC_DEFINE_UNQUOTED(MIPS_CPU_STRING_DEFAULT, "$mips_cpu",
276 [Default CPU for MIPS targets. ])
277 AC_DEFINE_UNQUOTED(USE_E_MIPS_ABI_O32, $use_e_mips_abi_o32,
278 [Allow use of E_MIPS_ABI_O32 on MIPS targets. ])
279 AC_DEFINE_UNQUOTED(MIPS_DEFAULT_64BIT, $mips_default_64bit,
280 [Generate 64-bit code by default on MIPS targets. ])
281 AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi,
282 [Choose a default ABI for MIPS targets. ])
286 # Do we need the opcodes library?
294 case "${enable_shared}" in
295 yes) shared_opcodes=true ;;
296 *opcodes*) shared_opcodes=true ;;
297 *) shared_opcodes=false ;;
302 # Any other special object files needed ?
306 echo ${extra_objects} | grep -s "bfin-parse.o"
307 if test $? -ne 0 ; then
308 extra_objects="$extra_objects bfin-parse.o"
311 echo ${extra_objects} | grep -s "bfin-lex-wrapper.o"
312 if test $? -ne 0 ; then
313 extra_objects="$extra_objects bfin-lex-wrapper.o"
317 epiphany | fr30 | ip2k | iq2000 | lm32 | m32r | openrisc)
328 case ${extra_objects} in
330 *) extra_objects="$extra_objects m68k-parse.o" ;;
339 echo ${extra_objects} | grep -s "itbl-parse.o"
340 if test $? -ne 0 ; then
341 extra_objects="$extra_objects itbl-parse.o"
344 echo ${extra_objects} | grep -s "itbl-lex-wrapper.o"
345 if test $? -ne 0 ; then
346 extra_objects="$extra_objects itbl-lex-wrapper.o"
349 echo ${extra_objects} | grep -s "itbl-ops.o"
350 if test $? -ne 0 ; then
351 extra_objects="$extra_objects itbl-ops.o"
360 if test $this_target = $target ; then
361 AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
366 echo ${extra_objects} | grep -s "rl78-parse.o"
367 if test $? -ne 0 ; then
368 extra_objects="$extra_objects rl78-parse.o"
373 echo ${extra_objects} | grep -s "rx-parse.o"
374 if test $? -ne 0 ; then
375 extra_objects="$extra_objects rx-parse.o"
388 echo ${extra_objects} | grep -s "xtensa-relax.o"
389 if test $? -ne 0 ; then
390 extra_objects="$extra_objects xtensa-relax.o"
398 if test $using_cgen = yes ; then
399 case "x${extra_objects}" in
401 *) extra_objects="$extra_objects cgen.o" ;;
405 # See if we really can support this configuration with the emulation code.
407 if test $this_target = $target ; then
413 vms) extra_objects="$extra_objects te-vms.o" ;;
416 # From target name and format, produce a list of supported emulations.
418 case ${generic_target}-${fmt} in
419 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
420 mips*-*-linux*-* | mips*-*-freebsd* | mips*-*-kfreebsd*-gnu)
422 big) emulation="mipsbelf mipslelf mipself" ;;
423 *) emulation="mipslelf mipsbelf mipself" ;;
425 mips-*-lnews*-ecoff) ;;
426 mips-*-*-ecoff) case "$endian" in
427 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
428 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
430 mips-*-*-elf) case "$endian" in
431 big) emulation="mipsbelf mipslelf mipself" ;;
432 *) emulation="mipslelf mipsbelf mipself" ;;
434 mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
435 # i386-pc-pe-coff != i386-pc-coff.
437 # Uncommenting the next line will turn on support for i386 AOUT
438 # for the default linux configuration
439 # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
441 i386-*-aout) emulation="i386aout" ;;
442 i386-*-coff) emulation="i386coff" ;;
443 i386-*-elf) emulation="i386elf" ;;
445 # Always all formats. The first stated emulation becomes the default.
446 cris-*-*aout*) emulation="crisaout criself" ;;
447 cris-*-*) emulation="criself crisaout" ;;
450 emulations="$emulations $emulation"
454 # Turn on all targets if possible
455 if test ${all_targets} = "yes"; then
456 case ${target_cpu_type} in
458 case ${obj_format} in
460 emulations="$emulations i386coff i386elf"
463 emulations="$emulations i386aout i386elf"
466 emulations="$emulations i386aout i386coff"
471 case ${obj_format} in
473 emulations="$emulations i386coff i386elf"
476 emulations="$emulations i386aout i386elf"
479 emulations="$emulations i386aout i386coff"
486 # PE code has way too many macros tweaking behaviour
488 pe*) emulations="" ;;
491 # Assign floating point type. Most processors with FP support
492 # IEEE FP. On those that don't support FP at all, usually IEEE
494 case ${target_cpu} in
495 vax | pdp11 ) atof=vax ;;
499 case "${obj_format}" in
500 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
503 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
505 if test $using_cgen = yes ; then
506 case ${target_cpu} in
507 *) cgen_cpu_prefix=${target_cpu} ;;
509 AC_SUBST(cgen_cpu_prefix)
510 AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
514 dnl Make sure the desired support files exist.
517 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
518 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
521 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
522 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
525 # Some COFF configurations want these random other flags set.
526 case ${obj_format} in
528 case ${target_cpu_type} in
529 i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
530 m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
531 m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
532 x86_64) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
537 # Getting this done right is going to be a bitch. Each configuration specified
538 # with --enable-targets=... should be checked for environment, format, cpu
541 # For each configuration, the necessary object file support code must be linked
542 # in. This might be only one, it might be up to four. The necessary emulation
543 # code needs to be provided, too.
545 # And then there's "--enable-targets=all"....
547 # For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
549 formats="${obj_format}"
553 for em in . $emulations ; do
556 mipsbelf | mipslelf | mipself)
557 fmt=elf file=mipself ;;
558 mipsbecoff | mipslecoff | mipsecoff)
559 fmt=ecoff file=mipsecoff ;;
567 formats="$formats $fmt"
568 emfiles="$emfiles e-$file.o"
569 EMULATIONS="$EMULATIONS &$em,"
573 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
574 for fmt in $formats ; do
576 aout) AC_DEFINE(OBJ_MAYBE_AOUT, 1, [a.out support?]) ;;
577 bout) AC_DEFINE(OBJ_MAYBE_BOUT, 1, [b.out support?]) ;;
578 coff) AC_DEFINE(OBJ_MAYBE_COFF, 1, [COFF support?]) ;;
579 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF, 1, [ECOFF support?]) ;;
580 elf) AC_DEFINE(OBJ_MAYBE_ELF, 1, [ELF support?]) ;;
581 generic) AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
582 som) AC_DEFINE(OBJ_MAYBE_SOM, 1, [SOM support?]) ;;
584 extra_objects="$extra_objects obj-$fmt.o"
588 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
589 DEFAULT_EMULATION=`set . $emulations ; echo $2`
590 # e-mips* has more than one emulation per file, e-i386* has just one at the
591 # moment. If only one emulation is specified, then don't define
592 # USE_EMULATIONS or include any of the e-files as they will only be bloat.
593 case "${obj_format}${emfiles}" in
595 extra_objects="$extra_objects $emfiles"
596 AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
599 AC_SUBST(extra_objects)
600 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
601 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
602 [Default emulation.])
604 reject_dev_configs=yes
606 case ${reject_dev_configs}-${dev} in
608 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
612 AC_SUBST(target_cpu_type)
615 AC_SUBST(install_tooldir)
617 dnl AC_SUBST(emulation)
619 # do we need the opcodes library?
620 case "${need_opcodes}" in
622 OPCODES_LIB=../opcodes/libopcodes.la
626 AC_SUBST(OPCODES_LIB)
628 AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}", [Target alias.])
629 AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}", [Canonical target.])
630 AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}", [Target CPU.])
631 AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}", [Target vendor.])
632 AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}", [Target OS.])
637 ALL_LINGUAS="fr tr es rw id ru fi ja"
638 ZW_GNU_GETTEXT_SISTER_DIR
642 AM_CONDITIONAL(GENINSRC_NEVER, false)
645 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h errno.h sys/types.h limits.h locale.h time.h sys/stat.h)
648 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
649 # people who are not cross-compiling but are compiling cross-assemblers.
650 AC_MSG_CHECKING(whether compiling a cross-assembler)
651 if test "${host}" = "${target}"; then
655 AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
657 AC_MSG_RESULT($cross_gas)
659 dnl ansidecl.h will deal with const
664 # VMS doesn't have unlink.
665 AC_CHECK_FUNCS(unlink remove, break)
666 AC_CHECK_FUNCS(sbrk setlocale)
670 # do we need the math library?
671 case "${need_libm}" in
678 # Some non-ANSI preprocessors botch requoting inside strings. That's bad
679 # enough, but on some of those systems, the assert macro relies on requoting
683 # On some systems, the system header files may not declare malloc, realloc,
684 # and free. There are places where gas needs these functions to have been
685 # declared -- such as when taking their addresses.
693 #ifdef HAVE_STRINGS_H
705 # Does errno.h declare errno, or do we have to add a separate declaration
707 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
713 AC_MSG_CHECKING(for a known getopt prototype in unistd.h)
714 AC_CACHE_VAL(gas_cv_decl_getopt_unistd_h,
715 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])],
716 gas_cv_decl_getopt_unistd_h=yes, gas_cv_decl_getopt_unistd_h=no)])
717 AC_MSG_RESULT($gas_cv_decl_getopt_unistd_h)
718 if test $gas_cv_decl_getopt_unistd_h = yes; then
719 AC_DEFINE([HAVE_DECL_GETOPT], 1,
720 [Is the prototype for getopt in <unistd.h> in the expected format?])
723 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
724 GAS_CHECK_DECL_NEEDED(ffs, f, int (*f)(int), $gas_test_headers)
725 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
726 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
727 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
728 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
730 AC_CHECK_DECLS([free, getenv, malloc, mempcpy, realloc, stpcpy, strstr, vsnprintf])
734 # Link in zlib if we can. This allows us to write compressed debug sections.
737 # Support for VMS timestamps via cross compile
739 if test "$ac_cv_header_time_h" = yes; then
740 GAS_HAVE_TIME_TYPE_MEMBER(struct tm, tm_gmtoff)
743 if test "$ac_cv_header_sys_stat_h" = yes; then
744 GAS_HAVE_SYS_STAT_TYPE_MEMBER(struct stat, st_mtim, tv_sec)
745 GAS_HAVE_SYS_STAT_TYPE_MEMBER(struct stat, st_mtim, tv_nsec)
749 dnl Required for html, pdf, install-pdf and install-html targets.
750 AC_SUBST(datarootdir)
755 dnl This must come last.
757 dnl We used to make symlinks to files in the source directory, but now
758 dnl we just use the right name for .c files, and create .h files in
759 dnl the build directory which include the right .h file. Make sure
760 dnl the old symlinks don't exist, so that a reconfigure in an existing
761 dnl directory behaves reasonably.
763 AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in)
764 AC_CONFIG_COMMANDS([default],
765 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
766 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
767 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
768 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
769 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
770 if test "x$cgen_cpu_prefix" != x ; then
771 echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
773 [target_cpu_type=${target_cpu_type}
774 cgen_cpu_prefix=${cgen_cpu_prefix}
775 obj_format=${obj_format}