# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
#  
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without 
# modifications, as long as this notice is preserved.
# 
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

AC_INIT(mixlib/mix.h)
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE(mdk,0.5)

AM_MAINTAINER_MODE

AC_ISC_POSIX
AC_PROG_CC
AM_PROG_CC_STDC
AC_HEADER_STDC

AM_PROG_LEX
AC_PROG_RANLIB

dnl i18n stuff
ALL_LINGUAS=""
AM_GNU_GETTEXT

test "x$prefix" = xNONE && prefix=$ac_default_prefix

AC_DEFINE_UNQUOTED(LOCALEDIR, "${prefix}/share/locale")

dnl Check for readline and history
AC_ARG_WITH(readline,
[  --with-readline         build mixvm with readline support],
[case "${withval}" in
  yes) readl=true ;;
  no)  readl=false ;;
  *) AC_MSG_ERROR(bad value ${withval} for --with-readline) ;;
esac], [readl=true])

if test x$readl = xtrue; then
  AC_CHECK_LIB(ncurses, initscr, ,
               [AC_MSG_WARN(Cannot find ncurses lib) readl=false])
fi

if test x$readl = xtrue; then
  AC_CHECK_LIB(readline, readline, ,
               [AC_MSG_WARN(Cannot find GNU readline lib) readl=false])
fi

if test x$readl = xtrue; then
AC_CHECK_LIB(history, add_history, ,
             [AC_MSG_WARN(Cannot find GNU history lib) readl=false])
dnl old versions of readline use completion_matches instead
dnl of rl_completion_matches
AC_CHECK_FUNCS(rl_completion_matches,,)
fi

dnl Check for guile
AC_ARG_WITH(guile,
[  --with-guile         build MDK with Guile support],
[case "${withval}" in
  yes) wguile=true ;;
  no)  wguile=false ;;
  *) AC_MSG_ERROR(bad value ${withval} for --with-guile) ;;
esac], [wguile=true])

if test x$wguile = xtrue; then
  AC_MSG_CHECKING(for Guile)
  guile-config link > /dev/null || {
    AC_MSG_RESULT(no)
    wguile=false
  }
fi

if test x$wguile = xtrue; then
  GUILE_CFLAGS="`guile-config compile`"
  GUILE_LDFLAGS="`guile-config link`"
  LIBS="$LIBS $GUILE_LDFLAGS"
  CFLAGS="$CFLAGS $GUILE_CFLAGS"
  AC_SUBST(MAKE_GUILE)
  AC_MSG_RESULT(yes)
fi

AM_CONDITIONAL(MAKE_GUILE, test x$wguile = xtrue)

dnl Check for glib
AM_PATH_GLIB(1.2.0,
             [LIBS="$LIBS $GLIB_LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS"],
	     AC_MSG_ERROR(Cannot find GLIB), "gmodule" )

dnl Check if the gtk gui is required
AC_ARG_ENABLE(gui,
[  --enable-gui          build the GTK+ GUI for mixvm (gmixvm)],
[case "${enableval}" in
  yes) gui=true ;;
  no)  gui=false ;;
  *) AC_MSG_ERROR(bad value ${enableval} for --enable-gui) ;;
esac],[gui=true])

dnl Check for gtk+
if test x$gui = xtrue; then
AM_PATH_GTK(1.2.0,	
[LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS"],
[AC_MSG_WARN(Cannot find GTK+: the GUI shall not be built) gui=false],
"gmodule" )
fi

dnl Check for libglade
if test x$gui = xtrue; then
  AM_PATH_LIBGLADE([LIBS="$LIBS $LIBGLADE_LIBS"
          CFLAGS="$CFLAGS $LIBGLADE_CFLAGS"],
     	  gui=false)
fi

dnl use the provided getopt if gnu getopt is not available
AC_REPLACE_FUNCS(getopt_long)

AM_CONDITIONAL(MAKE_GUI, test x$gui = xtrue)

CFLAGS="$CFLAGS -Wall"
AC_SUBST(CFLAGS)

AC_OUTPUT( 
Makefile 
doc/Makefile 
doc/img/Makefile 
mixlib/Makefile 
mixlib/testsuite/Makefile
mixguile/Makefile
mixutils/Makefile
mixgtk/Makefile
lib/Makefile
misc/Makefile
intl/Makefile 
samples/Makefile
po/Makefile.in 
)

if test x$readl = xtrue; then
  rlinfo=", with readline support"
fi

if test x$wguile = xtrue; then
  guileinfo=", with guile support"
fi

echo
echo "*** GNU MDK $VERSION has been successfully configured. ***"
echo
echo "Type 'make' to build the following utilities:"
echo "    - mixasm (MIX assembler)"
echo "    - mixvm (MIX virtual machine${rlinfo}${guileinfo})"
if test x$gui = xtrue; then
echo "    - gmixvm (mixvm GTK+ GUI${guileinfo})"
fi
if test x$wguile = xtrue; then
echo "    - mixguile (the mixvm guile shell)"
fi
echo