dnl Process this file with autoconf to produce a configure script
AC_INIT(SAXCount/SAXCount.hpp)

dnl Checks for programs
AC_PROG_CC
AC_PROG_CXX
AC_PROG_INSTALL
AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true)

dnl Checks for libraries
AC_CHECK_LIB(m, floor)

dnl special pthread handling (AIX uses pthreads instead of pthread)
AC_CHECK_LIB(pthread, pthread_create)
if test $ac_cv_lib_pthread_pthread_create = no; then
AC_CHECK_LIB(pthreads, pthread_create)
fi

dnl Checks for header files
AC_CHECK_HEADERS(inttypes.h)
if test $ac_cv_header_inttypes_h = no; then
HAVE_INTTYPES_H=0
else
HAVE_INTTYPES_H=1
fi
AC_SUBST(HAVE_INTTYPES_H)

dnl Determine the host system and Makefile fragment
AC_CANONICAL_HOST

dnl Platform-specific Makefile setup
case "${host}" in
        *-*-solaris*)   platform=SOLARIS ;;
        *-*-linux*)     platform=LINUX ;;
        *-*-aix*)       platform=AIX ;;
        *-*-hp*)        platform=HPUX ;;
        *-*-mvs*)       platform=OS390 ;;
        *)              platform=UNKNOWN ;;
esac
AC_SUBST(platform)

compiler=${CXX}
AC_SUBST(compiler)

# prefix=${prefix}
AC_SUBST(prefix)

cxxflags=${CXXFLAGS}
AC_SUBST(cxxflags)

cflags=${CFLAGS}
AC_SUBST(cflags)

dnl output the Makefiles
AC_OUTPUT([Makefile \
SAXCount/Makefile \
DOMCount/Makefile \
SAXPrint/Makefile \
DOMPrint/Makefile \
MemParse/Makefile \
Redirect/Makefile \
PParse/Makefile \
StdInParse/Makefile \
EnumVal/Makefile])

