dnl
dnl Process this file with autoconf to produce a configure script.
dnl
AC_REVISION($Id: configure.in,v 1.4 2004/08/14 07:41:11 balls Exp $)

#--------------------------------------------------------------------
# Configure script for package 'TclLibxml2'.
# TEA compliant.
#--------------------------------------------------------------------

#--------------------------------------------------------------------
# This very first macro is used to verify that the configure script can 
# find the sources.  The argument to AC_INIT is a unique filename for
# this package.
#--------------------------------------------------------------------

AC_INIT(tcllibxml2.c)

AC_CONFIG_AUX_DIR(../tclconfig)
CONFIGDIR=${srcdir}/../tclconfig
AC_SUBST(CONFIGDIR)

#--------------------------------------------------------------------
# Setting our package name and version numbers.  The NODOT_VERSION is
# required for constructing the library name on systems that don't like
# dots in library names (Windows).  The VERSION variable is used on the
# other systems.
#--------------------------------------------------------------------

PACKAGE=TclXML_libxml2

MAJOR_VERSION=3
MINOR_VERSION=1
#MAJOR_VERSION=10
#MINOR_VERSION=0
PATCHLEVEL=

VERSION=${MAJOR_VERSION}.${MINOR_VERSION}${PATCHLEVEL}
NODOT_VERSION=${MAJOR_VERSION}${MINOR_VERSION}
TCLXML_LIBXML2_VERSION=${VERSION}

AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
AC_SUBST(TCLXML_LIBXML2_VERSION)

# This package name must be replaced statically for AC_SUBST to work
AC_SUBST(TclXML_libxml2_LIB_FILE)
# Substitute stub_LIB_FILE if your package creates a stub library too.
AC_SUBST(TclXML_libxml2stub_LIB_FILE)

#--------------------------------------------------------------------
# This was placed here so that we can compile with -DVERSION="1.2" to
# encode the package version directly into the source files.
#--------------------------------------------------------------------

eval AC_DEFINE_UNQUOTED(VERSION, "${VERSION}")
eval AC_DEFINE_UNQUOTED(TCLXML_LIBXML2_VERSION, "${TCLXML_LIBXML2_VERSION}")

#--------------------------------------------------------------------
# Call TEA_INIT as the first TEA_ macro to set up initial vars.
# This will define a ${TEA_PLATFORM} variable == "unix" or "windows".
#--------------------------------------------------------------------

TEA_INIT

#--------------------------------------------------------------------
# Load the tclConfig.sh file
#--------------------------------------------------------------------

TEA_PATH_TCLCONFIG
TEA_LOAD_TCLCONFIG

#-----------------------------------------------------------------------
# Handle the --prefix=... option by defaulting to what Tcl gave.
# Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER.
#-----------------------------------------------------------------------

TEA_PREFIX

#-----------------------------------------------------------------------
# Standard compiler checks.
# This sets up CC by using the CC env var, or looks for gcc otherwise.
# This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create
# the basic setup necessary to compile executables.
#-----------------------------------------------------------------------

TEA_SETUP_COMPILER

TEA_PATH_CONFIG(Tclxml)
TEA_LOAD_CONFIG(Tclxml)
AC_SUBST(TclXML_VERSION)

#--------------------------------------------------------------------
# __CHANGE__
# Choose which headers you need.  Extension authors should try very
# hard to only rely on the Tcl public header files.  Internal headers
# contain private data structures and are subject to change without
# notice.
# This MUST be called after TEA_LOAD_TCLCONFIG / TEA_LOAD_TKCONFIG
#--------------------------------------------------------------------

TEA_PUBLIC_TCL_HEADERS
TEA_PRIVATE_TCL_HEADERS

#--------------------------------------------------------------------
# We need to know where the TclXML headers are installed,
# which may be different to the Tcl public/private headers
#--------------------------------------------------------------------

TCLXML_INCLUDES=-I$prefix/include
AC_SUBST(TCLXML_INCLUDES)

#--------------------------------------------------------------------
# A few miscellaneous platform-specific items:
#
# We have to define a special symbol for Windows (BUILD_TclXML_libxml2 in this
# case) so that we create the export library with the dll.
#
# Windows creates a few extra files that need to be cleaned up.
# We can add more files to clean if our extension creates any extra
# files in the future.
#
# Define any extra compiler flags in the PACKAGE_CFLAGS variable.
# These will be appended to the current set of compiler flags for
# your system.
#--------------------------------------------------------------------

if test "${TEA_PLATFORM}" = "windows" ; then
    AC_DEFINE(BUILD_TclXML_libxml2)
    CLEANFILES="pkgIndex.tcl *.lib *.dll *.exp *.ilk *.pdb vc*.pch"
    EXTRA_SOURCES='$(WIN_SOURCES)'
