dnl Process this file with autoconf to produce a configure script
AC_INIT(src/xalanc/PlatformSupport/PlatformSupportDefinitions.hpp)

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


dnl  Check for gcc problems

if test "$CXX" = "g++" -o "$CXX" = "c++"; then

  AC_MSG_CHECKING([whether -fno-elide-constructors works correctly])

  old_cxxflags=$CXXFLAGS
  CXXFLAGS="$CXXFLAGS -fno-elide-constructors"

  AC_LANG_CPLUSPLUS

  AC_TRY_COMPILE([#include <vector>],
    [], 
    [AC_MSG_RESULT([yes])], 
    CXXFLAGS=$old_cxxflags
    [AC_MSG_RESULT([no])]);

fi

dnl
dnl Do not know how to use this macro, so comment it out.
dnl
dnl special pthread handling (AIX uses pthreads instead of pthread)
dnl AC_CHECK_LIB(pthread, pthread_create)
dnl if test $ac_cv_lib_pthread_pthread_create = no; then
dnl AC_CHECK_LIB(pthreads, pthread_create)
dnl fi
dnl

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 ;;
        *-*-freebsd*)   platform=FREEBSD ;;
        *-*-netbsd*)    platform=NETBSD ;;
        *-*-openbsd*)   platform=OPENBSD ;;
        *-*-irix*)      platform=IRIX ;;
        *-*-aix*)       platform=AIX ;;
        ia64-hp*)       platform=HPUX ; osver=HPUX11 ; osvariant=IA64;;
        *-*-hp*)        platform=HPUX ;
                        case "${host}" in
                            *-*-hpux11*)  osver=HPUX11;;
                            *-*-hpux10*)  osver=HPUX10;;
                            *)            osver=HPUX11;;
                        esac;;
        *-*-mvs*)       platform=OS390 ;;
        *-*-osf*)       platform=TRU64 ;;
        *-apple-darwin*)       platform=MACOSX ;;
        *-*-os400*)     platform=OS400 ;;
        *-*-OS400*)     platform=OS400 ;;
        *-*-cygwin*)    platform=CYGWIN ;;
        *-*-mingw*)     platform=MINGW ;;
        *)              platform=UNKNOWN ;;
esac

dnl Checks for libraries
if test "$platform" != "OS400"; then
	AC_CHECK_LIB(m, floor)
fi

dnl check if mbstowcs is available and can correctly count only
AC_HEADER_STDC
AC_CHECK_FUNCS([mbstowcs],,,)
if test x"$ac_cv_func_mbstowcs" = x"no"; then
	WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS"
else
AC_MSG_CHECKING(if mbstowcs can count only)
AC_TRY_RUN([
#if STDC_HEADERS
#include <stdlib.h>
#endif

int main(int argc, char *argv[])
{
	wchar_t in[5] = { 0x74, 0x65, 0x73, 0x74, 0x00 };

	if (wcstombs(0, in, 0) == -1) {
		exit(1);
	}

	exit(0);
}], [AC_MSG_RESULT(yes)],
	[WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS";
	 AC_MSG_RESULT(no)],
	[WCSTOMBS="-DXALAN_USE_XERCES_LOCAL_CODEPAGE_TRANSCODERS";
	 AC_MSG_RESULT(cross-compiling default)])
fi


AC_SUBST(platform)

cxx=${CXX}
AC_SUBST(cxx)

cc=${CC}
AC_SUBST(cc)

AC_SUBST(prefix)
dnl  Not used:
AC_SUBST(osver)

AC_SUBST(osvariant)

cxxflags=${CXXFLAGS}
AC_SUBST(cxxflags)

dnl  Not used:
cppflags=${CPPFLAGS}
AC_SUBST(cppflags)

cflags=${CFLAGS}
AC_SUBST(cflags)

ldflags=${LDFLAGS}
AC_SUBST(ldflags)

libs=${LIBS}
AC_SUBST(libs)

transcoder=${TRANSCODER}
AC_SUBST(transcoder)

xalan_locale_system=${XALAN_LOCALE_SYSTEM}
AC_SUBST(xalan_locale_system)
xalan_locale=${XALAN_LOCALE}
AC_SUBST(xalan_locale)
wcstombs=${WCSTOMBS}
AC_SUBST(wcstombs)

dnl  Not used:
threads=${THREADS}
AC_SUBST(threads)

bitstobuild=${BITSTOBUILD}
AC_SUBST(bitstobuild)

dnl output the Makefiles
if test ! -d src; then
  mkdir src
fi
AC_OUTPUT([Makefile.incl \
	    Makefile \
            src/xalanc/Makefile \
            src/xalanc/Utils/Makefile \
            src/xalanc/Utils/MsgCreator/Makefile \
            src/xalanc/Utils/XalanMsgLib/Makefile \
            samples/Makefile \
            Tests/Makefile])