dnl Process this file with autoconf to produce a configure script.
dnl

AC_PREREQ(2.59)
AC_INIT
AC_CONFIG_SRCDIR([z8k-dis.c])

AC_CANONICAL_TARGET
AC_ISC_POSIX

# We currently only use the version number for the name of any shared
# library.  For user convenience, we always use the same version
# number that BFD is using.
changequote(,)dnl
BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ 	]*\([^ 	]*\)[ 	]*).*/\1/p' < ${srcdir}/../bfd/configure.in`
changequote([,])dnl

AM_INIT_AUTOMAKE(opcodes, ${BFD_VERSION})

AC_PROG_CC
AC_GNU_SOURCE
AC_USE_SYSTEM_EXTENSIONS

dnl These must be called before LT_INIT, because it may want
dnl to call AC_CHECK_PROG.
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)

dnl Default to a non shared library.  This may be overridden by the
dnl configure option --enable-shared.
AC_DISABLE_SHARED

LT_INIT

AC_ARG_ENABLE(targets,
[  --enable-targets        alternative target configurations],
[case "${enableval}" in
  yes | "") AC_MSG_ERROR([enable-targets option must specify target names or 'all'])
            ;;
  no)       enable_targets= ;;
  *)        enable_targets=$enableval ;;
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 opcodes commonbfdlib option]) ;;
esac])dnl

AM_BINUTILS_WARNINGS

AC_CONFIG_HEADERS(config.h:config.in)

if test -z "$target" ; then
    AC_MSG_ERROR(Unrecognized target system type; please check config.sub.)
fi

AM_MAINTAINER_MODE
AM_INSTALL_LIBBFD
AC_EXEEXT

# host-specific stuff:

ALL_LINGUAS="fr sv tr es da de id pt_BR ro nl fi vi ga zh_CN"
ZW_GNU_GETTEXT_SISTER_DIR
AM_PO_SUBDIRS

. ${srcdir}/../bfd/configure.host

BFD_CC_FOR_BUILD

AC_SUBST(HDEFINES)
AC_PROG_INSTALL

AC_CHECK_HEADERS(string.h strings.h stdlib.h limits.h)

AC_CHECK_DECLS([basename, stpcpy])

cgen_maint=no
cgendir='$(srcdir)/../cgen'

AC_ARG_ENABLE(cgen-maint,
[  --enable-cgen-maint[=dir]    build cgen generated files],
[case "${enableval}" in
  yes)	cgen_maint=yes ;;
  no)	cgen_maint=no ;;
  *)
	# argument is cgen install directory (not implemented yet).
	# Having a `share' directory might be more appropriate for the .scm,
	# .cpu, etc. files.
	cgen_maint=yes
	cgendir=${cgen_maint}/lib/cgen
	;;
esac])dnl
AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} = xyes)
AC_SUBST(cgendir)

using_cgen=no

# Horrible hacks to build DLLs on Windows and a shared library elsewhere.
SHARED_LDFLAGS=
SHARED_LIBADD=
SHARED_DEPENDENCIES=
if test "$enable_shared" = "yes"; then
  case "${host}" in
    *-*-cygwin*)
      SHARED_LDFLAGS="-no-undefined"
      SHARED_LIBADD="-L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin"
      ;;
   *-*-darwin*)
     SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.dylib"
     SHARED_DEPENDENCIES="../bfd/libbfd.la"
     ;;
    *)
      case "$host_vendor" in
        hp)
          SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl"
	  ;;
	*)
          SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.so"
	  ;;
      esac
      SHARED_DEPENDENCIES="../bfd/libbfd.la"
      ;;
  esac
fi
AC_SUBST(SHARED_LDFLAGS)
AC_SUBST(SHARED_LIBADD)
AC_SUBST(SHARED_DEPENDENCIES)

# target-specific stuff:

# Canonicalize the secondary target names.
if test -n "$enable_targets" ; then
    for targ in `echo $enable_targets | sed 's/,/ /g'`
    do
	result=`$ac_config_sub $targ 2>/dev/null`
	if test -n "$result" ; then
	    canon_targets="$canon_targets $result"
	else
	    # Allow targets that config.sub doesn't recognize, like "all".
	    canon_targets="$canon_targets $targ"
	fi
    done
fi

all_targets=false
selarchs=
for targ in $target $canon_targets
do
    if test "x$targ" = "xall" ; then
        all_targets=true
    else
	. $srcdir/../bfd/config.bfd
	selarchs="$selarchs $targ_archs"
    fi
done	

# Utility var, documents generic cgen support files.

cgen_files="cgen-opc.lo cgen-asm.lo cgen-dis.lo cgen-bitset.lo"

# We don't do any links based on the target system, just makefile config.

