Download M4 Source | Macro History | Category Index |
AX_LIB_XML_SECURITY([MINIMUM-VERSION])
This macro provides tests of availability of Apache Xml-Security C++ library <http://santuario.apache.org/index.html> of particular version or newer. This macros checks for Apache Xml-Security C++ headers and libraries and defines compilation flags
Macro supports following options and their values:
1) Single-option usage:
--with-xml-security - yes, no or path to Xml-Security installation prefix
2) Three-options usage (all options are required):
--with-xml-security=yes --with-xml-security-inc - path to base directory with Xml-Security headers --with-xml-security-lib - linker flags for Xml-Security
This macro calls:
AC_SUBST(XML_SECURITY_CFLAGS) AC_SUBST(XML_SECURITY_LDFLAGS) AC_SUBST(XML_SECURITY_VERSION) - only if version requirement is used
And sets:
HAVE_XML_SECURITY
Alexander Petry <petry@itwm.fhg.de> and Mateusz Loskot <mateusz@loskot.net>.
2008-04-12
AC_DEFUN([AX_LIB_XML_SECURITY], [ AC_ARG_WITH([xml-security], AC_HELP_STRING([--with-xml-security=@<:@ARG@:>@], [use Xml-Security C++ library from given prefix (ARG=path); check standard prefixes (ARG=yes); disable (ARG=no)] ), [ if test "$withval" = "yes"; then if test -d /usr/local/include/xsec ; then xml_security_prefix=/usr/local elif test -d /usr/include/xsec ; then xml_security_prefix=/usr else xml_security_prefix="" fi xml_security_requested="yes" elif test -d "$withval"; then xml_security_prefix="$withval" xml_security_requested="yes" else xml_security_prefix="" xml_security_requested="no" fi ], [ dnl Default behavior is implicit yes if test -d /usr/local/include/xsec ; then xml_security_prefix=/usr/local elif test -d /usr/include/xsec ; then xml_security_prefix=/usr else xml-security_prefix="" fi ] ) AC_ARG_WITH([xml-security-inc], AC_HELP_STRING([--with-xml-security-inc=@<:@DIR@:>@], [path to Xml-Security C++ headers] ), [xml_security_include_dir="$withval"], [xml_security_include_dir=""] ) AC_ARG_WITH([xml-security-lib], AC_HELP_STRING([--with-xml-security-lib=@<:@ARG@:>@], [link options for Xml-Security C++ Parser libraries] ), [xml_security_lib_flags="$withval"], [xml_security_lib_flags=""] ) XML_SECURITY_CFLAGS="" XML_SECURITY_LDFLAGS="" XML_SECURITY_VERSION="" dnl dnl Collect include/lib paths and flags dnl run_xml_security_test="no" if test -n "$xml_security_prefix"; then xml_security_include_dir="$xml_security_prefix/include" xml_security_include_dir2="$xml_security_prefix/include/xsec" xml_security_lib_flags="-L$xml_security_prefix/lib -lxml-security-c -lpthread" run_xml_security_test="yes" elif test "$xml_security_requested" = "yes"; then if test -n "$xml_security_include_dir" -a -n "$xml_security_lib_flags"; then xml_security_include_dir2="$xml_security_include_dir/xenc" run_xml_security_test="yes" fi else run_xml_security_test="no" fi dnl dnl Check Xml-Security C++ files dnl if test "$run_xml_security_test" = "yes"; then saved_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$xml_security_include_dir -I$xml_security_include_dir2" saved_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $xml_security_lib_flags" dnl dnl Check Xml-Security headers dnl AC_MSG_CHECKING([for Xml-Security C++ headers in $xml_security_include_dir and $xml_security_include_dir2]) AC_LANG_PUSH([C++]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM( [[ @%:@include <xsec/utils/XSECPlatformUtils.hpp> ]], [[ ]] )], [ XML_SECURITY_CFLAGS="-I$xml_security_include_dir -I$xml_security_include_dir2" xml_security_header_found="yes" AC_MSG_RESULT([found]) ], [ xml_security_header_found="no" AC_MSG_RESULT([not found]) ] ) AC_LANG_POP([C++]) dnl dnl Check Xml-Security libraries dnl if test "$xml_security_header_found" = "yes"; then AC_MSG_CHECKING([for Xml-Security C++ libraries]) AC_LANG_PUSH([C++]) AC_LINK_IFELSE([ AC_LANG_PROGRAM( [[ @%:@include <xsec/utils/XSECPlatformUtils.hpp> #ifdef XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_USE #endif ]], [[ XSECPlatformUtils::Initialise(); ]] )], [ XML_SECURITY_LDFLAGS="$xml_security_lib_flags" xml_security_lib_found="yes" AC_MSG_RESULT([found]) ], [ xml_security_lib_found="no" AC_MSG_RESULT([not found]) ] ) AC_LANG_POP([C++]) fi CPPFLAGS="$saved_CPPFLAGS" LDFLAGS="$saved_LDFLAGS" fi AC_MSG_CHECKING([for Xml-Security C++]) if test "$run_xml_security_test" = "yes"; then if test x"$xml_security_header_found" = x"yes" -a x"$xml_security_lib_found" = x"yes"; then AC_SUBST([XML_SECURITY_CFLAGS]) AC_SUBST([XML_SECURITY_LDFLAGS]) HAVE_XML_SECURITY="yes" else HAVE_XML_SECURITY="no" fi AC_MSG_RESULT([$HAVE_XML_SECURITY]) dnl dnl Check Xml-Security version dnl if test "$HAVE_XML_SECURITY" = "yes"; then xml_security_version_req=ifelse([$1], [], [], [$1]) if test -n "$xml_security_version_req"; then AC_MSG_CHECKING([if Xml-Security C++ version is >= $xml_security_version_req]) if test -f "$xml_security_include_dir2/framework/XSECConfig.hpp"; then xml_security_major=`cat $xml_security_include_dir2/framework/XSECConfig.hpp | \ grep '^#define.*XSEC_VERSION_MAJOR.*[0-9]$' | \ sed -e 's/#define XSEC_VERSION_MAJOR.//'` xml_security_medium=`cat $xml_security_include_dir2/framework/XSECConfig.hpp | \ grep '^#define.*XSEC_VERSION_MEDIUM.*[0-9]$' | \ sed -e 's/#define XSEC_VERSION_MEDIUM.//'` xml_security_minor=`cat $xml_security_include_dir2/framework/XSECConfig.hpp | \ grep '^#define.*XSEC_VERSION_MINOR.*[0-9]$' | \ sed -e 's/#define XSEC_VERSION_MINOR.//'` XML_SECURITY_VERSION="$xml_security_major.$xml_security_medium.$xml_security_minor" AC_SUBST([XML_SECURITY_VERSION]) dnl Decompose required version string and calculate numerical representation xml_security_version_req_major=`expr $xml_security_version_req : '\([[0-9]]*\)'` xml_security_version_req_medium=`expr $xml_security_version_req : '[[0-9]]*\.\([[0-9]]*\)'` xml_security_version_req_minor=`expr $xml_security_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` xml_security_version_req_number=`expr $xml_security_version_req_major \* 10000 \ \+ $xml_security_version_req_medium \* 100 \ \+ $xml_security_version_req_minor` dnl Calculate numerical representation of detected version xml_security_version_number=`expr $xml_security_major \* 10000 \ \+ $xml_security_medium \* 100 \ \+ $xml_security_minor` xml_security_version_check=`expr $xml_security_version_number \>\= $xml_security_version_req_number` if test "$xml_security_version_check" = "1"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_WARN([Found Xml-Security C++ $XML_SECURITY_VERSION, which is older than required. Possible compilation failure.]) fi else AC_MSG_RESULT([no]) AC_MSG_WARN([Missing header XSECConfig.hpp. Unable to determine Xml-Security version.]) fi fi fi else HAVE_XML_SECURITY="no" AC_MSG_RESULT([$HAVE_XML_SECURITY]) if test "$xml_security_requested" = "yes"; then AC_MSG_ERROR([Xml-Security C++ support requested but headers or library not found. Specify valid prefix of Xml-Security C++ using --with-xml-security=@<:@DIR@:>@ or provide headers and linker flags using --with-xml-security-inc and --with-xml-security-lib]) fi fi ])
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.