dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.12.1)dnl
AC_INIT(gdbserve.c)

AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../..)
AC_CANONICAL_SYSTEM
AC_ARG_PROGRAM

AC_PROG_INSTALL

# Map target cpu into the config cpu subdirectory name.
# The default is $target_cpu.
changequote(,)dnl
case "${target_cpu}" in
alpha)			gdb_target_cpu=alpha ;;
c[12])			gdb_target_cpu=convex ;;
hppa*)			gdb_target_cpu=pa ;;
i[34567]86)		gdb_target_cpu=i386 ;;
m68*)			gdb_target_cpu=m68k ;;
np1)			gdb_target_cpu=gould ;;
pn)			gdb_target_cpu=gould ;;
pyramid)		gdb_target_cpu=pyr ;;
sparc*)			gdb_target_cpu=sparc ;;
*)			gdb_target_cpu=$target_cpu ;;
esac
changequote([,])dnl

target_makefile_frag=${srcdir}/../config/${gdb_target_cpu}/gdbserve.mt
if [ ! -f ${target_makefile_frag} ]; then
	AC_MSG_ERROR("*** GDBSERVE does not support target ${target}")
fi

dnl We have to assign the same value to other variables because autoconf
dnl doesn't provide a mechanism to substitute a replacement keyword with
dnl arbitrary data or pathnames.
dnl
target_makefile_frag_path=$target_makefile_frag
AC_SUBST(target_makefile_frag_path)
AC_SUBST_FILE(target_makefile_frag)

cpufile=`sed -n '
s/CPU_FILE[ 	]*=[ 	]*\([^ 	]*\)/\1/p
' ${target_makefile_frag}

files=
links=
rm -f cpu.h
if [ "${cpufile}" != "" ]; then
	files="${files} ${cpufile}.h"
	links="${links} cpu.h"
fi

AC_LINK_FILES($files, $links)
AC_OUTPUT(Makefile)

