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
11 dnl Autoconf 2.57 will find the aux dir without this. However, unless
12 dnl we specify this explicitly, automake-1.7 will assume that ylwrap is in
13 dnl gas/ instead of gas/../.
19 BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ ]*\([^ ]*\)[ ]*).*/\1/p' < ${srcdir}/../bfd/configure.in`
21 AM_INIT_AUTOMAKE(gas, ${BFD_VERSION})
25 AC_ARG_ENABLE(targets,
26 [ --enable-targets alternative target configurations besides the primary],
27 [case "${enableval}" in
28 yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
30 no) enable_targets= ;;
31 *) enable_targets=$enableval ;;
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]) ;;
45 # Generate a header file
46 AM_CONFIG_HEADER(config.h:config.in)
48 # If we are on a DOS filesystem, we must use gdb.ini rather than
51 *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*)
53 AC_CONFIG_FILES(gdb.ini:gdbinit.in)
57 AC_CONFIG_FILES(.gdbinit:gdbinit.in)
62 #We need this for the host. BOUT header is in host order.
67 # Makefile target for installing gas in $(tooldir)/bin.
68 install_tooldir=install-exec-tooldir
72 if test -n "$enable_targets" ; then
73 for t in `echo $enable_targets | sed 's/,/ /g'`; do
74 if test $t = "all"; then
78 result=`$ac_config_sub $t 2>/dev/null`
79 if test -n "$result" ; then
80 canon_targets="$canon_targets $result"
82 # # Permit "all", etc. We don't support it yet though.
83 # canon_targets="$canon_targets $t"
86 GAS_UNIQ(canon_targets)
91 for this_target in $target $canon_targets ; do
94 . ${srcdir}/configure.tgt
98 AC_DEFINE_UNQUOTED(DEFAULT_CRIS_ARCH, $arch,
99 [Default CRIS architecture.])
103 if test ${this_target} = $target ; then
104 target_cpu_type=${cpu_type}
105 elif test ${target_cpu_type} != ${cpu_type} ; then
109 generic_target=${cpu_type}-${target_vendor}-${target_os}
110 case ${generic_target} in
112 if test ${this_target} = $target; then
113 AC_DEFINE(SCO_ELF, 1, [Define if defaulting to ELF on SCO 5.])
120 AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
124 AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress)
130 AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.)
134 AC_DEFINE(AIX_WEAK_SUPPORT, 1,
135 [Define if using AIX 5.2 value for C_WEAKEXT.])
140 *) AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
144 if test ${this_target} = $target; then
145 AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
146 [Define if default target is PowerPC Solaris.])
148 if test x${endian} = xbig; then
149 AC_MSG_ERROR(Solaris must be configured little endian)
154 AC_DEFINE(TARGET_SYMBIAN, 1, [Define if target is Symbian OS.])
158 if test ${this_target} = $target ; then
160 if test x${endian} = xbig; then
162 elif test x${endian} = xlittle; then
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.])
171 # Other random stuff.
175 # Set mips_cpu to the name of the default CPU.
176 case ${target_cpu} in
177 mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el)
180 mipsisa32 | mipsisa32el)
183 mipsisa32r2 | mipsisa32r2el)
186 mipsisa64 | mipsisa64el)
189 mipsisa64r2 | mipsisa64r2el)
192 mipstx39 | mipstx39el)
195 mips64vr | mips64vrel)
198 mipsisa32r2* | mipsisa64r2*)
200 mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'`
203 mips64* | mipsisa64* | mipsisa32*)
205 mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'`
209 AC_ERROR($target_cpu isn't a supported MIPS CPU name)
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.
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.
226 mips64*-*-* | mipsisa64*-*-*)
233 # Decide which ABI to target by default.
235 mips64*-linux* | mips-sgi-irix6*)
236 mips_default_abi=N32_ABI
239 mips_default_abi=O32_ABI
242 mips_default_abi=N64_ABI
245 mips_default_abi=NO_ABI
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. ])
254 AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi,
255 [Choose a default ABI for MIPS targets. ])
259 # Do we need the opcodes library?
267 case "${enable_shared}" in
268 yes) shared_opcodes=true ;;
269 *opcodes*) shared_opcodes=true ;;
270 *) shared_opcodes=false ;;
275 # Any other special object files needed ?
279 echo ${extra_objects} | grep -s "bfin-parse.o"
280 if test $? -ne 0 ; then
281 extra_objects="$extra_objects bfin-parse.o"
284 echo ${extra_objects} | grep -s "bfin-lex.o"
285 if test $? -ne 0 ; then
286 extra_objects="$extra_objects bfin-lex.o"
290 fr30 | ip2k | iq2000 | m32r | openrisc)
301 case ${extra_objects} in
303 *) extra_objects="$extra_objects m68k-parse.o" ;;
312 echo ${extra_objects} | grep -s "itbl-parse.o"
313 if test $? -ne 0 ; then
314 extra_objects="$extra_objects itbl-parse.o"
317 echo ${extra_objects} | grep -s "itbl-lex.o"
318 if test $? -ne 0 ; then
319 extra_objects="$extra_objects itbl-lex.o"
322 echo ${extra_objects} | grep -s "itbl-ops.o"
323 if test $? -ne 0 ; then
324 extra_objects="$extra_objects itbl-ops.o"
333 if test $this_target = $target ; then
334 AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
347 echo ${extra_objects} | grep -s "xtensa-relax.o"
348 if test $? -ne 0 ; then
349 extra_objects="$extra_objects xtensa-relax.o"
357 if test $using_cgen = yes ; then
358 case "x${extra_objects}" in
360 *) extra_objects="$extra_objects cgen.o" ;;
364 # See if we really can support this configuration with the emulation code.
366 if test $this_target = $target ; then
371 # From target name and format, produce a list of supported emulations.
373 case ${generic_target}-${fmt} in
374 mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
375 mips*-*-linux*-*) case "$endian" in
376 big) emulation="mipsbelf mipslelf mipself" ;;
377 *) emulation="mipslelf mipsbelf mipself" ;;
379 mips-*-lnews*-ecoff) ;;
380 mips-*-*-ecoff) case "$endian" in
381 big) emulation="mipsbecoff mipslecoff mipsecoff" ;;
382 *) emulation="mipslecoff mipsbecoff mipsecoff" ;;
384 mips-*-*-elf) case "$endian" in
385 big) emulation="mipsbelf mipslelf mipself" ;;
386 *) emulation="mipslelf mipsbelf mipself" ;;
388 mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
389 # i386-pc-pe-coff != i386-pc-coff.
391 # Uncommenting the next line will turn on support for i386 AOUT
392 # for the default linux configuration
393 # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
395 i386-*-aout) emulation="i386aout" ;;
396 i386-*-coff) emulation="i386coff" ;;
397 i386-*-elf) emulation="i386elf" ;;
399 # Always all formats. The first stated emulation becomes the default.
400 cris-*-*aout*) emulation="crisaout criself" ;;
401 cris-*-*) emulation="criself crisaout" ;;
404 emulations="$emulations $emulation"
408 # Turn on all targets if possible
409 if test ${all_targets} = "yes"; then
410 case ${target_cpu_type} in
412 case ${obj_format} in
414 emulations="$emulations i386coff i386elf"
417 emulations="$emulations i386aout i386elf"
420 emulations="$emulations i386aout i386coff"
425 case ${obj_format} in
427 emulations="$emulations i386coff i386elf"
430 emulations="$emulations i386aout i386elf"
433 emulations="$emulations i386aout i386coff"
440 # Assign floating point type. Most processors with FP support
441 # IEEE FP. On those that don't support FP at all, usually IEEE
443 case ${target_cpu} in
444 vax | pdp11 ) atof=vax ;;
448 case "${obj_format}" in
449 "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
452 # Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
454 if test $using_cgen = yes ; then
455 case ${target_cpu} in
456 *) cgen_cpu_prefix=${target_cpu} ;;
458 AC_SUBST(cgen_cpu_prefix)
459 AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
463 dnl Make sure the desired support files exist.
466 if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
467 AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
470 if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
471 AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
474 # Some COFF configurations want these random other flags set.
475 case ${obj_format} in
477 case ${target_cpu_type} in
478 i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
479 m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
480 m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
481 x86_64) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
486 # Getting this done right is going to be a bitch. Each configuration specified
487 # with --enable-targets=... should be checked for environment, format, cpu
490 # For each configuration, the necessary object file support code must be linked
491 # in. This might be only one, it might be up to four. The necessary emulation
492 # code needs to be provided, too.
494 # And then there's "--enable-targets=all"....
496 # For now, just always do it for MIPS ELF or ECOFF configurations. Sigh.
498 formats="${obj_format}"
502 for em in . $emulations ; do
505 mipsbelf | mipslelf | mipself)
506 fmt=elf file=mipself ;;
507 mipsbecoff | mipslecoff | mipsecoff)
508 fmt=ecoff file=mipsecoff ;;
516 formats="$formats $fmt"
517 emfiles="$emfiles e-$file.o"
518 EMULATIONS="$EMULATIONS &$em,"
522 if test `set . $formats ; shift ; echo $#` -gt 1 ; then
523 for fmt in $formats ; do
525 aout) AC_DEFINE(OBJ_MAYBE_AOUT, 1, [a.out support?]) ;;
526 bout) AC_DEFINE(OBJ_MAYBE_BOUT, 1, [b.out support?]) ;;
527 coff) AC_DEFINE(OBJ_MAYBE_COFF, 1, [COFF support?]) ;;
528 ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF, 1, [ECOFF support?]) ;;
529 elf) AC_DEFINE(OBJ_MAYBE_ELF, 1, [ELF support?]) ;;
530 generic) AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
531 som) AC_DEFINE(OBJ_MAYBE_SOM, 1, [SOM support?]) ;;
533 extra_objects="$extra_objects obj-$fmt.o"
537 if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
538 DEFAULT_EMULATION=`set . $emulations ; echo $2`
539 # e-mips* has more than one emulation per file, e-i386* has just one at the
540 # moment. If only one emulation is specified, then don't define
541 # USE_EMULATIONS or include any of the e-files as they will only be bloat.
542 case "${obj_format}${emfiles}" in
544 extra_objects="$extra_objects $emfiles"
545 AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
548 AC_SUBST(extra_objects)
549 AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
550 AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
551 [Default emulation.])
553 reject_dev_configs=yes
555 case ${reject_dev_configs}-${dev} in
557 AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
561 AC_SUBST(target_cpu_type)
564 AC_SUBST(install_tooldir)
566 dnl AC_SUBST(emulation)
568 # do we need the opcodes library?
569 case "${need_opcodes}" in
571 OPCODES_LIB=../opcodes/libopcodes.la
575 AC_SUBST(OPCODES_LIB)
577 AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}", [Target alias.])
578 AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}", [Canonical target.])
579 AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}", [Target CPU.])
580 AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}", [Target vendor.])
581 AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}", [Target OS.])
588 ALL_LINGUAS="fr tr es rw"
589 ZW_GNU_GETTEXT_SISTER_DIR
593 AM_CONDITIONAL(GENINSRC_NEVER, false)
596 AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
598 # Put this here so that autoconf's "cross-compiling" message doesn't confuse
599 # people who are not cross-compiling but are compiling cross-assemblers.
600 AC_MSG_CHECKING(whether compiling a cross-assembler)
601 if test "${host}" = "${target}"; then
605 AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
607 AC_MSG_RESULT($cross_gas)
609 dnl ansidecl.h will deal with const
614 # VMS doesn't have unlink.
615 AC_CHECK_FUNCS(unlink remove, break)
617 # Some systems don't have sbrk().
620 # do we need the math library?
621 case "${need_libm}" in
628 # Some non-ANSI preprocessors botch requoting inside strings. That's bad
629 # enough, but on some of those systems, the assert macro relies on requoting
633 # On some systems, the system header files may not declare malloc, realloc,
634 # and free. There are places where gas needs these functions to have been
635 # declared -- such as when taking their addresses.
643 #ifdef HAVE_STRINGS_H
655 # Does errno.h declare errno, or do we have to add a separate declaration
657 GAS_CHECK_DECL_NEEDED(errno, f, int f, [
663 AC_MSG_CHECKING(for a known getopt prototype in unistd.h)
664 AC_CACHE_VAL(gas_cv_decl_getopt_unistd_h,
665 [AC_TRY_COMPILE([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);],
666 gas_cv_decl_getopt_unistd_h=yes, gas_cv_decl_getopt_unistd_h=no)])
667 AC_MSG_RESULT($gas_cv_decl_getopt_unistd_h)
668 if test $gas_cv_decl_getopt_unistd_h = yes; then
669 AC_DEFINE([HAVE_DECL_GETOPT], 1,
670 [Is the prototype for getopt in <unistd.h> in the expected format?])
673 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
674 GAS_CHECK_DECL_NEEDED(ffs, f, int (*f)(int), $gas_test_headers)
675 GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
676 GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
677 GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
678 GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
680 AC_CHECK_DECLS([vsnprintf])
684 dnl Required for html and install-html targets.
685 AC_SUBST(datarootdir)
689 dnl This must come last.
691 dnl We used to make symlinks to files in the source directory, but now
692 dnl we just use the right name for .c files, and create .h files in
693 dnl the build directory which include the right .h file. Make sure
694 dnl the old symlinks don't exist, so that a reconfigure in an existing
695 dnl directory behaves reasonably.
697 AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in)
698 AC_CONFIG_COMMANDS([default],
699 [rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
700 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
701 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
702 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
703 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
704 if test "x$cgen_cpu_prefix" != x ; then
705 echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
707 [target_cpu_type=${target_cpu_type}
708 cgen_cpu_prefix=${cgen_cpu_prefix}
709 obj_format=${obj_format}