dnl Process this file with autoconf to produce a configure script.
dnl Author: Michael Patra   <micky@marie.physik.tu-berlin.de>
dnl                         <patra@itp1.physik.tu-berlin.de>
AC_REVISION([configure.in 1.00])
AC_INIT(controls/edit.c)		
AC_CONFIG_AUX_DIR(tools)

# We want these before the checks, so the checks can modify their values.
test -z "$CFLAGS" && CFLAGS="-g -O2" AC_SUBST(CFLAGS)
test -z "$LDFLAGS" && LDFLAGS=-g AC_SUBST(LDFLAGS)
test -z "$LDLIBS" && LDLIBS=-lm AC_SUBST(LDLIBS)

dnl **** Command-line arguments ****

AC_ARG_WITH(library,
[  --with-library          build Wine as a library instead of an emulator],
[AC_DEFINE(WINELIB) MAIN_TARGET="libwine.a"],[MAIN_TARGET="wine"])
AC_SUBST(MAIN_TARGET)

AC_ARG_WITH(ipc,
[  --with-ipc              use inter-process communication for DDE],
[AC_DEFINE(CONFIG_IPC)])

AC_ARG_WITH(malloc-debug,
[  --with-malloc-debug     enable malloc() debugging],
[AC_DEFINE(MALLOC_DEBUGGING)])

dnl **** Check for some programs and libraries ****

AC_PROG_MAKE_SET
AC_PROG_CC
AC_PROG_CPP
AC_PATH_XTRA
AC_PROG_YACC
AC_PROG_LEX
AC_PROG_RANLIB
AC_PROG_INSTALL
dnl Check for -li386 for NetBSD
AC_CHECK_LIB(i386,i386_set_ldt,LDLIBS="$LDLIBS -li386")

dnl **** Check for gcc strength-reduce bug ****

if test "x${GCC}" = "xyes"
then
  CFLAGS="$CFLAGS -Wall"
  AC_C_CROSS
  AC_CACHE_CHECK( "for gcc strength-reduce bug", ac_cv_c_gcc_strength_bug,
                  AC_TRY_RUN([
int main(void) {
  static int Array[3];
  unsigned int B = 3;
  int i;
  for(i=0; i<B; i++) Array[i] = i - 3;
  exit( Array[1] != -2 );
}],
    ac_cv_c_gcc_strength_bug="no",
    ac_cv_c_gcc_strength_bug="yes",
    ac_cv_c_gcc_strength_bug="yes") )
  if test "$ac_cv_c_gcc_strength_bug" = "yes"
  then
    CFLAGS="$CFLAGS -fno-strength-reduce"
  fi
fi

dnl **** Check for functions and header files ****

AC_CHECK_FUNCS(tcgetattr usleep)
AC_CHECK_HEADERS(stdlib.h)
AC_HEADER_STAT()
AC_C_CONST()
AC_TYPE_SIZE_T()

dnl **** Generate output files ****

MAKE_RULES=Make.rules
AC_SUBST_FILE(MAKE_RULES)

AC_OUTPUT([
Make.rules
Makefile
controls/Makefile
debugger/Makefile
debugger/readline/Makefile
files/Makefile
if1632/Makefile
ipc/Makefile
library/Makefile
libtest/Makefile
loader/Makefile
memory/Makefile
misc/Makefile
miscemu/Makefile
multimedia/Makefile
objects/Makefile
rc/Makefile
resources/Makefile
tools/Makefile
win32/Makefile
windows/Makefile ])

echo
echo "Configure finished.  Do 'make depend; make' to compile Wine."
echo

dnl Local Variables:
dnl comment-start: "dnl "
dnl comment-end: ""
dnl comment-start-skip: "\\bdnl\\b\\s *"
dnl compile-command: "autoconf"
dnl End:
