https://issues.shibboleth.net/jira/browse/SSPCPP-304
[shibboleth/cpp-xmltooling.git] / configure.ac
index 46b7278..7af6f4c 100644 (file)
@@ -1,11 +1,12 @@
 AC_PREREQ([2.50])
-AC_INIT([xmltooling], [1.3.2], [mace-opensaml-users@internet2.edu], [xmltooling])
+AC_INIT([xmltooling], [1.4], [mace-opensaml-users@internet2.edu], [xmltooling])
 AM_CONFIG_HEADER(config.h)
 AM_CONFIG_HEADER(xmltooling/config_pub.h)
-AM_INIT_AUTOMAKE([xmltooling], [1.3.2])
+AM_INIT_AUTOMAKE([xmltooling], [1.4])
 
 sinclude(doxygen.m4)
 sinclude(acx_pthread.m4)
+sinclude(ax_create_pkgconfig_info.m4)
 
 # Docygen features
 DX_HTML_FEATURE(ON)
@@ -89,10 +90,23 @@ AC_CXX_REQUIRE_STL
 AC_CXX_NAMESPACES
 
 # are covariant methods allowed?
-AC_TRY_LINK(
-     [ class base { public: virtual base *GetPtr( void ) { return this; } }; ],
-     [ class derived: virtual public base { public: virtual derived *GetPtr( void ) { return this; } }; ],
-     [AC_DEFINE([HAVE_COVARIANT_RETURNS], [1], [Define to 1 if C++ compiler supports covariant virtual methods.])])
+AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM([[]],
+               [[
+               class base { public: virtual base *GetPtr( void ) { return this; } };
+               class derived: virtual public base { public: virtual derived *GetPtr( void ) { return this; } };
+               ]])],
+    [AC_DEFINE([HAVE_COVARIANT_RETURNS], [1], [Define to 1 if C++ compiler supports covariant virtual methods.])]
+       )
+
+# is nullptr supported?
+AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[]],
+               [[
+               const char* ptr = nullptr;
+               ]])],
+       [AC_DEFINE([HAVE_NULLPTR], [1], [Define to 1 if C++ compiler supports nullptr keyword.])]
+       )
 
 # log4shib settings (favor this version over the log4cpp code)
 AC_PATH_PROG(LOG4SHIB_CONFIG,log4shib-config)
@@ -105,7 +119,7 @@ AC_ARG_WITH(log4shib,
     fi
     ])
 if test -f "${LOG4SHIB_CONFIG}"; then
-    LDFLAGS="`${LOG4SHIB_CONFIG} --libs` $LDFLAGS"
+    LIBS="`${LOG4SHIB_CONFIG} --libs` $LIBS"
     CPPFLAGS="`${LOG4SHIB_CONFIG} --cflags` $CPPFLAGS"
        AC_CHECK_HEADER([log4shib/CategoryStream.hh],,AC_MSG_ERROR([unable to find log4shib header files]))
        AC_TRY_LINK(
@@ -130,7 +144,7 @@ else
            ])
        if test -f "${LOG4CPP_CONFIG}"; then
                AC_MSG_WARN([will try to use log4cpp, note that most non-Internet2 supplied versions are not thread-safe])
-           LDFLAGS="`${LOG4CPP_CONFIG} --libs` $LDFLAGS"
+           LIBS="`${LOG4CPP_CONFIG} --libs` $LIBS"
            CPPFLAGS="`${LOG4CPP_CONFIG} --cflags` $CPPFLAGS"
                AC_CHECK_HEADER([log4cpp/CategoryStream.hh],,AC_MSG_ERROR([unable to find log4cpp header files]))
                AC_TRY_LINK(
@@ -209,6 +223,16 @@ AC_TRY_COMPILE([#include <xercesc/dom/DOM.hpp>],
       [AC_DEFINE([XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE], [1], [Define to 1 if Xerces DOM ID methods take extra parameter.])],
       [AC_MSG_RESULT([no])])
 
+AC_MSG_CHECKING([whether Xerces XMLString::release(XMLByte**) exists])
+AC_TRY_COMPILE([#include <xercesc/util/XMLString.hpp>],
+    [using namespace XERCES_CPP_NAMESPACE;
+      XMLByte* buf=NULL;
+      XMLString::release(&buf);
+    ],
+    [AC_MSG_RESULT([yes])]
+    [AC_DEFINE([XMLTOOLING_XERCESC_HAS_XMLBYTE_RELEASE], [1], [Define to 1 if Xerces XMLString includes XMLByte release.])],
+    [AC_MSG_RESULT([no])])
+
 # XML-Security settings
 AC_ARG_WITH(xmlsec,
             AC_HELP_STRING([--with-xmlsec=PATH], [where xmlsec is installed]),,
@@ -233,7 +257,7 @@ if test x_$with_xmlsec != x_no; then
                 SSLLIBS="`$PKG_CONFIG --libs openssl`"
                 SSLFLAGS="`$PKG_CONFIG --cflags openssl`"
             else
-                AC_MSG_ERROR([OpenSSL not supported by pkg-config, try --with-openssl instead])
+                AC_MSG_WARN([OpenSSL not supported by pkg-config, try --with-openssl instead])
             fi
         fi
     fi
@@ -260,6 +284,10 @@ if test x_$with_xmlsec != x_no; then
                  AC_MSG_ERROR([unable to link with openssl libraries]))
     AC_MSG_RESULT(yes)
 
+       AC_CHECK_DECL(EVP_sha512,
+               [AC_DEFINE(XMLTOOLING_OPENSSL_HAVE_SHA2)],
+               ,[#include <openssl/evp.h>])
+
     # restore master libs
     LIBS="$save_LIBS"
 
@@ -290,6 +318,34 @@ int i = 0;
             [AC_MSG_ERROR([unable to link with XML-Security])])
     AC_CHECK_TYPE([xsecsize_t],[AC_DEFINE([HAVE_XSECSIZE_T], [1], [Define to 1 if you have the 'xsecsize_t' type.])])
 
+    AC_MSG_CHECKING([whether XML-Security-C has multiple CRL support])
+    AC_TRY_COMPILE([#include <xsec/dsig/DSIGKeyInfoList.hpp>],
+          [DSIGKeyInfoList* klist; klist->getX509CRLListSize();],
+          [AC_MSG_RESULT([yes])]
+          [AC_DEFINE([XMLTOOLING_XMLSEC_MULTIPLECRL], [1], [Define to 1 if XML-Security-C handles multiple CRLs.])],
+          [AC_MSG_RESULT([no])])
+
+    AC_MSG_CHECKING([whether XML-Security-C exposes the signature algorithm URI])
+    AC_TRY_COMPILE([#include <xsec/dsig/DSIGSignature.hpp>],
+          [DSIGSignature* sig; sig->getAlgorithmURI();],
+          [AC_MSG_RESULT([yes])]
+          [AC_DEFINE([XMLTOOLING_XMLSEC_SIGALGORITHM], [1], [Define to 1 if XML-Security-C exposes the signature algorithm URI.])],
+          [AC_MSG_RESULT([no])])
+
+    AC_MSG_CHECKING([whether XML-Security-C includes ECC support])
+    AC_TRY_COMPILE([#include <xsec/dsig/DSIGKeyInfoValue.hpp>],
+          [DSIGKeyInfoValue* info; info->getECNamedCurve();],
+          [AC_MSG_RESULT([yes])]
+          [AC_DEFINE([XMLTOOLING_XMLSEC_ECC], [1], [Define to 1 if XML-Security-C includes ECC support.])],
+          [AC_MSG_RESULT([no])])
+
+    AC_MSG_CHECKING([whether XML-Security-C includes debug logging support])
+    AC_TRY_COMPILE([#include <xsec/utils/XSECPlatformUtils.hpp>],
+          [XSECPlatformUtils::SetReferenceLoggingSink(NULL)],
+          [AC_MSG_RESULT([yes])]
+          [AC_DEFINE([XMLTOOLING_XMLSEC_DEBUGLOGGING], [1], [Define to 1 if XML-Security-C includes debug logging support.])],
+          [AC_MSG_RESULT([no])])
+
        # restore master libs
        LIBS="$save_LIBS"
 
@@ -363,6 +419,8 @@ AC_SUBST(CXXTEST)
 AC_SUBST(CXXTESTFLAGS)
 AM_CONDITIONAL(BUILD_UNITTEST,test -f ${CXXTEST})
 
+AX_CREATE_PKGCONFIG_INFO(,,[$XMLSEC_LIBS -lxmltooling],[OpenSAML XMLTooling-C library])
+
 LIBTOOL="$LIBTOOL --silent"
 
 # output packaging and makefiles