dnl ====================================================================
dnl Configuration script for Snowballs 2
dnl ====================================================================


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

# If you want to change the version, must must change AC_INIT
# *and* AC_SUBST(LIBTOOL_VERSION)

AC_PREREQ(2.57)
AC_INIT([snowballs],[0.3.0],[nel-all@nevrax.org])
AM_INIT_AUTOMAKE([tar-ustar])

AM_CONFIG_HEADER(config.h)

AC_SUBST(LIBTOOL_VERSION, [0:3:0])

dnl ====================================================================
dnl Checks for programs.
dnl ====================================================================
AC_CANONICAL_HOST
AC_PROG_CXX
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
AM_PROG_LIBTOOL
AM_SANITY_CHECK

AC_SYS_LARGEFILE

AM_MAINTAINER_MODE

dnl The following hack should ensure that configure doesn't add optimizing
dnl or debugging flags to CFLAGS or CXXFLAGS
CXXFLAGS="$CXXFLAGS -ftemplate-depth-24"

AC_CHECK_LIB([pthread], [pthread_create])
AC_CHECK_LIB([dl], [dlopen])
AC_CHECK_LIB([rt], [clock_gettime])

dnl ====================================================================
dnl Checks Snowballs modules (Client / Server) to install / Disable
dnl ====================================================================

SNO_SUBDIRS=""

dnl Client
AC_ARG_ENABLE( client,
    [  --disable-client        disable compilation and install of Snowballs Client.],
    [ AC_MSG_RESULT(disable Snowballs Client.) ],
    [ SNO_SUBDIRS="$SNO_SUBDIRS client"
      enable_client="yes" ] )

dnl Server
AC_ARG_ENABLE( server,
    [  --disable-server        disable compilation and install of Snowballs Server.],
    [ AC_MSG_RESULT(disable Snowballs Server.) ],
    [ SNO_SUBDIRS="$SNO_SUBDIRS server"
      enable_server="yes" ] )

AC_SUBST(SNO_SUBDIRS)


dnl ====================================================================
dnl Configure Settings
dnl ====================================================================

dnl Set the C++ compiler as the default compiler for the configure script
dnl compilation tests
AC_LANG_CPLUSPLUS


dnl ====================================================================
dnl Debug/optimized compilation mode
dnl ====================================================================

AM_NEL_DEBUG


dnl ====================================================================
dnl Checks for typedefs, structures, and compiler characteristics.
dnl ====================================================================

# Test endianness
AC_C_BIGENDIAN

# Supress GCC "multi-character character constant" warnings.
if test "X$CC" = "Xgcc";
then
    if test "$with_debug" = "yes"
    then
        #
        # When debugging variables are declared for the sole purpose of
        # inspecting their content with a debugger. They are not used
        # in the code itself and this is legitimate, hence the -Wno-unused
        #
        CXXFLAGS="$CXXFLAGS -Wno-unused"
    fi
fi

# Add some common define
if test "$ac_cv_cxx_compiler_gnu" = "yes";
then
    CXXFLAGS="$CXXFLAGS -D_REENTRANT -Wall -ansi -W -Wpointer-arith -Wsign-compare -Wno-deprecated-declarations -Wno-multichar -Wno-long-long -Wno-unused"
fi


dnl ====================================================================
dnl Checks for header and lib files.
dnl ====================================================================

AC_FUNC_ALLOCA
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_TIME
AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h malloc.h netdb.h netinet/in.h stddef.h stdlib.h string.h sys/ioctl.h sys/socket.h unistd.h sys/time.h])
AC_CHECK_LIB([pthread], [pthread_create])
AC_CHECK_LIB([dl], [dlopen])

dnl ====================================================================
dnl Checks for typedefs, structures, and compiler characteristics.
dnl ====================================================================

AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_C_VOLATILE
AC_CHECK_TYPES([ptrdiff_t])
AC_CHECK_TYPES([size_t])
AC_CHECK_TYPES([uintptr_t])

dnl ====================================================================
dnl X11

AC_PATH_X

if test ! "$no_x" = "yes" ; then
    if test ! X"$x_libraries" = X
    then
        LIBS="$LIBS -L$x_libraries"
    fi
    if test ! X"$x_includes" = X
    then
        CXXFLAGS="$CXXFLAGS -I$x_includes"
    fi
else
    if test "$enable_client" = "yes"
    then
        AC_MSG_ERROR(X11 must be installed.)
    fi
fi


dnl ====================================================================
dnl Checks for libraries.
dnl ====================================================================

dnl ====================================================================
dnl OpenAL

AM_PATH_OPENAL($enable_client)


dnl ====================================================================
dnl LibXML

dnl Use C compiler as a default for the libxml tests.
AC_LANG([C])

AM_PATH_XML2([2.0.0], [], [AC_MSG_ERROR([libxml2 must be installed])])

CXXFLAGS="$CXXFLAGS $XML_CFLAGS $XML_CPPFLAGS"

LIBS="$LIBS $XML_LIBS"

dnl ====================================================================
dnl NeL

dnl         misc   net    3d              pacs            sound ai    georges
AM_PATH_NEL("yes", "yes", $enable_client, $enable_client, "no", "no", "no")

dnl ====================================================================
dnl FreeType 2

AM_PATH_FREETYPE($enable_client)

dnl ====================================================================
dnl Checks for library functions.
dnl ====================================================================

dnl ====================================================================
dnl Snowballs data, configuration and logs file location
dnl ====================================================================

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

AC_ARG_WITH(database,
    [  --with-database[=DIR]
                          use DIR instead of the default prefix/share//games/snowballs],
    [database=$withval],
    [database="${prefix}/share/games/snowballs"])
AC_SUBST(database)

SNOWBALLS_DATABASE='$database'
AC_SUBST([SNOWBALLS_DATABASE])

AC_ARG_WITH(sysconfdir,
    [  --with-sysconfdir[=DIR]
                          use DIR instead of the default sysconfdir/snowballs],
    [pkgsysconfdir=$withval],
    [pkgsysconfdir='${sysconfdir}/snowballs'])
AC_SUBST(pkgsysconfdir)

SNOWBALLS_CONFIG='$pkgsysconfdir'
AC_SUBST([SNOWBALLS_CONFIG])

AC_ARG_WITH(logdir,
    [  --with-logdir[=DIR]
                          use DIR instead of the default localstatedir/log/snowballs],
    [logdir=$withval],
    [logdir='${localstatedir}/log/snowballs'])
AC_SUBST(logdir)

SNOWBALLS_LOGS='$logdir'
#AH_TEMPLATE([SNOWBALLS_LOGS], [The path to where Snowballs logs should be stored.])
#AC_DEFINE_UNQUOTED([SNOWBALLS_LOGS], "$log_dir")
AC_SUBST([SNOWBALLS_LOGS])

dnl ====================================================================
dnl Output files to generate.
dnl ====================================================================

AC_CONFIG_FILES([Makefile					\
		client/Makefile					\
		client/client.cfg				\
		client/src/Makefile				\
		client/data/Makefile				\
		client/data/anims/Makefile			\
		client/data/maps/Makefile			\
		client/data/maps/texture_croisi/Makefile	\
		client/data/pacs/Makefile			\
		client/data/shapes/Makefile			\
		client/data/tiles/Makefile			\
		client/data/zones/Makefile			\
		server/Makefile					\
		server/frontend/Makefile			\
		server/frontend/src/Makefile			\
		server/chat/Makefile				\
		server/chat/src/Makefile			\
		server/position/Makefile			\
		server/position/src/Makefile			\
])
AC_OUTPUT

dnl End of configure.in