AC_INIT(src/logger.cpp)

# autoconf 2.50 or higher to rebuild aclocal.m4, because the
# AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro.
AC_PREREQ(2.50)

AC_CANONICAL_HOST
AC_CANONICAL_TARGET

#
# +1 : ? : +1  == new interface that does not break old one
# +1 : ? : 0   == new interface that breaks old one
#  ? : ? : 0   == no new interfaces, but breaks apps
#  ? :+1 : ?   == just some internal changes, nothing breaks but might work
#                 better
# CURRENT : REVISION : AGE
LT_VERSION=1:0:0

AC_SUBST(LT_VERSION)

AM_CONFIG_HEADER(include/log4cxx/config.h)

AM_INIT_AUTOMAKE(log4cxx, 0.0.1)

# Checks for programs
# ----------------------------------------------------------------------------

AM_PROG_LIBTOOL
AC_PROG_INSTALL
AC_PROG_MAKE_SET

AC_PROG_CXX([g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC QCC])

AC_PROG_CXXCPP
AC_LANG(C++)

# CXX fine tuning
case "$host" in
    *-dec-osf*)
	CXXFLAGS="$CXXFLAGS -std strict_ansi_errors" 
	;;
    *)
	;;
esac

# Checks header files
# ----------------------------------------------------------------------------
AC_CHECK_HEADERS(unistd.h)
AC_CHECK_HEADERS([io.h])

# Checks local idioms
# ----------------------------------------------------------------------------

# syslog_test

# Checks for libraries
# ----------------------------------------------------------------------------

# for SocketAppender
AC_CHECK_LIB(socket,socket, LIBS="-lsocket $LIBS",,)

# for DOMConfigurator
AC_CHECK_PROGS(XML_CONFIG, xml2-config, xml2-config, )
if test -n "$XML_CONFIG"
then
	AC_DEFINE(HAVE_LIBXML, [1], [Define if you have the libxml2 library.])
	LIBS="`$XML_CONFIG --libs` $LIBS"
	CPPFLAGS="`$XML_CONFIG --cflags` $CPPFLAGS"
fi

AC_PROG_RANLIB
AC_CHECK_HEADER(pthread.h, CPPFLAGS="-pthread $CPPFLAGS")

AC_MSG_CHECKING(for UTF-16 Unicode support)
AC_ARG_ENABLE(unicode,
	AC_HELP_STRING(--enable-unicode, UTF-16 Unicode support),
	AC_DEFINE(UNICODE, 1, UTF-16 Unicode support.)
	AC_MSG_RESULT(yes),
	AC_MSG_RESULT(no))

# Create files
# ----------------------------------------------------------------------------

AC_CONFIG_FILES([
Makefile
src/Makefile
msvc/Makefile
msvc/dll/Makefile
msvc/simplesocketserver/Makefile
msvc/tests/Makefile
msvc/tests/console_test/Makefile
tests/Makefile
tests/console_test/Makefile
include/Makefile
include/log4cxx/Makefile
include/log4cxx/helpers/Makefile
include/log4cxx/net/Makefile
include/log4cxx/nt/Makefile
include/log4cxx/spi/Makefile
include/log4cxx/varia/Makefile
include/log4cxx/xml/Makefile
])
AC_OUTPUT
