Blame m4/ax_lib_expat.m4

Packit Service a2489d
# ===========================================================================
Packit Service a2489d
#       http://www.gnu.org/software/autoconf-archive/ax_lib_expat.html
Packit Service a2489d
# ===========================================================================
Packit Service a2489d
#
Packit Service a2489d
# SYNOPSIS
Packit Service a2489d
#
Packit Service a2489d
#   AX_LIB_EXPAT([MINIMUM-VERSION])
Packit Service a2489d
#
Packit Service a2489d
# DESCRIPTION
Packit Service a2489d
#
Packit Service a2489d
#   This macro provides tests of availability of Expat XML Parser of
Packit Service a2489d
#   particular version or newer. This macro checks for Expat XML Parser
Packit Service a2489d
#   headers and libraries and defines compilation flags
Packit Service a2489d
#
Packit Service a2489d
#   Macro supports following options and their values:
Packit Service a2489d
#
Packit Service a2489d
#   1) Single-option usage:
Packit Service a2489d
#
Packit Service a2489d
#     --with-expat      -- yes, no, or path to Expat XML Parser
Packit Service a2489d
#                          installation prefix
Packit Service a2489d
#
Packit Service a2489d
#   2) Three-options usage (all options are required):
Packit Service a2489d
#
Packit Service a2489d
#     --with-expat=yes
Packit Service a2489d
#     --with-expat-inc  -- path to base directory with Expat headers
Packit Service a2489d
#     --with-expat-lib  -- linker flags for Expat
Packit Service a2489d
#
Packit Service a2489d
#   This macro calls:
Packit Service a2489d
#
Packit Service a2489d
#     AC_SUBST(EXPAT_CFLAGS)
Packit Service a2489d
#     AC_SUBST(EXPAT_LIBS)
Packit Service a2489d
#     AC_SUBST(EXPAT_LDFLAGS)
Packit Service a2489d
#     AC_SUBST(EXPAT_VERSION)  -- only if version requirement is used
Packit Service a2489d
#
Packit Service a2489d
#   And sets:
Packit Service a2489d
#
Packit Service a2489d
#     HAVE_EXPAT
Packit Service a2489d
#
Packit Service a2489d
# LICENSE
Packit Service a2489d
#
Packit Service a2489d
#   Copyright (c) 2008 Mateusz Loskot <mateusz@loskot.net>
Packit Service a2489d
#
Packit Service a2489d
#   Copying and distribution of this file, with or without modification, are
Packit Service a2489d
#   permitted in any medium without royalty provided the copyright notice
Packit Service a2489d
#   and this notice are preserved. This file is offered as-is, without any
Packit Service a2489d
#   warranty.
Packit Service a2489d
Packit Service a2489d
#serial 10
Packit Service a2489d
Packit Service a2489d
AC_DEFUN([AX_LIB_EXPAT],
Packit Service a2489d
[
Packit Service a2489d
    AC_ARG_WITH([expat],
Packit Service a2489d
        AS_HELP_STRING([--with-expat=@<:@ARG@:>@],
Packit Service a2489d
            [use Expat XML Parser from given prefix (ARG=path); check standard prefixes (ARG=yes); disable (ARG=no)]
Packit Service a2489d
        ),
Packit Service a2489d
        [
Packit Service a2489d
        if test "$withval" = "yes"; then
Packit Service a2489d
            if test -f /usr/local/include/expat.h ; then
Packit Service a2489d
                expat_prefix=/usr/local
Packit Service a2489d
            elif test -f /usr/include/expat.h ; then
Packit Service a2489d
                expat_prefix=/usr
Packit Service a2489d
            else
Packit Service a2489d
                expat_prefix=""
Packit Service a2489d
            fi
Packit Service a2489d
            expat_requested="yes"
Packit Service a2489d
        elif test -d "$withval"; then
Packit Service a2489d
            expat_prefix="$withval"
Packit Service a2489d
            expat_requested="yes"
Packit Service a2489d
        else
Packit Service a2489d
            expat_prefix=""
Packit Service a2489d
            expat_requested="no"
Packit Service a2489d
        fi
Packit Service a2489d
        ],
Packit Service a2489d
        [
Packit Service a2489d
        dnl Default behavior is implicit yes
Packit Service a2489d
        if test -f /usr/local/include/expat.h ; then
Packit Service a2489d
            expat_prefix=/usr/local
Packit Service a2489d
        elif test -f /usr/include/expat.h ; then
Packit Service a2489d
            expat_prefix=/usr
Packit Service a2489d
        else
Packit Service a2489d
            expat_prefix=""
Packit Service a2489d
        fi
Packit Service a2489d
        ]
Packit Service a2489d
    )
Packit Service a2489d
Packit Service a2489d
    AC_ARG_WITH([expat-inc],
Packit Service a2489d
        AS_HELP_STRING([--with-expat-inc=@<:@DIR@:>@],
Packit Service a2489d
            [path to Expat XML Parser headers]
Packit Service a2489d
        ),
Packit Service a2489d
        [expat_include_dir="$withval"],
Packit Service a2489d
        [expat_include_dir=""]
Packit Service a2489d
    )
Packit Service a2489d
    AC_ARG_WITH([expat-lib],
Packit Service a2489d
        AS_HELP_STRING([--with-expat-lib=@<:@ARG@:>@],
Packit Service a2489d
            [link options for Expat XML Parser libraries]
Packit Service a2489d
        ),
Packit Service a2489d
        [expat_lib_flags="$withval"],
Packit Service a2489d
        [expat_lib_flags=""]
Packit Service a2489d
    )
Packit Service a2489d
Packit Service a2489d
    EXPAT_CFLAGS=""
Packit Service a2489d
    EXPAT_LIBS=""
Packit Service a2489d
    EXPAT_VERSION=""
Packit Service a2489d
Packit Service a2489d
    dnl
Packit Service a2489d
    dnl Collect include/lib paths and flags
Packit Service a2489d
    dnl
Packit Service a2489d
    run_expat_test="no"
Packit Service a2489d
Packit Service a2489d
    if test -n "$expat_prefix"; then
Packit Service a2489d
        expat_include_dir="$expat_prefix/include"
Packit Service a2489d
        expat_ld_flags="-L$expat_prefix/lib"
Packit Service a2489d
        expat_lib_flags="-lexpat"
Packit Service a2489d
        run_expat_test="yes"
Packit Service a2489d
    elif test "$expat_requested" = "yes"; then
Packit Service a2489d
        if test -n "$expat_include_dir" -a -n "$expat_lib_flags"; then
Packit Service a2489d
            run_expat_test="yes"
Packit Service a2489d
        fi
Packit Service a2489d
    else
Packit Service a2489d
        run_expat_test="no"
Packit Service a2489d
    fi
Packit Service a2489d
Packit Service a2489d
    dnl
Packit Service a2489d
    dnl Check Expat XML Parser files
Packit Service a2489d
    dnl
Packit Service a2489d
    if test "$run_expat_test" = "yes"; then
Packit Service a2489d
Packit Service a2489d
        saved_CPPFLAGS="$CPPFLAGS"
Packit Service a2489d
        CPPFLAGS="$CPPFLAGS -I$expat_include_dir"
Packit Service a2489d
Packit Service a2489d
        saved_LIBS="$LIBS"
Packit Service a2489d
        LIBS="$LIBS $expat_lib_flags"
Packit Service a2489d
Packit Service a2489d
        saved_LDFLAGS="$LDFLAGS"
Packit Service a2489d
        LDFLAGS="$LDFLAGS $expat_ld_flags"
Packit Service a2489d
Packit Service a2489d
        dnl
Packit Service a2489d
        dnl Check Expat headers
Packit Service a2489d
        dnl
Packit Service a2489d
        AC_MSG_CHECKING([for Expat XML Parser headers in $expat_include_dir])
Packit Service a2489d
Packit Service a2489d
        AC_LANG_PUSH([C++])
Packit Service a2489d
        AC_COMPILE_IFELSE([
Packit Service a2489d
            AC_LANG_PROGRAM(
Packit Service a2489d
                [[
Packit Service a2489d
@%:@include <expat.h>
Packit Service a2489d
                ]],
Packit Service a2489d
                [[]]
Packit Service a2489d
            )],
Packit Service a2489d
            [
Packit Service a2489d
            EXPAT_CFLAGS="-I$expat_include_dir"
Packit Service a2489d
            expat_header_found="yes"
Packit Service a2489d
            AC_MSG_RESULT([found])
Packit Service a2489d
            ],
Packit Service a2489d
            [
Packit Service a2489d
            expat_header_found="no"
Packit Service a2489d
            AC_MSG_RESULT([not found])
Packit Service a2489d
            ]
Packit Service a2489d
        )
Packit Service a2489d
        AC_LANG_POP([C++])
Packit Service a2489d
Packit Service a2489d
        dnl
Packit Service a2489d
        dnl Check Expat libraries
Packit Service a2489d
        dnl
Packit Service a2489d
        if test "$expat_header_found" = "yes"; then
Packit Service a2489d
Packit Service a2489d
            AC_MSG_CHECKING([for Expat XML Parser libraries])
Packit Service a2489d
Packit Service a2489d
            AC_LANG_PUSH([C++])
Packit Service a2489d
            AC_LINK_IFELSE([
Packit Service a2489d
                AC_LANG_PROGRAM(
Packit Service a2489d
                    [[
Packit Service a2489d
@%:@include <expat.h>
Packit Service a2489d
                    ]],
Packit Service a2489d
                    [[
Packit Service a2489d
XML_Parser p = XML_ParserCreate(NULL);
Packit Service a2489d
XML_ParserFree(p);
Packit Service a2489d
p = NULL;
Packit Service a2489d
                    ]]
Packit Service a2489d
                )],
Packit Service a2489d
                [
Packit Service a2489d
                EXPAT_LIBS="$expat_lib_flags"
Packit Service a2489d
		EXPAT_LDFLAGS="$expat_ld_flags"
Packit Service a2489d
		test "$enable_rpath" = yes -a "$expat_prefix" != /usr && \
Packit Service a2489d
		    EXPAT_LDFLAGS="$EXPAT_LDFLAGS -R$expat_prefix/lib"
Packit Service a2489d
                expat_lib_found="yes"
Packit Service a2489d
                AC_MSG_RESULT([found])
Packit Service a2489d
                ],
Packit Service a2489d
                [
Packit Service a2489d
                expat_lib_found="no"
Packit Service a2489d
                AC_MSG_RESULT([not found])
Packit Service a2489d
                ]
Packit Service a2489d
            )
Packit Service a2489d
            AC_LANG_POP([C++])
Packit Service a2489d
        fi
Packit Service a2489d
Packit Service a2489d
        CPPFLAGS="$saved_CPPFLAGS"
Packit Service a2489d
        LDFLAGS="$saved_LDFLAGS"
Packit Service a2489d
        LIBS="$saved_LIBS"
Packit Service a2489d
    fi
Packit Service a2489d
Packit Service a2489d
    AC_MSG_CHECKING([for Expat XML Parser])
Packit Service a2489d
Packit Service a2489d
    if test "$run_expat_test" = "yes"; then
Packit Service a2489d
        if test "$expat_header_found" = "yes" -a "$expat_lib_found" = "yes"; then
Packit Service a2489d
Packit Service a2489d
            AC_SUBST([EXPAT_CFLAGS])
Packit Service a2489d
            AC_SUBST([EXPAT_LDFLAGS])
Packit Service a2489d
            AC_SUBST([EXPAT_LIBS])
Packit Service a2489d
Packit Service a2489d
            HAVE_EXPAT="yes"
Packit Service a2489d
        else
Packit Service a2489d
            HAVE_EXPAT="no"
Packit Service a2489d
        fi
Packit Service a2489d
Packit Service a2489d
        AC_MSG_RESULT([$HAVE_EXPAT])
Packit Service a2489d
Packit Service a2489d
        dnl
Packit Service a2489d
        dnl Check Expat version
Packit Service a2489d
        dnl
Packit Service a2489d
        if test "$HAVE_EXPAT" = "yes"; then
Packit Service a2489d
Packit Service a2489d
            expat_version_req=ifelse([$1], [], [], [$1])
Packit Service a2489d
Packit Service a2489d
            if test  -n "$expat_version_req"; then
Packit Service a2489d
Packit Service a2489d
                AC_MSG_CHECKING([if Expat XML Parser version is >= $expat_version_req])
Packit Service a2489d
Packit Service a2489d
                if test -f "$expat_include_dir/expat.h"; then
Packit Service a2489d
Packit Service a2489d
                    expat_major=`cat $expat_include_dir/expat.h | \
Packit Service a2489d
                                    grep '^#define.*XML_MAJOR_VERSION.*[0-9]$' | \
Packit Service a2489d
                                    sed -e 's/#define XML_MAJOR_VERSION.//'`
Packit Service a2489d
Packit Service a2489d
                    expat_minor=`cat $expat_include_dir/expat.h | \
Packit Service a2489d
                                    grep '^#define.*XML_MINOR_VERSION.*[0-9]$' | \
Packit Service a2489d
                                    sed -e 's/#define XML_MINOR_VERSION.//'`
Packit Service a2489d
Packit Service a2489d
                    expat_revision=`cat $expat_include_dir/expat.h | \
Packit Service a2489d
                                    grep '^#define.*XML_MICRO_VERSION.*[0-9]$' | \
Packit Service a2489d
                                    sed -e 's/#define XML_MICRO_VERSION.//'`
Packit Service a2489d
Packit Service a2489d
                    EXPAT_VERSION="$expat_major.$expat_minor.$expat_revision"
Packit Service a2489d
                    AC_SUBST([EXPAT_VERSION])
Packit Service a2489d
Packit Service a2489d
                    dnl Decompose required version string and calculate numerical representation
Packit Service a2489d
                    expat_version_req_major=`expr $expat_version_req : '\([[0-9]]*\)'`
Packit Service a2489d
                    expat_version_req_minor=`expr $expat_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
Packit Service a2489d
                    expat_version_req_revision=`expr $expat_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
Packit Service a2489d
                    if test "x$expat_version_req_revision" = "x"; then
Packit Service a2489d
                        expat_version_req_revision="0"
Packit Service a2489d
                    fi
Packit Service a2489d
Packit Service a2489d
                    expat_version_req_number=`expr $expat_version_req_major \* 10000 \
Packit Service a2489d
                                               \+ $expat_version_req_minor \* 100 \
Packit Service a2489d
                                               \+ $expat_version_req_revision`
Packit Service a2489d
Packit Service a2489d
                    dnl Calculate numerical representation of detected version
Packit Service a2489d
                    expat_version_number=`expr $expat_major \* 10000 \
Packit Service a2489d
                                          \+ $expat_minor \* 100 \
Packit Service a2489d
                                           \+ $expat_revision`
Packit Service a2489d
Packit Service a2489d
                    expat_version_check=`expr $expat_version_number \>\= $expat_version_req_number`
Packit Service a2489d
                    if test "$expat_version_check" = "1"; then
Packit Service a2489d
                        AC_MSG_RESULT([yes])
Packit Service a2489d
                    else
Packit Service a2489d
                        AC_MSG_RESULT([no])
Packit Service a2489d
                        AC_MSG_WARN([Found Expat XML Parser $EXPAT_VERSION, which is older than required. Possible compilation failure.])
Packit Service a2489d
                    fi
Packit Service a2489d
                else
Packit Service a2489d
                    AC_MSG_RESULT([no])
Packit Service a2489d
                    AC_MSG_WARN([Missing expat.h header. Unable to determine Expat version.])
Packit Service a2489d
                fi
Packit Service a2489d
            fi
Packit Service a2489d
        fi
Packit Service a2489d
Packit Service a2489d
    else
Packit Service a2489d
        HAVE_EXPAT="no"
Packit Service a2489d
        AC_MSG_RESULT([$HAVE_EXPAT])
Packit Service a2489d
Packit Service a2489d
        if test "$expat_requested" = "yes"; then
Packit Service a2489d
            AC_MSG_WARN([Expat XML Parser support requested but headers or library not found. Specify valid prefix of Expat using --with-expat=@<:@DIR@:>@ or provide include directory and linker flags using --with-expat-inc and --with-expat-lib])
Packit Service a2489d
        fi
Packit Service a2489d
    fi
Packit Service a2489d
])