https://issues.shibboleth.net/jira/browse/SSPCPP-304
[shibboleth/cpp-xmltooling.git] / configure.ac
index 3c47dde..7af6f4c 100644 (file)
@@ -90,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)
@@ -106,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(
@@ -131,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(
@@ -210,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]),,
@@ -261,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"
 
@@ -305,6 +332,20 @@ int i = 0;
           [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"