dnl Process this file with autoconf to produce a configure script. dnl dnl And be careful when changing it! If you must add tests with square dnl brackets, be sure changequote invocations surround it. dnl dnl Remember to use "dnl" in each line before the AC_INIT call... dnl dnl AC_INIT(as.h) dnl bfd_gas=no AC_ARG_ENABLE(bfd-assembler, [ bfd-assembler use BFD back end for writing object files], [case "${enableval}" in yes) need_bfd=yes bfd_gas=yes ;; no) ;; *) AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;; esac])dnl # Generate a header file -- gets more post-processing by Makefile later. AC_CONFIG_HEADER(conf) dnl For recursion to work right, this must be an absolute pathname. AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..) AC_CANONICAL_SYSTEM emulation=generic # assign cpu type # check for architecture variants case ${target_cpu} in hppa*) cpu_type=hppa ;; changequote(,)dnl i[45]86) cpu_type=i386 ;; m680[012346]0) cpu_type=m68k ;; m68008) cpu_type=m68k ;; m683??) cpu_type=m68k ;; changequote([,])dnl m8*) cpu_type=m88k ;; mips*el) cpu_type=mips endian=little;; mips*) cpu_type=mips endian=big ;; powerpc*) cpu_type=ppc ;; rs6000*) cpu_type=ppc ;; sparc64) cpu_type=sparc obj_format=elf AC_DEFINE(sparcv9) ;; sparclite*) cpu_type=sparc ;; *) cpu_type=${target_cpu} ;; esac # do we need the opcodes library? case ${cpu_type} in alpha | vax) ;; *) OPCODES_LIB="../opcodes/libopcodes.a" ;; esac AC_SUBST(OPCODES_LIB) gas_target=${cpu_type} generic_target=${cpu_type}-${target_vendor}-${target_os} dev=no # assign object format case ${generic_target} in a29k-amd-udi) obj_format=coff gas_target=ebmon29k ;; a29k-amd-ebmon) obj_format=coff gas_target=ebmon29k ;; alpha-*-netware*) obj_format=ecoff ;; alpha-*-osf*) obj_format=ecoff ;; hppa-*-*elf*) obj_format=elf emulation=hppa ;; hppa-*-osf*) obj_format=som emulation=hppa ;; hppa-*-hpux*) obj_format=som emulation=hppa ;; hppa-*-bsd*) obj_format=som emulation=hppa ;; hppa-*-hiux*) obj_format=som emulation=hppa ;; h8300-*-coff) obj_format=coff ;; i386-ibm-aix*) obj_format=coff gas_target=i386coff emulation=i386aix ;; i386-*-bsd*) obj_format=aout emulation=386bsd ;; i386-*-netbsd0.8) obj_format=aout emulation=386bsd ;; i386-*-netbsd*) obj_format=aout emulation=netbsd ;; i386-*-linux*elf*) obj_format=elf emulation=linux ;; i386-*-linux*coff*) obj_format=coff emulation=linux gas_target=i386coff ;; i386-*-linux*) obj_format=aout emulation=linux ;; i386-*-lynxos*) obj_format=coff gas_target=i386coff emulation=lynx ;; i386-*-sysv4* | i386-*-solaris* | i386-*-elf) obj_format=elf ;; i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*) obj_format=coff gas_target=i386coff ;; i386-*-vsta) obj_format=aout ;; i386-*-go32) obj_format=coff gas_target=i386coff ;; i386-*-mach* | i386-*-gnu*) obj_format=aout emulation=mach bfd_gas=yes ;; i960-*-bout) obj_format=bout ;; i960-*-coff) obj_format=coff emulation=ic960 gas_target=ic960coff ;; i960-*-nindy*) obj_format=bout ;; i960-*-vxworks4*) obj_format=bout ;; i960-*-vxworks5.0) obj_format=bout ;; i960-*-vxworks5.*) obj_format=coff emulation=ic960 gas_target=ic960coff ;; i960-*-vxworks*) obj_format=bout ;; m68k-wrs-vxworks | m68k-ericsson-ose | m68k-*-sunos*) obj_format=aout emulation=sun3 ;; m68k-motorola-sysv) obj_format=coff gas_target=m68kcoff emulation=delta ;; m68k-bull-sysv3*) obj_format=coff gas_target=m68kcoff emulation=dpx2 ;; m68k-apollo-*) obj_format=coff gas_target=apollo emulation=apollo ;; m68k-*-coff | m68k-*-sysv*) obj_format=coff gas_target=m68kcoff ;; m68k-*-hpux) obj_format=hp300 emulation=hp300 ;; m68k-*-lynxos*) obj_format=coff gas_target=m68kcoff emulation=lynx ;; m88k-*-coff*) obj_format=coff gas_target=m88kcoff ;; # don't change emulation like *-*-bsd does mips-*-bsd*) bfd_gas=yes obj_format=aout gas_target=mips-lit ;; mips-*-ultrix*) obj_format=ecoff gas_target=mips-lit ;; mips-*-ecoff*) obj_format=ecoff case "$endian" in big) gas_target=mips-big ;; *) gas_target=mips-lit ;; esac ;; mips-*-ecoff*) obj_format=ecoff gas_target=mips-big ;; mips-*-irix5*) obj_format=elf gas_target=mips-big ;; mips-*-irix*) obj_format=ecoff gas_target=mips-big ;; mips-*-riscos*) obj_format=ecoff gas_target=mips-big ;; mips-*-sysv*) obj_format=ecoff gas_target=mips-big ;; mips-*-elf*) obj_format=elf case "$endian" in big) gas_target=mips-big ;; *) gas_target=mips-lit ;; esac ;; ppc-*-aix*) obj_format=coff bfd_gas=yes ;; ppc-*-elf*) obj_format=elf bfd_gas=yes ;; ppc-*-netware*) obj_format=elf emulation=ppcnw ;; ppc-*-sysv4*) obj_format=elf bfd_gas=yes ;; sh-*-coff) obj_format=coff ;; ns32k-pc532-mach*) obj_format=aout emulation=pc532 bfd_gas=yes ;; ns32k-pc532-netbsd*) obj_format=aout emulation=netbsd532 bfd_gas=yes ;; sparc*-*-sunos4*) obj_format=aout emulation=sun3 bfd_gas=yes ;; sparc*-*-aout | sparc*-*-vxworks) obj_format=aout bfd_gas=yes ;; sparc*-*-coff) obj_format=coff bfd_gas=yes ;; sparc*-*-lynxos*) obj_format=coff bfd_gas=yes emulation=lynx ;; sparc*-fujitsu-none) obj_format=aout bfd_gas=yes ;; sparc*-*-elf | sparc*-*-solaris*) obj_format=elf ;; vax-*-bsd* | vax-*-ultrix*) obj_format=aout ;; vax-*-vms) obj_format=vms ;; z8k-*-coff | z8k-*-sim) obj_format=coff ;; *-*-aout | *-*-scout) obj_format=aout ;; *-*-nindy*) obj_format=bout ;; *-*-bsd*) obj_format=aout emulation=sun3 ;; *-*-generic) obj_format=generic ;; *-*-xray | *-*-hms) obj_format=coff ;; *-*-sim) obj_format=coff ;; *-*-elf | *-*-sysv4* | *-*-solaris*) AC_MSG_WARN(GAS support for ELF format is incomplete) obj_format=elf dev=yes ;; *-*-vxworks) obj_format=aout ;; *-*-netware) obj_format=elf ;; esac # Assign floating point type. Most processors with FP support # IEEE FP. On those that don't support FP at all, usually IEEE # is emulated. case ${target_cpu} in vax | tahoe ) atof=${target_cpu} ;; *) atof=ieee ;; esac case "${obj_format}" in "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;; esac dnl dnl Make sure the desired support files exist. dnl changequote(<<<,>>>)dnl if [ ! -r ${srcdir}/config/tc-${cpu_type}.c ]; then AC_MSG_ERROR(GAS does not support target CPU ${cpu_type}) fi if [ ! -r ${srcdir}/config/obj-${obj_format}.c ]; then AC_MSG_ERROR(GAS does not have support for object file format ${obj_format}) fi changequote([,])dnl # and target makefile frag target_frag=${srcdir}/config/${gas_target}.mt AC_SUBST_FILE(target_frag) case ${bfd_gas}-${obj_format} in yes-coff) need_bfd=yes ;; no-coff) need_bfd=yes AC_DEFINE(MANY_SEGMENTS) ;; *-elf) bfd_gas=yes ;; *-ecoff) bfd_gas=yes ;; *-som) bfd_gas=yes ;; *) ;; esac case ${with_bfd_assembler}-${bfd_gas} in yes-yes | no-no) # We didn't override user's choice. ;; no-yes) AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.) ;; no-preferred) bfd_gas=no ;; *-preferred) bfd_gas=yes ;; -*) # User specified nothing. ;; esac reject_dev_configs=yes case ${reject_dev_configs}-${dev} in yes-yes) # Oops. AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.) ;; esac dnl Looks like the AC_MAKE_LINKS string is taken literally and put into the dnl config.status file. So the necessary variables also have to be dnl exported. AC_SUBST(cpu_type) AC_SUBST(obj_format) AC_SUBST(emulation) AC_SUBST(atof) AC_LINK_FILES(targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c, config/tc-${cpu_type}.c config/tc-${cpu_type}.h \ config/obj-${obj_format}.h config/obj-${obj_format}.c \ config/te-${emulation}.h config/atof-${atof}.c) case "${bfd_gas}" in yes) AC_DEFINE(BFD_ASSEMBLER) need_bfd=yes ;; esac case "${need_bfd}" in yes) BFDLIB=../bfd/libbfd.a ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h" ;; esac AC_SUBST(BFDLIB) AC_SUBST(ALL_OBJ_DEPS) case "x${host_canon}" in x${target_canon}) ;; *) AC_DEFINE(CROSS_COMPILE);; esac AC_DEFINE_UNQUOTED(TARGET_ALIAS, "${target_alias}") AC_DEFINE_UNQUOTED(TARGET_CANONICAL, "${target}") AC_DEFINE_UNQUOTED(TARGET_CPU, "${target_cpu}") AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}") AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}") case ${host} in rs6000-*-*) # The IBM compiler mis-compiles some expressions used in gas. # This will tell gas to work around this lossage. AC_DEFINE(IBM_COMPILER_SUX) ;; i386-*-go32) # Using fopen(..., "w") for a binary file breaks under DOS. AC_DEFINE(WANT_FOPEN_BIN) ;; esac AC_PROG_CC AC_PROG_INSTALL AC_HEADER_STDC AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h) dnl ansidecl.h will deal with const dnl AC_CONST AC_FUNC_ALLOCA AC_C_INLINE # Some non-ANSI preprocessors botch requoting inside strings. That's bad # enough, but on some of those systems, the assert macro relies on requoting # working properly! AC_CHECKING([for working assert macro]) AC_TRY_LINK([#include #include ], [ /* check for requoting problems */ static int a, b, c, d; static char *s; assert (!strcmp(s, "foo bar baz quux")); /* check for newline handling */ assert (a == b || c == d); ], , AC_DEFINE(BROKEN_ASSERT)) # On some systems, the system header files may not declare malloc, realloc, # and free. There are places where gas needs these functions to have been # declared -- such as when taking their addresses. AC_CHECKING([whether malloc declaration is required]) AC_TRY_LINK([ #ifdef HAVE_MEMORY_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif ], [ char *(*f) (); f = (char *(*)()) malloc; ], , AC_DEFINE(NEED_MALLOC_DECLARATION)) AC_CHECKING([free declaration required]) AC_TRY_LINK([ #ifdef HAVE_MEMORY_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif ], [ int (*f) (); f = (int (*)()) free; ], , AC_DEFINE(NEED_FREE_DECLARATION)) # Does errno.h declare errno, or do we have to add a separate declaration # for it? AC_CHECKING([errno declaration required]) AC_TRY_LINK([ #ifdef HAVE_ERRNO_H #include #endif ], [ int x; x = errno; ], , AC_DEFINE(NEED_ERRNO_DECLARATION)) AC_CONFIG_SUBDIRS(testsuite) dnl This must come last. dnl Apparently symlinks are checked for in the directory containing dnl the last Makefile. Thus the order used here... AC_OUTPUT(doc/Makefile Makefile)