diff options
Diffstat (limited to 'contrib/binutils/gas/configure.in')
-rw-r--r-- | contrib/binutils/gas/configure.in | 815 |
1 files changed, 815 insertions, 0 deletions
diff --git a/contrib/binutils/gas/configure.in b/contrib/binutils/gas/configure.in new file mode 100644 index 0000000..81e1209 --- /dev/null +++ b/contrib/binutils/gas/configure.in @@ -0,0 +1,815 @@ +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 +AC_PREREQ(2.5)dnl v2.5 needed for --bindir et al +AC_INIT(as.h)dnl +dnl +user_bfd_gas= +AC_ARG_ENABLE(bfd-assembler, +[ --enable-bfd-assembler use BFD back end for writing object files], +[case "${enableval}" in + yes) need_bfd=yes user_bfd_gas=yes ;; + no) user_bfd_gas=no ;; + *) AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;; +esac])dnl +AC_ARG_ENABLE(targets, +[ targets alternative target configurations besides the primary], +[case "${enableval}" in + yes | "") AC_ERROR(enable-targets option must specify target names or 'all') + ;; + no) enable_targets= ;; + *) enable_targets=$enableval ;; +esac])dnl +AC_ARG_ENABLE(shared, +[ --enable-shared build shared BFD library], +[case "${enableval}" in + yes) shared=true shared_bfd=true shared_opcodes=true ;; + no) shared=false ;; + *bfd*opcodes*) shared=true shared_bfd=true shared_opcodes=true ;; + *opcodes*bfd*) shared=true shared_bfd=true shared_opcodes=true ;; + *bfd*) shared=true shared_bfd=true ;; + *opcodes*) shared=true shared_opcodes=true ;; + *) shared=false ;; +esac])dnl +AC_ARG_ENABLE(commonbfdlib, +[ --enable-commonbfdlib build shared BFD/opcodes/libiberty library], +[case "${enableval}" in + yes) commonbfdlib=true ;; + no) commonbfdlib=false ;; + *) AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib 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 +AC_ARG_PROGRAM + +te_file=generic + +canon_targets="" +if test -n "$enable_targets" ; then + for t in `echo $enable_targets | sed 's/,/ /g'`; do + result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $t 2>/dev/null` + if test -n "$result" ; then + canon_targets="$canon_targets $result" +# else +# # Permit "all", etc. We don't support it yet though. +# canon_targets="$canon_targets $t" + fi + done + GAS_UNIQ(canon_targets) +fi + +emulations="" + +for this_target in $target $canon_targets ; do + +changequote(,)dnl + eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'` +changequote([,])dnl + + # check for architecture variants + case ${cpu} in + armeb) cpu_type=arm endian=big ;; + arm*) cpu_type=arm endian=little ;; + hppa*) cpu_type=hppa ;; +changequote(,)dnl + i[456]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 ;; + powerpcle*) cpu_type=ppc endian=little ;; + powerpc*) cpu_type=ppc endian=big ;; + rs6000*) cpu_type=ppc ;; + sparc64) cpu_type=sparc want_sparc_v9=true ;; + sparc*) cpu_type=sparc ;; + *) cpu_type=${cpu} ;; + esac + + if test ${this_target} = $target ; then + target_cpu_type=${cpu_type} + elif test ${target_cpu_type} != ${cpu_type} ; then + continue + fi + + targ=${cpu_type} + generic_target=${cpu_type}-$vendor-$os + dev=no + bfd_gas=no + em=generic + + # assign object format + case ${generic_target} in + a29k-*-coff) fmt=coff targ=ebmon29k ;; + a29k-amd-udi) fmt=coff targ=ebmon29k ;; + a29k-amd-ebmon) fmt=coff targ=ebmon29k ;; + a29k-nyu-sym1) fmt=coff targ=ebmon29k ;; + a29k-*-vxworks*) fmt=coff ;; + + alpha-*-*vms*) fmt=evax ;; + alpha-*-netware*) fmt=ecoff ;; + alpha-*-openbsd*) fmt=ecoff ;; + alpha-*-osf*) fmt=ecoff ;; + alpha-*-linuxecoff*) fmt=ecoff ;; + alpha-*-linux*) fmt=elf em=linux ;; + + + arm-*-riscix*) fmt=aout targ=arm-lit em=riscix ;; + arm-*-aout) fmt=aout + case "$endian" in + big) targ=arm-big ;; + *) targ=arm-lit ;; + esac + ;; + arm-*-coff) fmt=coff ;; + arm-*-riscix*) fmt=aout ;; + arm-*-pe) fmt=coff targ=armcoff em=pe ;; + + d10v-*-*) fmt=elf bfd_gas=yes ;; + + hppa-*-*elf*) fmt=elf em=hppa ;; + hppa-*-lites*) fmt=elf em=hppa ;; + hppa-*-osf*) fmt=som em=hppa ;; + hppa-*-rtems*) fmt=elf em=hppa ;; + hppa-*-hpux*) fmt=som em=hppa ;; + hppa-*-bsd*) fmt=som em=hppa ;; + hppa-*-hiux*) fmt=som em=hppa ;; + + h8300-*-coff) fmt=coff ;; + + i386-ibm-aix*) fmt=coff targ=i386coff + em=i386aix ;; + i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;; + i386-*-bsd*) fmt=aout em=386bsd ;; + i386-*-netbsd0.8) fmt=aout em=386bsd ;; + i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; + i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; + i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;; + i386-*-linux*coff*) fmt=coff em=linux + targ=i386coff ;; + i386-*-linux*) fmt=elf em=linux ;; + i386-*-lynxos*) fmt=coff targ=i386coff + em=lynx ;; + i386-*-sysv4* | i386-*-solaris* | i386-*-elf | i386-*-freebsdelf*) + fmt=elf ;; + i386-*-sco*elf*) fmt=elf targ=sco5 ;; + i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*) + fmt=coff targ=i386coff ;; + i386-*-vsta) fmt=aout ;; + i386-*-go32) fmt=coff targ=i386coff ;; + i386-*-rtems*) fmt=coff targ=i386coff ;; + i386-*-gnu*) fmt=elf ;; + i386-*-mach*) + fmt=aout em=mach bfd_gas=yes ;; + i386-*-msdos*) fmt=aout ;; + i386-*-moss*) fmt=elf ;; + i386-*-pe) fmt=coff targ=i386coff em=pe ;; + i386-*-cygwin32) fmt=coff targ=i386coff em=pe ;; + i386-*-*nt) fmt=coff targ=i386coff em=pe ;; + i960-*-bout) fmt=bout ;; + i960-*-coff) fmt=coff em=ic960 targ=ic960coff ;; + i960-*-rtems*) fmt=coff em=ic960 targ=ic960coff ;; + i960-*-nindy*) fmt=bout ;; + i960-*-vxworks4*) fmt=bout ;; + i960-*-vxworks5.0) fmt=bout ;; + i960-*-vxworks5.*) fmt=coff em=ic960 targ=ic960coff ;; + i960-*-vxworks*) fmt=bout ;; + + m32r-*-*) fmt=elf bfd_gas=yes ;; + + m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*) + fmt=aout em=sun3 ;; + m68k-motorola-sysv*) fmt=coff targ=m68kcoff em=delta ;; + m68k-bull-sysv3*) fmt=coff targ=m68kcoff em=dpx2 ;; + m68k-apollo-*) fmt=coff targ=apollo em=apollo ;; + m68k-*-sysv4*) # must be before -sysv* + fmt=elf em=svr4 ;; + m68k-*-elf*) fmt=elf ;; + m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*) + fmt=coff targ=m68kcoff ;; + m68k-*-hpux*) fmt=hp300 em=hp300 ;; + m68k-*-linux*aout*) fmt=aout em=linux ;; + m68k-*-linux*) fmt=elf em=linux ;; + m68k-*-lynxos*) fmt=coff targ=m68kcoff + em=lynx ;; + m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + m68k-apple-aux*) fmt=coff targ=m68kcoff em=aux ;; + m68k-*-psos*) fmt=elf em=psos;; + + m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delt88 ;; + m88k-*-coff*) fmt=coff targ=m88kcoff ;; + + # don't change em like *-*-bsd does + mips-dec-netbsd*) fmt=elf targ=mips-lit endian=little ;; + mips-dec-openbsd*) fmt=elf targ=mips-lit endian=little ;; + mips-dec-bsd*) fmt=aout targ=mips-lit ;; + mips-sony-bsd*) fmt=ecoff targ=mips-big ;; + mips-*-bsd*) AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;; + mips-*-ultrix*) fmt=ecoff targ=mips-lit endian=little ;; + mips-*-osf*) fmt=ecoff targ=mips-lit endian=little ;; + mips-*-ecoff*) fmt=ecoff + case "$endian" in + big) targ=mips-big ;; + *) targ=mips-lit ;; + esac + ;; + mips-*-ecoff*) fmt=ecoff targ=mips-big ;; + mips-*-irix6*) fmt=elf targ=mips-big ;; + mips-*-irix5*) fmt=elf targ=mips-big ;; + mips-*-irix*) fmt=ecoff targ=mips-big ;; + mips-*-lnews*) fmt=ecoff targ=mips-lit em=lnews ;; + mips-*-riscos*) fmt=ecoff targ=mips-big ;; + mips-*-sysv*) fmt=ecoff targ=mips-big ;; + mips-*-elf* | mips-*-rtems* | mips-*-linux* | mips-*-gnu* | mips-*-openbsd*) + fmt=elf + case "$endian" in + big) targ=mips-big ;; + *) targ=mips-lit ;; + esac + ;; + mn10200-*-*) fmt=elf bfd_gas=yes ;; + mn10300-*-*) fmt=elf bfd_gas=yes ;; + ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*) + fmt=coff em=pe + case "$endian" in + big) targ=ppc-big ;; + *) targ=ppc-lit ;; + esac + ;; + ppc-*-aix*) fmt=coff ;; + ppc-*-beos*) fmt=coff ;; + ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*) + fmt=elf + case "$endian" in + big) targ=ppc-big ;; + *) targ=ppc-lit ;; + esac + ;; + ppc-*-linux*) fmt=elf + case "$endian" in + big) targ=ppc-big ;; + *) AC_MSG_ERROR(Linux must be configured big endian) ;; + esac + ;; + ppc-*-solaris*) fmt=elf + case "$endian" in + big) AC_MSG_ERROR(Solaris must be configured little endian) ;; + *) targ=ppc-sol ;; + esac + ;; + ppc-*-rtems*) + fmt=elf + case "$endian" in + big) targ=ppc-big ;; + *) targ=ppc-lit ;; + esac + ;; + ppc-*-macos* | ppc-*-mpw*) + fmt=coff em=macos ;; + ppc-*-netware*) fmt=elf em=ppcnw ;; + + sh-*-elf*) fmt=elf ;; + sh-*-coff*) fmt=coff ;; + + ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;; + ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;; + ns32k-pc532-openbsd*) fmt=aout em=nbsd532 ;; + + sparc-*-rtems*) fmt=aout ;; + sparc-*-sunos4*) fmt=aout em=sun3 ;; + sparc-*-aout | sparc*-*-vxworks*) + fmt=aout em=sparcaout ;; + sparc-*-coff) fmt=coff ;; + sparc-*-linux*aout*) fmt=aout em=linux ;; + sparc-*-linux*) fmt=elf em=linux ;; + sparc-*-lynxos*) fmt=coff em=lynx ;; + sparc-fujitsu-none) fmt=aout ;; + sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*) + fmt=elf ;; + sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + sparc-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + + vax-*-bsd* | vax-*-ultrix*) + fmt=aout ;; + vax-*-vms) fmt=vms ;; + + z8k-*-coff | z8k-*-sim) + fmt=coff ;; + + w65-*-*) fmt=coff ;; + + *-*-aout | *-*-scout) + fmt=aout ;; + *-*-nindy*) + fmt=bout ;; + *-*-bsd*) + fmt=aout em=sun3 ;; + *-*-generic) fmt=generic ;; + *-*-xray | *-*-hms) fmt=coff ;; + *-*-sim) fmt=coff ;; + *-*-elf | *-*-sysv4* | *-*-solaris*) + AC_MSG_WARN(GAS support for ${generic_target} is incomplete.) + fmt=elf dev=yes ;; + *-*-vxworks) fmt=aout ;; + *-*-netware) fmt=elf ;; + esac + + case ${cpu_type}-${fmt} in + alpha-*) bfd_gas=yes ;; + arm-*) bfd_gas=yes ;; + # not yet + # i386-aout) bfd_gas=preferred ;; + mips-*) bfd_gas=yes ;; + ns32k-*) bfd_gas=yes ;; + ppc-*) bfd_gas=yes ;; + sparc-*) bfd_gas=yes ;; + *-elf) bfd_gas=yes ;; + *-ecoff) bfd_gas=yes ;; + *-som) bfd_gas=yes ;; + *) ;; + esac + +# Other random stuff. + + # do we need the opcodes library? + case ${cpu_type} in + vax | i386) + ;; + *) + need_opcodes=yes + if test "${shared_opcodes}" = "true"; then + # A shared libopcodes must be linked against libbfd. + need_bfd=yes + fi + ;; + esac + + test -n "$want_sparc_v9" && AC_DEFINE(SPARC_V9) + + case ${cpu}-${vendor}-${os} in + sparc64-*-elf*) AC_DEFINE(SPARC_ARCH64) ;; + esac + + case ${cpu_type} in + m32r) + case ${extra_objects} in + *cgen.o*) ;; + *) extra_objects="$extra_objects cgen.o" + AC_DEFINE(USING_CGEN) + ;; + esac + ;; + + m68k) + case ${extra_objects} in + *m68k-parse.o*) ;; + *) extra_objects="$extra_objects m68k-parse.o" ;; + esac + ;; + + mips) + echo ${extra_objects} | grep -s "itbl-parse.o" + if test $? -ne 0 ; then + extra_objects="$extra_objects itbl-parse.o" + fi + + echo ${extra_objects} | grep -s "itbl-lex.o" + if test $? -ne 0 ; then + extra_objects="$extra_objects itbl-lex.o" + fi + + echo ${extra_objects} | grep -s "itbl-ops.o" + if test $? -ne 0 ; then + extra_objects="$extra_objects itbl-ops.o" + fi + ;; + + *) + ;; + esac + +# See if we really can support this configuration with the emulation code. + + if test $this_target = $target ; then + primary_bfd_gas=$bfd_gas + obj_format=$fmt + gas_target=$targ + te_file=$em + + if test $bfd_gas = no ; then + # Can't support other configurations this way. + break + fi + elif test $bfd_gas = no ; then + # Can't support this configuration. + break + fi + +# From target name and format, produce a list of supported emulations. + + case ${generic_target}-${fmt} in + mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; + mips-*-linux*-*) case "$endian" in + big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; + *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;; + esac ;; + mips-*-lnews*-ecoff) ;; + mips-*-*-ecoff) case "$endian" in + big) emulation="mipsbecoff mipslecoff mipsecoff" ;; + *) emulation="mipslecoff mipsbecoff mipsecoff" ;; + esac ;; + mips-*-*-elf) case "$endian" in + big) emulation="mipsbelf mipslelf mipself" ;; + *) emulation="mipslelf mipsbelf mipself" ;; + # Uncommenting the next line will turn on support for i386 COFF + # in any i386 ELF configuration. This probably doesn't work + # correctly. + # i386-*-*-elf) emulation="i386coff i386elf" ;; + esac ;; + esac + + emulations="$emulations $emulation" + +done + +# 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 + +if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then + AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type}) +fi + +if test ! -r ${srcdir}/config/obj-${obj_format}.c; then + AC_MSG_ERROR(GAS does not have support for object file format ${obj_format}) +fi + +# and target makefile frag + +target_frag=${srcdir}/config/${gas_target}.mt +if test ! -r ${target_frag}; then + target_frag=/dev/null # ick! but subst_file can't be conditionalized +fi +AC_SUBST_FILE(target_frag) + +case ${user_bfd_gas}-${primary_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) + primary_bfd_gas=no + ;; + *-preferred) + primary_bfd_gas=yes + ;; + yes-*) + primary_bfd_gas=yes + ;; + -*) + # User specified nothing. + ;; +esac + +# Some COFF configurations want these random other flags set. +case ${obj_format} in + coff) + case ${target_cpu_type} in + i386) AC_DEFINE(I386COFF) ;; + m68k) AC_DEFINE(M68KCOFF) ;; + m88k) AC_DEFINE(M88KCOFF) ;; + esac + ;; +esac + +# Getting this done right is going to be a bitch. Each configuration specified +# with --enable-targets=... should be checked for environment, format, cpu, and +# bfd_gas setting. +# +# For each configuration, the necessary object file support code must be linked +# in. This might be only one, it might be up to four. The necessary emulation +# code needs to be provided, too. +# +# And then there's "--enable-targets=all".... +# +# For now, just always do it for MIPS ELF or ECOFF configurations. Sigh. + +formats="${obj_format}" +emfiles="" +EMULATIONS="" +GAS_UNIQ(emulations) +for em in . $emulations ; do + case $em in + .) continue ;; + mipsbelf | mipslelf) + fmt=elf file=mipself ;; + mipsbecoff | mipslecoff) + fmt=ecoff file=mipsecoff ;; + i386coff) + fmt=coff file=i386coff ;; + i386elf) + fmt=elf file=i386elf ;; + esac + formats="$formats $fmt" + emfiles="$emfiles e-$file.o" + EMULATIONS="$EMULATIONS &$em," +done +GAS_UNIQ(formats) +GAS_UNIQ(emfiles) +if test `set . $formats ; shift ; echo $#` -gt 1 ; then + for fmt in $formats ; do + case $fmt in + aout) AC_DEFINE(OBJ_MAYBE_AOUT) ;; + bout) AC_DEFINE(OBJ_MAYBE_BOUT) ;; + coff) AC_DEFINE(OBJ_MAYBE_COFF) ;; + ecoff) AC_DEFINE(OBJ_MAYBE_ECOFF) ;; + elf) AC_DEFINE(OBJ_MAYBE_ELF) ;; + generic) AC_DEFINE(OBJ_MAYBE_GENERIC) ;; + hp300) AC_DEFINE(OBJ_MAYBE_HP300) ;; + ieee) AC_DEFINE(OBJ_MAYBE_IEEE) ;; + som) AC_DEFINE(OBJ_MAYBE_SOM) ;; + vms) AC_DEFINE(OBJ_MAYBE_VMS) ;; + esac + extra_objects="$extra_objects obj-$fmt.o" + done + obj_format=multi +fi +if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then + te_file=multi + extra_objects="$extra_objects $emfiles" + DEFAULT_EMULATION=`set . $emulations ; echo $2` + AC_DEFINE(USE_EMULATIONS) +fi +AC_SUBST(extra_objects) +AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS) +AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION") + +case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in + yes-*-coff) need_bfd=yes ;; + no-*-coff) need_bfd=yes + AC_DEFINE(MANY_SEGMENTS) ;; +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 + +AC_SUBST(target_cpu_type) +AC_SUBST(obj_format) +AC_SUBST(te_file) +AC_SUBST(atof) +dnl AC_SUBST(emulation) + +case "${primary_bfd_gas}" in + yes) AC_DEFINE(BFD_ASSEMBLER) + need_bfd=yes ;; +esac + +# do we need the opcodes library? +case "${need_opcodes}" in +yes) + OPCODES_DEP=../opcodes/libopcodes.a + OPCODES_LIB='-L../opcodes -lopcodes' + + # We need to handle some special cases for shared libraries. + case "${host}" in + *-*-sunos*) + # On SunOS, we must link against the name we are going to install, + # not -lbfd, since SunOS does not support SONAME. + if test "${shared_opcodes}" = "true"; then + OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`' + fi + ;; + alpha*-*-osf*) + # On Alpha OSF/1, the native linker searches all the -L + # directories for any LIB.so files, and only then searches for any + # LIB.a files. That means that if there is an installed + # libbfd.so, but this build is not done with --enable-shared, the + # link will wind up being against the install libbfd.so rather + # than the newly built libbfd. To avoid this, we must explicitly + # link against libbfd.a when --enable-shared is not used. + if test "${shared_opcodes}" != "true"; then + OPCODES_LIB='../opcodes/libopcodes.a' + fi + ;; + esac + ;; +esac + +case "${need_bfd}" in +yes) + BFDDEP=../bfd/libbfd.a + BFDLIB='-L../bfd -lbfd' + ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h" + + # We need to handle some special cases for shared libraries + case "${host}" in + *-*-sunos*) + # On SunOS, we must link against the name we are going to install, + # not -lbfd, since SunOS does not support SONAME. + if test "${shared_bfd}" = "true"; then + BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`' + fi + ;; + alpha*-*-osf*) + # On Alpha OSF/1, the native linker searches all the -L + # directories for any LIB.so files, and only then searches for any + # LIB.a files. That means that if there is an installed + # libbfd.so, but this build is not done with --enable-shared, the + # link will wind up being against the install libbfd.so rather + # than the newly built libbfd. To avoid this, we must explicitly + # link against libbfd.a when --enable-shared is not used. + if test "${shared_bfd}" != "true"; then + BFDLIB='../bfd/libbfd.a' + fi + ;; + esac + + if test "${commonbfdlib}" = "true"; then + # when a shared libbfd is built with --enable-commonbfdlib, + # all of libopcodes is available in libbfd.so + OPCODES_LIB= + fi + ;; +esac + +AC_SUBST(BFDDEP) +AC_SUBST(BFDLIB) +AC_SUBST(OPCODES_DEP) +AC_SUBST(OPCODES_LIB) + +AC_SUBST(ALL_OBJ_DEPS) + +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}") + +AC_PROG_CC +AC_PROG_INSTALL + +AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h) + +# Put this here so that autoconf's "cross-compiling" message doesn't confuse +# people who are not cross-compiling but are compiling cross-assemblers. +AC_MSG_CHECKING(whether compiling a cross-assembler) +if test "${host}" = "${target}"; then + cross_gas=no +else + cross_gas=yes + AC_DEFINE(CROSS_COMPILE) +fi +AC_MSG_RESULT($cross_gas) + +dnl ansidecl.h will deal with const +dnl AC_CONST +AC_FUNC_ALLOCA +AC_C_INLINE + +# VMS doesn't have unlink. +AC_CHECK_FUNCS(unlink remove, break) + +# Some systems don't have sbrk(). +AC_CHECK_FUNCS(sbrk) + +# 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! +GAS_WORKING_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. +gas_test_headers=" +#ifdef HAVE_MEMORY_H +#include <memory.h> +#endif +#ifdef HAVE_STRING_H +#include <string.h> +#else +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif +#endif +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +" +GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers) +GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers) +GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers) +GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers) + +# Does errno.h declare errno, or do we have to add a separate declaration +# for it? +GAS_CHECK_DECL_NEEDED(errno, f, int f, [ +#ifdef HAVE_ERRNO_H +#include <errno.h> +#endif +]) + +HLDFLAGS= +HLDENV= +RPATH_ENVVAR=LD_LIBRARY_PATH +# If we have shared libraries, try to set rpath reasonably. +if test "${shared}" = "true"; then + case "${host}" in + *-*-hpux*) + HLDFLAGS='-Wl,+s,+b,$(libdir)' + RPATH_ENVVAR=SHLIB_PATH + ;; + *-*-irix5* | *-*-irix6*) + HLDFLAGS='-Wl,-rpath,$(libdir)' + ;; + *-*-linux*aout*) + ;; + *-*-linux*) + HLDFLAGS='-Wl,-rpath,$(libdir)' + ;; + *-*-solaris*) + HLDFLAGS='-R $(libdir)' + ;; + *-*-sysv4*) + HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;' + ;; + esac +fi + +# On SunOS, if the linker supports the -rpath option, use it to +# prevent ../bfd and ../opcodes from being included in the run time +# search path. +case "${host}" in + *-*-sunos*) + echo 'main () { }' > conftest.c + ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t + if grep 'unrecognized' conftest.t >/dev/null 2>&1; then + : + elif grep 'No such file' conftest.t >/dev/null 2>&1; then + : + elif grep 'do not mix' conftest.t >/dev/null 2>&1; then + : + elif test "${shared}" = "true"; then + HLDFLAGS='-Wl,-rpath=$(libdir)' + else + HLDFLAGS='-Wl,-rpath=' + fi + rm -f conftest.t conftest.c conftest + ;; +esac +AC_SUBST(HLDFLAGS) +AC_SUBST(HLDENV) +AC_SUBST(RPATH_ENVVAR) + +dnl This must come last. + +dnl We used to make symlinks to files in the source directory, but now +dnl we just use the right name for .c files, and create .h files in +dnl the build directory which include the right .h file. Make sure +dnl the old symlinks don't exist, so that a reconfigure in an existing +dnl directory behaves reasonably. + +AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in, +[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h + echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h + echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h + echo '#include "te-'"${te_file}"'.h"' > targ-env.h + echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h + case ${target_cpu_type} in + m32r) echo '#include "opcodes/'"${target_cpu_type}"'-opc.h"' > cgen-opc.h ;; + esac], +[target_cpu_type=${target_cpu_type} + obj_format=${obj_format} + te_file=${te_file}]) |