#
# Zabbix
# Copyright (C) 2001-2023 Zabbix SIA
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#

AC_DEFUN([LIBXML2_CHECK_CONFIG],
[
    LIBXML2_CONFIG="no"

    AC_ARG_WITH(libxml2,
        [
If you want to use XML library:
AS_HELP_STRING([--with-libxml2@<:@=ARG@:>@],
    [use libxml2 client library @<:@default=no@:>@, see PKG_CONFIG_PATH environment variable to specify .pc file location]
        )],
        [
        if test "$withval" = "no"; then
            want_libxml2="no"
        elif test "$withval" = "yes"; then
            want_libxml2="yes"
        else
            want_libxml2="yes"
        fi
        ],
        [want_libxml2="no"]
    )

    LIBXML2_CFLAGS=""
    LIBXML2_LDFLAGS=""
    LIBXML2_LIBS=""
    LIBXML2_VERSION=""

    dnl
    dnl Check libxml2 libraries
    dnl

    if test "$want_libxml2" = "yes"; then
        AC_REQUIRE([PKG_PROG_PKG_CONFIG])
        m4_ifdef([PKG_PROG_PKG_CONFIG], [PKG_PROG_PKG_CONFIG()], [:])

        if test -x "$PKG_CONFIG"; then

            LIBXML2_CFLAGS="`$PKG_CONFIG --cflags libxml-2.0`"

            _full_libxml2_libs="`$PKG_CONFIG --libs libxml-2.0`"

            for i in $_full_libxml2_libs; do
                case $i in
                   -lxml2)
                        ;;
                   -L*)
                        LIBXML2_LDFLAGS="${LIBXML2_LDFLAGS} $i"
                        ;;
                   -R*)
                        LIBXML2_LDFLAGS="${LIBXML2_LDFLAGS} -Wl,$i"
                        ;;
                esac
            done

            if test "x$enable_static" = "xyes"; then
                for i in $_full_libxml2_libs; do
                    case $i in
                        -lxml2)
                            ;;
                        -l*)
                            _lib_name="`echo "$i" | cut -b3-`"
                            AC_CHECK_LIB($_lib_name, main, [
                                    LIBXML2_LIBS="$LIBXML2_LIBS $i"
                                    ],[
                                    AC_MSG_ERROR([Not found $_lib_name library])
                                    ])
                            ;;
                    esac
                done
            fi

            _save_libxml2_libs="${LIBS}"
            _save_libxml2_ldflags="${LDFLAGS}"
            _save_libxml2_cflags="${CFLAGS}"
            LIBS="${LIBS} ${LIBXML2_LIBS}"
            LDFLAGS="${LDFLAGS} ${LIBXML2_LDFLAGS}"
            CFLAGS="${CFLAGS} ${LIBXML2_CFLAGS}"

            AC_CHECK_LIB(xml2, xmlReadMemory, [
                    LIBXML2_LIBS="-lxml2 ${LIBXML2_LIBS}"
                    ],[
                    AC_MSG_ERROR([Not found libxml2 library])
                    ])

            LIBS="${_save_libxml2_libs}"
            LDFLAGS="${_save_libxml2_ldflags}"
            CFLAGS="${_save_libxml2_cflags}"
            unset _save_libxml2_libs
            unset _save_libxml2_ldflags
            unset _save_libxml2_cflags

            LIBXML2_VERSION=`$PKG_CONFIG --version libxml-2.0`

            AC_DEFINE([HAVE_LIBXML2], [1], [Define to 1 if libxml2 libraries are available])

            found_libxml2="yes"
        else
            found_libxml2="no"
        fi
    fi

    AC_SUBST([LIBXML2_VERSION])
    AC_SUBST([LIBXML2_CFLAGS])
    AC_SUBST([LIBXML2_LDFLAGS])
    AC_SUBST([LIBXML2_LIBS])
])