if test x${all_targets} = xfalse ; then

    # Target architecture .o files.
    ta=

    for arch in $selarchs
    do
	ad=`echo $arch | sed -e s/bfd_//g -e s/_arch//g`
	archdefs="$archdefs -DARCH_$ad"
	case "$arch" in
	bfd_alpha_arch)		ta="$ta alpha-dis.lo alpha-opc.lo" ;;
	bfd_arc_arch)		ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
	bfd_arm_arch)		ta="$ta arm-dis.lo" ;;
	bfd_avr_arch)		ta="$ta avr-dis.lo" ;;
	bfd_bfin_arch)		ta="$ta bfin-dis.lo" ;;
	bfd_cr16_arch)    	ta="$ta cr16-dis.lo cr16-opc.lo" ;;
	bfd_cris_arch)		ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
	bfd_crx_arch)    	ta="$ta crx-dis.lo crx-opc.lo" ;;
	bfd_d10v_arch)		ta="$ta d10v-dis.lo d10v-opc.lo" ;;
	bfd_d30v_arch)		ta="$ta d30v-dis.lo d30v-opc.lo" ;;
	bfd_dlx_arch)		ta="$ta dlx-dis.lo" ;;
	bfd_fr30_arch)          ta="$ta fr30-asm.lo fr30-desc.lo fr30-dis.lo fr30-ibld.lo fr30-opc.lo" using_cgen=yes ;;
	bfd_frv_arch)           ta="$ta frv-asm.lo frv-desc.lo frv-dis.lo frv-ibld.lo frv-opc.lo" using_cgen=yes ;;
	bfd_h8300_arch)		ta="$ta h8300-dis.lo" ;;
	bfd_h8500_arch)		ta="$ta h8500-dis.lo" ;;
	bfd_hppa_arch)		ta="$ta hppa-dis.lo" ;;
	bfd_i370_arch)		ta="$ta i370-dis.lo i370-opc.lo" ;;
	bfd_i386_arch)		ta="$ta i386-dis.lo i386-opc.lo" ;;
	bfd_i860_arch)		ta="$ta i860-dis.lo" ;;
	bfd_i960_arch)		ta="$ta i960-dis.lo" ;;
	bfd_ia64_arch)		ta="$ta ia64-dis.lo ia64-opc.lo" ;;
	bfd_ip2k_arch)		ta="$ta ip2k-asm.lo ip2k-desc.lo ip2k-dis.lo ip2k-ibld.lo ip2k-opc.lo" using_cgen=yes ;;
        bfd_iq2000_arch)        ta="$ta iq2000-asm.lo iq2000-desc.lo iq2000-dis.lo iq2000-ibld.lo iq2000-opc.lo" using_cgen=yes ;;
	bfd_m32c_arch)		ta="$ta m32c-asm.lo m32c-desc.lo m32c-dis.lo m32c-ibld.lo m32c-opc.lo" using_cgen=yes ;;
	bfd_m32r_arch)		ta="$ta m32r-asm.lo m32r-desc.lo m32r-dis.lo m32r-ibld.lo m32r-opc.lo m32r-opinst.lo" using_cgen=yes ;;
	bfd_m68hc11_arch)	ta="$ta m68hc11-dis.lo m68hc11-opc.lo" ;;
	bfd_m68hc12_arch)	ta="$ta m68hc11-dis.lo m68hc11-opc.lo" ;;
	bfd_m68k_arch)		ta="$ta m68k-dis.lo m68k-opc.lo" ;;
	bfd_m88k_arch)		ta="$ta m88k-dis.lo" ;;
	bfd_maxq_arch)		ta="$ta maxq-dis.lo" ;;
	bfd_mcore_arch)		ta="$ta mcore-dis.lo" ;;
	bfd_mep_arch)		ta="$ta mep-asm.lo mep-desc.lo mep-dis.lo mep-ibld.lo mep-opc.lo" using_cgen=yes ;;
	bfd_mips_arch)		ta="$ta mips-dis.lo mips-opc.lo mips16-opc.lo" ;;
	bfd_mmix_arch)		ta="$ta mmix-dis.lo mmix-opc.lo" ;;
	bfd_mn10200_arch)	ta="$ta m10200-dis.lo m10200-opc.lo" ;;
	bfd_mn10300_arch)	ta="$ta m10300-dis.lo m10300-opc.lo" ;;
	bfd_mt_arch)		ta="$ta mt-asm.lo mt-desc.lo mt-dis.lo mt-ibld.lo mt-opc.lo" using_cgen=yes ;;
	bfd_msp430_arch)	ta="$ta msp430-dis.lo" ;;
	bfd_ns32k_arch)		ta="$ta ns32k-dis.lo" ;;
	bfd_openrisc_arch)	ta="$ta openrisc-asm.lo openrisc-desc.lo openrisc-dis.lo openrisc-ibld.lo openrisc-opc.lo" using_cgen=yes ;;
	bfd_or32_arch)		ta="$ta or32-dis.lo or32-opc.lo" using_cgen=yes ;;
	bfd_pdp11_arch)		ta="$ta pdp11-dis.lo pdp11-opc.lo" ;;
	bfd_pj_arch)	        ta="$ta pj-dis.lo pj-opc.lo" ;;
	bfd_powerpc_arch)	ta="$ta ppc-dis.lo ppc-opc.lo" ;;
	bfd_powerpc_64_arch)	ta="$ta ppc-dis.lo ppc-opc.lo" ;;
	bfd_pyramid_arch)	;;
	bfd_romp_arch)		;;
	bfd_rs6000_arch)	ta="$ta ppc-dis.lo ppc-opc.lo" ;;
	bfd_s390_arch)		ta="$ta s390-dis.lo s390-opc.lo" ;;
	bfd_score_arch)         ta="$ta score-dis.lo" ;;
	bfd_sh_arch)
	  # We can't decide what we want just from the CPU family.
	  # We want SH5 support unless a specific version of sh is
	  # specified, as in sh3-elf, sh3b-linux-gnu, etc.
	  # Include it just for ELF targets, since the SH5 bfd:s are ELF only.
	  for t in $target $canon_targets; do
	    case $t in
	      all |  sh5*-* | sh64*-* | sh-*-*elf* | shl*-*-*elf* | \
	      sh-*-linux* | shl-*-linux*)
				ta="$ta sh64-dis.lo sh64-opc.lo"
				archdefs="$archdefs -DINCLUDE_SHMEDIA"
				break;;
	    esac;
	  done
				ta="$ta sh-dis.lo cgen-bitset.lo" ;;
	bfd_sparc_arch)		ta="$ta sparc-dis.lo sparc-opc.lo" ;;
	bfd_spu_arch)		ta="$ta spu-dis.lo spu-opc.lo" ;;
	bfd_tahoe_arch)		;;
	bfd_tic30_arch)		ta="$ta tic30-dis.lo" ;;
        bfd_tic4x_arch)         ta="$ta tic4x-dis.lo" ;;
	bfd_tic54x_arch)	ta="$ta tic54x-dis.lo tic54x-opc.lo" ;;
	bfd_tic80_arch)		ta="$ta tic80-dis.lo tic80-opc.lo" ;;
	bfd_v850_arch)		ta="$ta v850-opc.lo v850-dis.lo" ;;
	bfd_v850e_arch)		ta="$ta v850-opc.lo v850-dis.lo" ;;
	bfd_v850ea_arch)	ta="$ta v850-opc.lo v850-dis.lo" ;;
	bfd_vax_arch)		ta="$ta vax-dis.lo" ;;
	bfd_w65_arch)		ta="$ta w65-dis.lo" ;;
	bfd_we32k_arch)		;;
	bfd_xc16x_arch)		ta="$ta xc16x-asm.lo xc16x-desc.lo xc16x-dis.lo xc16x-ibld.lo xc16x-opc.lo" using_cgen=yes ;;
	bfd_xstormy16_arch)	ta="$ta xstormy16-asm.lo xstormy16-desc.lo xstormy16-dis.lo xstormy16-ibld.lo xstormy16-opc.lo" using_cgen=yes ;;
	bfd_xtensa_arch)	ta="$ta xtensa-dis.lo" ;;
	bfd_z80_arch)		ta="$ta z80-dis.lo" ;;
	bfd_z8k_arch)		ta="$ta z8k-dis.lo" ;;

	"")			;;
	*)		AC_MSG_ERROR(*** unknown target architecture $arch) ;;
	esac
    done

    if test $using_cgen = yes ; then
	ta="$ta $cgen_files"
    fi

    # Weed out duplicate .o files.
    f=""
    for i in $ta ; do
	case " $f " in
	*" $i "*) ;;
	*) f="$f $i" ;;
	esac
    done
    ta="$f"

    # And duplicate -D flags.
    f=""
    for i in $archdefs ; do
	case " $f " in
	*" $i "*) ;;
	*) f="$f $i" ;;
	esac
    done
    archdefs="$f"

    BFD_MACHINES="$ta"

else	# all_targets is true
    archdefs=-DARCH_all
    BFD_MACHINES='$(ALL_MACHINES)'
fi

AC_SUBST(archdefs)
AC_SUBST(BFD_MACHINES)

AC_CONFIG_FILES([Makefile po/Makefile.in:po/Make-in])
AC_OUTPUT
