dnl Process this file with autoconf to produce a configure script.
AC_INIT(src)
AC_CANONICAL_SYSTEM

AM_INIT_AUTOMAKE(libical,0.24) 
AM_CONFIG_HEADER(config.h)

dnl Set the aux dir to .. (the toplevel evolution directory) so ylwrap
dnl is found in the correct directory for automake >= 1.5
AC_CONFIG_AUX_DIR(..)

dnl Subst in evolution's private directories
AC_SUBST(privlibdir)
AC_SUBST(privincludedir)
AC_SUBST(privdatadir)

dnl  Initialize maintainer mode
AM_MAINTAINER_MODE

dnl Checks for programs.
AC_PROG_YACC
AC_PROG_CC
AC_PROG_CXX
AM_PROG_LEX
AC_PROG_LN_S
AC_PROG_INSTALL

dnl Initialize libtool
AM_PROG_LIBTOOL

AC_SUBST(AR)

dnl *** bdb4 support

AC_MSG_CHECKING(for Berkeley DB4 support)
AC_ARG_WITH(bdb4, [  --with-bdb4             Add support for Berkeley DB 4.0],
[case $with_bdb4 in  
    yes)	AC_MSG_RESULT(yes)
		AC_MSG_RESULT(  Adding Berkeley DB support)
		WITH_BDB4="yes"
		;;
    no)		AC_MSG_RESULT(no)
		;;
    *)		AC_MSG_RESULT(no)
		AC_MSG_RESULT(Ignoring unknown argument to --with-bdb4: $with_bdb4)
		;;
esac],
AC_MSG_RESULT(no))

if test x$WITH_BDB4 = xyes; then
  AC_ARG_WITH(bdb4_dir, [  --with-bdb4-dir=PATH    Use PATH as location of BerkeleyDB 4.0],
     BDB_DIR=$withval,
     BDB_DIR=/usr/local/BerkeleyDB.4.0
  )

  AC_MSG_CHECKING(for Berkeley DB include files)
  if test -f $BDB_DIR/include/db.h; then
   BDB_DIR_INCLUDE=$BDB_DIR/include
   AC_MSG_RESULT($BDB_DIR_INCLUDE)
  else
    if test -f $BDB_DIR/include/db4/db.h; then
     BDB_DIR_INCLUDE=$BDB_DIR/include/db4
     AC_MSG_RESULT($BDB_DIR_INCLUDE)
    else
     WITH_BDB4="no"
     AC_MSG_RESULT(not found!)
    fi
  fi

  AC_MSG_CHECKING(for Berkeley DB libraries)
  if test -f $BDB_DIR/lib/libdb-4.0.la; then
   BDB_DIR_LIB=$BDB_DIR/lib
   BDB_LIB=libdb-4.0.la
   AC_MSG_RESULT($BDB_DIR_LIB $BDB_LIB)
  else
    if test -f $BDB_DIR/lib/libdb4.la; then
     BDB_DIR_LIB=$BDB_DIR/lib
     BDB_LIB=libdb4.la
     AC_MSG_RESULT($BDB_DIR_LIB $BDB_LIB)
    else
     WITH_BDB4="no"
     AC_MSG_RESULT(not found!)
    fi
  fi

  AC_SUBST(BDB_DIR)
  AC_SUBST(BDB_DIR_INCLUDE)
  AC_SUBST(BDB_DIR_LIB)
  AC_SUBST(BDB_LIB)
  dnl 4.0 is required...
  BDB_VERSION="4.0"
  AC_SUBST(BDB_VERSION)
fi
AM_CONDITIONAL(WITH_BDB4, test x$WITH_BDB4 = xyes)

dnl *** Yacc/Bison support

if test "x$USE_MAINTAINER_MODE" == xyes; then
	DEV="yes"
	AC_MSG_RESULT([Setting up for development: -Wall, flex, bison])
fi

AM_CONDITIONAL(DEV, test x$DEV = xyes)

AC_CHECK_PROGS(AR, ar aal, ar)
AC_CHECK_PROGS(PERL, perl5 perl)  

