Start revisions of autotools material.
[shibboleth/cpp-xmltooling.git] / configure.ac
index 3c47dde..0c4a898 100644 (file)
@@ -1,12 +1,11 @@
-AC_PREREQ([2.50])
-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.4])
-
-sinclude(doxygen.m4)
-sinclude(acx_pthread.m4)
-sinclude(ax_create_pkgconfig_info.m4)
+# Process this file with autoreconf
+AC_PREREQ([2.60])
+AC_INIT([xmltooling],[1.4],[https://bugs.internet2.edu/],[xmltooling])
+AC_CONFIG_SRCDIR(xmltooling)
+AC_CONFIG_AUX_DIR(build-aux)
+AC_CONFIG_MACRO_DIR(m4)
+AM_INIT_AUTOMAKE
+LT_INIT
 
 # Docygen features
 DX_HTML_FEATURE(ON)
@@ -20,7 +19,7 @@ DX_PS_FEATURE(OFF)
 DX_INIT_DOXYGEN(xmltooling, doxygen.cfg, doc/api)
 
 AC_ARG_ENABLE(debug,
-    AC_HELP_STRING(--enable-debug, [Have GCC compile with symbols (Default = no)]),
+    AS_HELP_STRING([--enable-debug],[Have GCC compile with symbols (Default = no)]),
     enable_debug=$enableval, enable_debug=no)
 
 if test "$enable_debug" = "yes" ; then
@@ -31,8 +30,13 @@ else
     GCC_CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG"
 fi
 
+AC_CONFIG_HEADERS([config.h xmltooling/config_pub.h])
+AC_CONFIG_FILES([xmltooling.spec pkginfo Portfile])
+AC_CONFIG_FILES([Makefile xmltooling/Makefile xmltoolingtest/Makefile schemas/Makefile doc/Makefile])
+
 AC_PROG_CC([gcc gcc3 cc])
 AC_PROG_CXX([g++ g++3 c++ CC])
+AC_DISABLE_STATIC
 AC_CANONICAL_HOST
 
 if test "$GCC" = "yes" ; then
@@ -56,9 +60,6 @@ else
        esac
 fi
 
-AC_DISABLE_STATIC
-AC_PROG_LIBTOOL
-
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_TYPE_SIZE_T
@@ -74,7 +75,7 @@ ACX_PTHREAD([enable_threads="pthread"],[enable_threads="no"])
 if test $enable_threads != "pthread"; then
     AC_MSG_ERROR([unable to find pthreads, currently this is required])
 else
-    AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.])
+    AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])
        AM_CONDITIONAL(BUILD_PTHREAD,test "$enable_threads" = "pthread")
     LIBS="$PTHREAD_LIBS $LIBS"
     CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
@@ -90,15 +91,28 @@ 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)
 AC_ARG_WITH(log4shib,
-    AC_HELP_STRING([--with-log4shib=PATH], [where log4shib-config is installed]),
+    AS_HELP_STRING([--with-log4shib=PATH], [where log4shib-config is installed]),
     [
     LOG4SHIB_CONFIG="${with_log4shib}"
     if ! test -f "${LOG4SHIB_CONFIG}" ; then
@@ -106,7 +120,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(
@@ -122,7 +136,7 @@ else
        # log4cpp settings
        AC_PATH_PROG(LOG4CPP_CONFIG,log4cpp-config)
        AC_ARG_WITH(log4cpp,
-           AC_HELP_STRING([--with-log4cpp=PATH], [where log4cpp-config is installed]),
+           AS_HELP_STRING([--with-log4cpp=PATH], [where log4cpp-config is installed]),
            [
            LOG4CPP_CONFIG="${with_log4cpp}"
            if ! test -f "${LOG4CPP_CONFIG}" ; then
@@ -131,7 +145,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(
@@ -147,7 +161,7 @@ fi
 
 # Xerces settings
 AC_ARG_WITH(xerces, 
-            AC_HELP_STRING([--with-xerces=PATH], [where xerces-c is installed]),
+            AS_HELP_STRING([--with-xerces=PATH], [where xerces-c is installed]),
             [if test x_$with_xerces != x_/usr; then
                 LDFLAGS="-L${with_xerces}/lib $LDFLAGS"
                 CPPFLAGS="-I${with_xerces}/include $CPPFLAGS"
@@ -210,16 +224,26 @@ 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]),,
+            AS_HELP_STRING([--with-xmlsec=PATH], [where xmlsec is installed]),,
             [with_xmlsec=/usr])
 
 if test x_$with_xmlsec != x_no; then
 
     # OpenSSL settings (need to do this first in case it's in a different spot from xmlsec)
     AC_ARG_WITH(openssl,
-        AC_HELP_STRING([--with-openssl=PATH], [where openssl is installed]),
+        AS_HELP_STRING([--with-openssl=PATH], [where openssl is installed]),
         [if test x_$with_openssl != x_/usr; then
             SSLFLAGS="-I${with_openssl}/include"
             SSLLIBS="-L${with_openssl}/lib -lcrypto -lssl"
@@ -261,6 +285,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],[],[Define to 1 if OpenSSL supports the SHA-2 hash family.])],
+               ,[#include <openssl/evp.h>])
+
     # restore master libs
     LIBS="$save_LIBS"
 
@@ -305,13 +333,27 @@ 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"
 
        # libcurl settings
        AC_PATH_PROG(CURL_CONFIG,curl-config)
        AC_ARG_WITH(curl,
-           AC_HELP_STRING([--with-curl=PATH], [where curl-config is installed]),
+           AS_HELP_STRING([--with-curl=PATH], [where curl-config is installed]),
            [
            CURL_CONFIG="${with_curl}"
            if ! test -f "${CURL_CONFIG}" ; then
@@ -365,7 +407,7 @@ AC_TRY_LINK(
 CXXTEST="/usr/bin/cxxtestgen.pl"
 CXXTESTFLAGS=""
 AC_ARG_WITH(cxxtest,
-            AC_HELP_STRING([--with-cxxtest=PATH], [where cxxtest is installed]),
+            AS_HELP_STRING([--with-cxxtest=PATH], [where cxxtest is installed]),
             [if test x_$with_cxxtest != x_/usr; then
                 CXXTEST="${with_cxxtest}/cxxtestgen.pl"
                 CXXTESTFLAGS="-I${with_cxxtest}"
@@ -383,6 +425,4 @@ AX_CREATE_PKGCONFIG_INFO(,,[$XMLSEC_LIBS -lxmltooling],[OpenSAML XMLTooling-C li
 LIBTOOL="$LIBTOOL --silent"
 
 # output packaging and makefiles
-AC_CONFIG_FILES([xmltooling.spec pkginfo Portfile])
-AC_CONFIG_FILES([Makefile xmltooling/Makefile xmltoolingtest/Makefile schemas/Makefile doc/Makefile])
 AC_OUTPUT