else
    CLEANFILES="pkgIndex.tcl"
    EXTRA_SOURCES='$(UNIX_SOURCES)'
fi
AC_SUBST(CLEANFILES)
AC_SUBST(EXTRA_SOURCES)

#--------------------------------------------------------------------
# Check whether --enable-threads or --disable-threads was given.
# So far only Tcl responds to this one.
#--------------------------------------------------------------------

TEA_ENABLE_THREADS

#--------------------------------------------------------------------
# The statement below defines a collection of symbols related to
# building as a shared library instead of a static library.
#--------------------------------------------------------------------

TEA_ENABLE_SHARED

#--------------------------------------------------------------------
# This macro figures out what flags to use with the compiler/linker
# when building shared/static debug/optimized objects.  This information
# can be taken from the tclConfig.sh file, but this figures it all out.
#--------------------------------------------------------------------

TEA_CONFIG_CFLAGS

#--------------------------------------------------------------------
# Set the default compiler switches based on the --enable-symbols option.
#--------------------------------------------------------------------

TEA_ENABLE_SYMBOLS

#--------------------------------------------------------------------
# Everyone should be linking against the Tcl stub library.  If you
# can't for some reason, remove this definition.  If you aren't using
# stubs, you also need to modify the SHLIB_LD_LIBS setting below to
# link against the non-stubbed Tcl library.
#--------------------------------------------------------------------

AC_DEFINE(USE_TCL_STUBS)
AC_DEFINE(USE_TCLXML_STUBS)

#--------------------------------------------------------------------
# This macro generates a line to use when building a library.  It
# depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS,
# and TEA_LOAD_TCLCONFIG macros above.
#--------------------------------------------------------------------

TEA_MAKE_LIB

#--------------------------------------------------------------------
# On Mac OS X we may want to build as a framework.
# This affects the location and naming of headers and libaries.
#--------------------------------------------------------------------

AC_ARG_ENABLE(framework, [  --enable-framework      build as a Mac OS X framework],
        [tcl_ok=$enableval], [tcl_ok=$1])

#--------------------------------------------------------------------
# libxml2 ----------------------------------------------------------
#--------------------------------------------------------------------
# Ask the user where to find the headers and libraries of libxml2.
# Remember this information for the generated files.
#--------------------------------------------------------------------

AC_MSG_CHECKING([for libxml2 headers])

with_xml2include=NONE
AC_ARG_WITH(libxml2-include,
    [  --with-libxml2-include      directory containing the libxml2 header files],
    with_xml2include=${withval})

LIBXML2_INCLUDEDIR=""
for d in                        \
    $with_xml2include           \
    $with_xml2include/libxml2   \
    $prefix/include             \
    $prefix/include/libxml2     \
    /usr/include                \
    /usr/include/libxml2        \
    /usr/local/include          \
    /usr/local/include/libxml2
do
    if test -f "$d/xpath.h" ; then
        LIBXML2_INCLUDEDIR="$d"
        break
    fi
    if test -f "$d/libxml/xpath.h" ; then
        LIBXML2_INCLUDEDIR="$d"
        break
    fi
done
if test "x$LIBXML2_INCLUDEDIR" = "x"; then
    AC_MSG_ERROR([not found, please use --with-libxml2-include])
else
    AC_MSG_RESULT([${LIBXML2_INCLUDEDIR}])
fi
if test "${TEA_PLATFORM}" = "windows"; then
    LIBXML2_INCLUDEDIR=\"`${CYGPATH} ${LIBXML2_INCLUDEDIR} 2>/dev/null`\"
fi
AC_SUBST(LIBXML2_INCLUDEDIR)

#--------------------------------------------------------------------

AC_MSG_CHECKING([for libxml2 library])

with_xml2lib=NONE
AC_ARG_WITH(libxml2-lib,
    [  --with-libxml2-lib      directory containing the libxml2 library],
    with_xml2lib=${withval})

LIBXML2_LIBDIR=""
for d in                \
    $with_xml2lib       \
    $exec_prefix/lib    \
    /usr/lib            \
    /usr/local/lib
do
    if test -f "$d/libxml2.so" ; then
        LIBXML2_LIBDIR="$d"
        break
    fi
    if test -f "$d/libxml2.sl" ; then
        LIBXML2_LIBDIR="$d"
        break
    fi
    if test -f "$d/libxml2.dll" ; then
        LIBXML2_LIBDIR="$d"
        break
    fi
    if test "${enable_framework}" = "yes" -a -f "$d/libxml" ;  then
        LIBXML2_LIBDIR="$d"
        break
    fi
    if test -f "$d/libxml2.dylib" ; then
        LIBXML2_LIBDIR="$d"
        break
    fi
done
if test "x$LIBXML2_LIBDIR" = "x"; then
    AC_MSG_ERROR([not found, please use --with-libxml2-lib])