AC_MSG_CHECKING(whether to define _REENTRANT)
AC_ARG_ENABLE(reentrant, [  --enable-reentrant      define _REENTRANT to enable reentrant system calls],
[ case "${enableval}" in
  no)
    AC_MSG_RESULT(no)
    ac_cv_reentrant=no
    ;;
  *) 
    AC_MSG_RESULT(yes)
    AC_DEFINE(ICAL_REENTRANT, ,[Define if we want _REENTRANT]) [CFLAGS="$CFLAGS -D_REENTRANT"]
    ac_cv_reentrant=yes
    ;;
  esac ],
  AC_MSG_RESULT(no)
)

dnl *** libicalcap support (experimental)

AC_MSG_CHECKING(for CAP/BEEP support)
AC_ARG_WITH(libicalcap, [  --with-libicalcap             Add support for CAP/BEEP support],
[case $with_libicalcap in  
    yes)	AC_MSG_RESULT(yes)
		AC_MSG_RESULT(  Adding CAP/BEEP support)
		WITH_CAP="yes"
		;;
    no)		AC_MSG_RESULT(no)
		;;
    *)		AC_MSG_RESULT(no)
		AC_MSG_RESULT(Ignoring unknown argument to --with-libicalcap: $with_libicalcap)
		;;
esac],
AC_MSG_RESULT(no))

if test x$WITH_CAP = xyes; then
  AC_MSG_CHECKING(for CAP/BEEP files)
  PKG_CHECK_MODULES(RRCAP, roadrunner	>= 0.9 \
                         rrtls		>= 0.9 \
                         rrsasl		>= 0.9 \
                         rrcap		>= 0.9)

  AC_SUBST(RRCAP_CFLAGS)
  AC_SUBST(RRCAP_LIBS)
fi
AM_CONDITIONAL(WITH_CAP, test x$WITH_CAP = xyes)

dnl **************************************************
dnl test/regression.c (and maybe others) needs this defined
dnl **************************************************
AC_DEFINE(ICAL_ERRORS_ARE_FATAL,0,[Define to make icalerror_* calls abort instead of internally signalling an error])
AC_DEFINE(NO_WARN_DEPRECATED,1,[Define to 1 if you DO NOT WANT to see deprecated messages])
AC_DEFINE(NO_WARN_ICAL_MALFORMEDDATA_ERROR_HACK,1,[Define to 1 if you DO NO WANT to see the warning messages related to ICAL_MALFORMEDDATA_ERROR and parsing .ics zoneinfo files])

AC_DEFINE(ICAL_UNIX_NEWLINE,1,[Define to terminate lines with "\n" instead of "\r\n"])
dnl AC_DEFINE(ICAL_NO_EMPTY_ARRAY_DECL,1,[Define to 1 if your compile does not like lines like: struct something foo[]])

