# This file is configure.in
#
#   Copyright (C) 1987-1992 Free Software Foundation, Inc.
#
#  This file is part of GAS, the GNU Assembler.
#
#   GAS is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2, or (at your option)
#   any later version.
#
#   GAS is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with GAS; see the file COPYING.  If not, write to
#   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
#

# This file was written, and is maintained by K. Richard Pixley
# <rich@cygnus.com>.

# This file is a shell script that supplies the information necessary
# to tailor a template configure script into the configure script
# appropriate for this directory.  For more information, check any
# existing configure script.

srctrigger=as.c
srcname="gas"
need_bfd=no
bfd_gas=no
configdirs="doc testsuite"

# per-host:

gas_host=generic

case "${host}" in
  a29k-*-*)			gas_host=a29k		;;

  alpha-*-osf*)			gas_host=ansi		;;

  hppa*-hp-hpux*)		gas_host=hpux		;;
  hppa*-hp-bsd*)		gas_host=hppabsd	;;
  hppa*-hp-osf*)		gas_host=hppaosf	;;

  i[34]86-ibm-aix*)		gas_host=i386aix	;;
  i[34]86-*-isc*)		gas_host=sysv		;;
  i386-sun-sunos*)		gas_host=sun386		;;

  m68k-sun-sunos*)		gas_host=sun3		;;
  m68*-*-hpux)			gas_host=hpux		;;

  mips*-dec-ultrix*)		gas_host=decstatn	;;
  mips*-*-bsd*)			gas_host=mipsbsd	;;
  mips*-sgi-irix*)		gas_host=irix		;;

  rs6000-*-*)			gas_host=rs6000		;;

  sparc-sun-sunos*)		gas_host=sun4		;;
  sparc-sun-solaris2*)		gas_host=sysv		;;

  vax-*-vms*)			gas_host=vms		;;
  vax-*-bsd*)			gas_host=vax		;;

  *-*-sysv4* | *-*-unixware)	gas_host=sysv		;;

  *-*-ansi | *-*-ultrix | *-*-hpux | *-*-sysv*)
				gas_host=${host_os}	;;

esac

if [ ! -r ${srcdir}/config/ho-${gas_host}.h ]; then
  echo '*** GAS does not support host' ${host} 1>&2
  exit 1
fi

# per-target:

case ${with_bfd_assembler} in
  yes)
    echo "*** Warning:  GAS BFD configuration option not yet fully supported" 1>&2
    need_bfd=yes
    bfd_gas=yes
    ;;
  no | "")
    ;;
  *)
    echo "*** Bad value \"${with_bfd_assembler}\" for --with-bfd-assembler option" 1>&2
    exit 1
    ;;
esac

# assign cpu type
emulation=generic

# default is big
endian=big

# check for architecture variants
case ${target_cpu} in
  # Actually we've only got support for the 1.1, so we shouldn't generalize,
  # but this is what the support files are named...
  hppa*)	cpu_type=hppa ;;
  i486)		cpu_type=i386 ;;
  m680[01234]0) cpu_type=m68k ;;
  m68008)	cpu_type=m68k ;;
  m683??)       cpu_type=m68k ;;
  m8*)		cpu_type=m88k ;;
  mips*el)	cpu_type=mips endian=little;;
  mips*)	cpu_type=mips ;;
  sparc64)	cpu_type=sparc64 obj_format=elf ;; # v9
  sparclite*)   cpu_type=sparc ;;
  *)		cpu_type=${target_cpu} ;;
esac

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=coffbfd gas_target=ebmon29k ;;
  a29k-amd-ebmon)	obj_format=coffbfd gas_target=ebmon29k ;;
  a29k-amd-ebmonold)	obj_format=coff gas_target=ebmon29k ;;

  alpha-*-osf*)		obj_format=ecoff dev=yes ;;

  hppa-*-osf)		obj_format=elf emulation=hppa dev=yes ;;
  hppa-*-hpux*)		obj_format=som emulation=hppa ;;
  hppa-*-bsd*)		obj_format=som emulation=hppa ;;

  h8300-*-coff)		obj_format=coffbfd ;;

  i386-ibm-aix*)	obj_format=coffbfd gas_target=i386coff
			 emulation=i386aix ;;
  i386-*-bsd*)		obj_format=aout emulation=386bsd ;;
  i386-*-linux*elf*)	obj_format=elf  emulation=linux ;;
  i386-*-linux*coff*)	obj_format=coffbfd emulation=linux
			 gas_target=i386coff ;;
  i386-*-linux*)	obj_format=aout emulation=linux ;;
  i386-*-lynxos*)	obj_format=coffbfd gas_target=i386coff
			 emulation=lynx ;;
  i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
			obj_format=elf ;;
  i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
			obj_format=coffbfd gas_target=i386coff ;;
  i386-*-go32)		obj_format=aout ;;

  i960-wrs-vxworks | i960-*-nindy*)
			obj_format=bout ;;
  i960-*-coff)		obj_format=coff emulation=ic960 ;;

  m68k-wrs-vxworks | m68k-ericsson-ose | m68k-*-sunos*)
			obj_format=aout emulation=sun3 ;;
  m68k-*-coff | m68k-*-sysv*)
			obj_format=coffbfd gas_target=m68kcoff ;;
  m68k-*-hpux)		obj_format=hp300 emulation=hp300 ;;
  m68k-*-lynxos*)	obj_format=coffbfd gas_target=m68kcoff
			 emulation=lynx ;;

  m88k-*-coff*)		obj_format=coffbfd 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 
			if [ $endian = big ] ; then
			  gas_target=mips-big
			else
			  gas_target=mips-lit
			fi 
			;;
  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 emulation=irix ;;
  mips-*-riscos*)	obj_format=ecoff gas_target=mips-big ;;
  mips-*-sysv*)		obj_format=ecoff gas_target=mips-big ;;
  mips-*-elf*)		obj_format=elf 
			if [ $endian = big ] ; then
			  gas_target=mips-big
			else
			  gas_target=mips-lit
			fi
			;;

  sh-*-coff)		obj_format=coffbfd ;;

  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 ;;
  sparc*-fujitsu-none)	obj_format=aout bfd_gas=yes ;;
  sparc*-*-elf | sparc*-*-solaris*)
			obj_format=elf ;;
  sparc64-*-aout*)	obj_format=aout bfd_gas=yes ;; # v9

  vax-*-vms)		obj_format=vms ;;

  z8k-*-coff | z8k-*-sim)
			obj_format=coffbfd ;;

  *-*-aout | *-*-scout)
			obj_format=aout ;;
  *-*-nindy*)
			obj_format=bout ;;
  *-*-bsd*)
			obj_format=aout emulation=sun3 ;;
  *-*-generic)		obj_format=generic ;;
  *-*-xray | *-*-hms)	obj_format=coffbfd ;;
  *-*-sysv32)		obj_format=coff emulation=sysv32 ;;
  *-*-sim)		obj_format=coffbfd ;;
  *-*-elf | *-*-sysv4* | *-*-solaris*)
	echo '*** Warning: GAS support for ELF format is incomplete' 1>&2
			obj_format=elf dev=yes ;;
  *-*-coff* | *-sysv* | *-*-sco*)
			obj_format=coff
			case ${target_vendor} in
			  bull)  emulation=dpx2 ;;
			  sun)   emulation=sun3 ;;
			esac
			;;
  *-*-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
  ns32k | vax | tahoe )	atof=${target_cpu} ;;
  *)			atof=ieee ;;
esac

if [ ! -r ${srcdir}/config/tc-${cpu_type}.c ]; then
  echo '*** GAS does not support target CPU' ${cpu_type}		1>&2
  exit 1
fi

case "${obj_format}" in
  "")
      echo "*** GAS doesn't know what format to use for target" ${target} 1>&2
      exit 1
      ;;
esac

if [ ! -r ${srcdir}/config/obj-${obj_format}.c ]; then
  echo '*** GAS does not have support for object file format' ${obj_format} 1>&2
  exit 1
fi

# and target makefile frag

target_makefile_frag=config/${gas_target}.mt

case ${bfd_gas}-${obj_format} in
  yes-coffbfd)	obj_format=coff ;;
  no-coffbfd)	need_bfd=yes ;;
  *-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)
    echo '*** Use of BFD is required for ${target}; overriding config options'\
		1>&2
    ;;
  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.
    echo "*** GAS does not support the ${generic_target} configuration" 1>&2
    exit 1
    ;;
esac

files="config/ho-${gas_host}.h config/tc-${cpu_type}.c \
	config/tc-${cpu_type}.h config/te-${emulation}.h \
	config/obj-${obj_format}.h config/obj-${obj_format}.c \
	config/atof-${atof}.c"

links="host.h targ-cpu.c targ-cpu.h targ-env.h obj-format.h obj-format.c atof-targ.c"

# post-target:

case ${bfd_gas} in
  yes)	bfddef="BFDDEF=-DBFD_ASSEMBLER" need_bfd=yes	;;
  *)    bfddef=""					;;
esac

case ${need_bfd} in
  yes)	bfdlib="BFDLIB=../bfd/libbfd.a"			;;
  *)	bfdlib=""					;;
esac

case "x${host}" in
  "x${target}")	cross=""				;;
  *)		cross="CROSS=-DCROSS_COMPILE"		;;
esac

rm -f Makefile.tem
echo $bfddef >  Makefile.tem
echo $bfdlib >> Makefile.tem
echo $cross  >> Makefile.tem
cat Makefile >> Makefile.tem
mv -f Makefile.tem Makefile

# end of gas/configure.in