else
    AC_MSG_RESULT([${LIBXML2_LIBDIR}])
fi
AC_SUBST(LIBXML2_LIBDIR)

#--------------------------------------------------------------------
if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes" ; then
    AC_MSG_CHECKING([for iconv library])

    with_iconvlib=NONE
    AC_ARG_WITH(iconv-lib,
        [  --with-iconv-lib      directory containing the iconv library],
        with_iconvlib=${withval})

    ICONV_LIBDIR=""
    for d in            	\
        $with_iconvlib  	\
        $exec_prefix/lib        \
        /usr/lib         	\
        /usr/local/lib
    do
        if test -f "$d/libiconv.so" ; then
            ICONV_LIBDIR="$d"
            break
        fi
        if test -f "$d/libiconv.sl" ; then
            ICONV_LIBDIR="$d"
            break
        fi
        if test -f "$d/iconv.dll" ; then
            ICONV_LIBDIR="$d"
            break
        fi
    done
    if test "x$ICONV_LIBDIR" = "x"; then
        AC_MSG_ERROR([not found, please use --with-iconv-lib])
    else
        AC_MSG_RESULT([${ICONV_LIBDIR}])
    fi
    AC_SUBST(ICONV_LIBDIR)
fi

#--------------------------------------------------------------------
# __CHANGE__
# Add platform libs to LIBS or SHLIB_LD_LIBS as necessary.
#--------------------------------------------------------------------

if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes" ; then
    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${LIBXML2_LIBDIR}/libxml2_a.lib`\""
    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${ICONV_LIBDIR}/iconv.lib`\""
    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${Tclxml_STUB_LIB_PATH}`\""
else
    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -L\${LIBXML2_LIBDIR} -lxml2"
    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${Tclxml_STUB_LIB_SPEC}"
fi

#--------------------------------------------------------------------
# Find tclsh so that we can run pkg_mkIndex to generate the pkgIndex.tcl
# file during the install process.  Don't run the TCLSH_PROG through
# ${CYGPATH} because it's being used directly by make.
# Require that we use a tclsh shell version 8.2 or later since earlier
# versions have bugs in the pkg_mkIndex routine.
# Add WISH as well if this is a Tk extension.
#--------------------------------------------------------------------

TEA_PROG_TCLSH

#--------------------------------------------------------------------
# These are for tcllibxml2Config.sh
#--------------------------------------------------------------------

# pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib)
eval pkglibdir="${libdir}/${PACKAGE}${VERSION}"
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
    eval tcllibxml2_LIB_FLAG="-ltcllibxml2${VERSION}${DBGX}"
else
    eval tcllibxml2_LIB_FLAG="-ltcllibxml2`echo ${VERSION} | tr -d .`${DBGX}"
fi
tcllibxml2_BUILD_LIB_SPEC="-L`pwd` ${tcllibxml2_LIB_FLAG}"
tcllibxml2_LIB_SPEC="-L${pkglibdir} ${tcllibxml2_LIB_FLAG}"

if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
    eval tcllibxml2_STUB_LIB_FLAG="-ltcllibxml2stub${VERSION}${DBGX}"
else
    eval tcllibxml2_STUB_LIB_FLAG="-ltcllibxml2stub`echo ${VERSION} | tr -d .`${DBGX}"
fi
tcllibxml2_BUILD_STUB_LIB_SPEC="-L`pwd` ${tcllibxml2_STUB_LIB_FLAG}"
tcllibxml2_STUB_LIB_SPEC="-L${pkglibdir} ${tcllibxml2_STUB_LIB_FLAG}"
tcllibxml2_BUILD_STUB_LIB_PATH="`pwd`/${tcllibxmlstub2_LIB_FILE}"
tcllibxml2_STUB_LIB_PATH="${pkglibdir}/${tcllibxmlstub2_LIB_FILE}"

AC_SUBST(tcllibxml2_BUILD_LIB_SPEC)
AC_SUBST(tcllibxml2_LIB_SPEC)
AC_SUBST(tcllibxml2_BUILD_STUB_LIB_SPEC)
AC_SUBST(tcllibxml2_STUB_LIB_SPEC)
AC_SUBST(tcllibxml2_BUILD_STUB_LIB_PATH)
AC_SUBST(tcllibxml2_STUB_LIB_PATH)

AC_SUBST(MAJOR_VERSION)
AC_SUBST(MINOR_VERSION)
AC_SUBST(PATCHLEVEL)


#--------------------------------------------------------------------
# Finally, substitute all of the various values into the Makefile.
# You may alternatively have a special pkgIndex.tcl.in or other files
# which require substituting th AC variables in.  Include these here.
#--------------------------------------------------------------------

AC_OUTPUT([Makefile tcllibxml2Config.sh])

#--------------------------------------------------------------------