dnl Checks for libraries.
dnl Replace `main' with a function in -lical:
dnl AC_CHECK_LIB(ical, main)

dnl Check if this system can use pthreads
dnl HACK to support FreeBSD 4.x pthread

case "${host}" in 
        *-*-freebsdelf4* )
		AC_MSG_RESULT(checking for pthread_create in -lpthread... -pthread (FreeBSD 4.x style))
		AC_DEFINE(HAVE_PTHREAD, ,[Define if we have pthread.])
		PTHREAD_LIBS=-pthread;;

	*)
	AC_CHECK_LIB(pthread,pthread_create,have_pthread=yes)
	if test "x$have_pthread" = xyes; then
	   AC_DEFINE(HAVE_PTHREAD, ,[Define if we have pthread.])
	   PTHREAD_LIBS=-lpthread
	fi;;
esac

AM_CONDITIONAL(HAVE_PTHREAD, test "$have_pthread" = "yes")
AC_SUBST(PTHREAD_LIBS)

dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(assert.h ctype.h pthread.h stdint.h time.h sys/types.h unistd.h wctype.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_TYPE_MODE_T
AC_CHECK_TYPE(intptr_t)
AC_STRUCT_TM

dnl Checks for library functions.
AC_CHECK_FUNCS(gmtime_r isspace iswspace strdup snprintf)

dnl **************************************************
dnl * Check for C++
dnl **************************************************

AC_ARG_ENABLE(cxx, 
[  --enable-cxx           Enable C++ bindings],,enable_cxx="no")
AM_CONDITIONAL(WITH_CXX_BINDINGS, test x$enable_cxx = "xyes")

dnl **************************************************
dnl * Check for Java
dnl **************************************************

AC_ARG_ENABLE(java, 
[  --enable-java          Enable Java bindings],,enable_java="no")
if test "x$enable_java" = "xyes"; then
  AC_PATH_PROG(JAR, jar, /usr/local/bin/jar, /usr/local/bin:$PATH)
  AC_PATH_PROG(JAVA, java, /usr/local/bin/java, /usr/local/bin:$PATH)
  AC_PATH_PROG(JAVAC, javac, /usr/local/bin/javac, /usr/local/bin:$PATH)
  AC_PATH_PROG(JAVAH, javah, /usr/local/bin/javah, /usr/local/bin:$PATH)
  AC_SUBST(JAR)
  AC_SUBST(JAVA)
  AC_SUBST(JAVAC)
  AC_SUBST(JAVAH)

  dnl truly gross

  case "${host}" in
        *-*-solaris*)   JAVA_PLATFORM="solaris" ;;
        *-*-linux*)     JAVA_PLATFORM="linux" ;;
        *-*-freebsd*)   JAVA_PLATFORM="bsd" ;;
        *-*-aix*)       JAVA_PLATFORM="aix" ;;
        *-sequent-*)    JAVA_PLATFORM="ptx" ;;
        *-*-hpux*)      JAVA_PLATFORM="hpux" ;;
        *-*-irix*)      JAVA_PLATFORM="irix" ;;
        *-*-os390*)     JAVA_PLATFORM="os390" ;;
        *-*-os400*)     JAVA_PLATFORM="os400" ;;
        *-apple-darwin*|*-apple-rhapsody*)      JAVA_PLATFORM="darwin" ;;
        *)              JAVA_PLATFORM="unknown" ;;
  esac

  AC_SUBST(JAVA_PLATFORM)
fi

AM_CONDITIONAL(WITH_JAVA, test x$enable_java = "xyes")

dnl **************************************************
dnl * Check for Python
dnl **************************************************
python_val=false
AC_ARG_ENABLE(python, 
[  --enable-python         Enable python bindings],,enable_python="no")

if test "x$enable_python" = "xyes"; then
	python_val=true
else
	python_val=false
fi

if test $python_val = true; then
        
	AC_CHECK_PROG(python_val, python, true, false)
	AC_CHECK_PROG(python_val, swig, true, false)

	  PY_PREFIX=`python -c 'import sys ; print sys.prefix'`
	  PY_EXEC_PREFIX=`python -c 'import sys ; print sys.exec_prefix'`
	  changequote(<<, >>)dnl
	  PY_VERSION=`python -c 'import sys ; print sys.version[0:3]'`
	  changequote([, ])dnl
	  if test -f $PY_PREFIX/include/python$PY_VERSION/Python.h; then
		  PY_LIBS="python$PY_VERSION"
		  PY_LIB_LOC="-L$PY_EXEC_PREFIX/lib/python$PY_VERSION/config"
		  PY_CFLAGS="-I$PY_PREFIX/include/python$PY_VERSION"
		  PY_MAKEFILE="$PY_EXEC_PREFIX/lib/python$PY_VERSION/config/Makefile"
		  PY_LOCALMODLIBS=`sed -n -e 's/^LOCALMODLIBS=\(.*\)/\1/p' $PY_MAKEFILE`
		  PY_BASEMODLIBS=`sed -n -e 's/^BASEMODLIBS=\(.*\)/\1/p' $PY_MAKEFILE`
		  PY_OTHER_LIBS=`sed -n -e 's/^LIBS=\(.*\)/\1/p' $PY_MAKEFILE`
		  PY_EXTRA_LIBS="$PY_LOCALMODLIBS $PY_BASEMODLIBS $PY_OTHER_LIBS"
		  AC_SUBST(PY_LIBS)
		  AC_SUBST(PY_LIB_LOC)
		  AC_SUBST(PY_CFLAGS)
		  AC_SUBST(PY_EXTRA_LIBS)
	  else
		  python_val=false
	  fi
fi
AM_CONDITIONAL(WITH_PYTHON, test $python_val = true)

AC_OUTPUT([
Makefile
design-data/Makefile
doc/Makefile
examples/Makefile
scripts/Makefile
src/Makefile
src/libical/Makefile
src/libical/icalversion.h
src/libicalcap/Makefile
src/libicalss/Makefile
src/libicalvcal/Makefile
src/python/Makefile
src/java/Makefile
src/test/Makefile
test-data/Makefile
zoneinfo/Makefile
])

