1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
|
AC_PREREQ([2.50])
AC_INIT([opensaml], [2.3], [mace-opensaml-users@internet2.edu], [saml])
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE([opensaml], [2.3])
sinclude(doxygen.m4)
sinclude(acx_pthread.m4)
# Docygen features
DX_HTML_FEATURE(ON)
DX_CHM_FEATURE(OFF)
DX_CHI_FEATURE(OFF)
DX_MAN_FEATURE(OFF)
DX_RTF_FEATURE(OFF)
DX_XML_FEATURE(OFF)
DX_PDF_FEATURE(OFF)
DX_PS_FEATURE(OFF)
DX_INIT_DOXYGEN(opensaml, doxygen.cfg, doc/api)
DX_INCLUDE=
AC_ARG_ENABLE(debug,
AC_HELP_STRING(--enable-debug, [Have GCC compile with symbols (Default = no)]),
enable_debug=$enableval, enable_debug=no)
if test "$enable_debug" = "yes" ; then
GCC_CFLAGS="$CFLAGS -Wall -g -D_DEBUG"
GCC_CXXFLAGS="$CXXFLAGS -Wall -g -D_DEBUG"
else
GCC_CFLAGS="$CFLAGS -Wall -O2 -DNDEBUG"
GCC_CXXFLAGS="$CXXFLAGS -Wall -O2 -DNDEBUG"
fi
AC_PROG_CC([gcc gcc3 cc])
AC_PROG_CXX([g++ g++3 c++ CC])
AC_CANONICAL_HOST
if test "$GCC" = "yes" ; then
# AC_HAVE_GCC_VERSION(4,0,0,0,
# [
# AC_DEFINE(GCC_HASCLASSVISIBILITY,1,
# [Define to enable class visibility control in gcc.])
# GCC_CFLAGS="$GCC_CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
# GCC_CXXFLAGS="$GCC_CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
# ])
CFLAGS="$GCC_CFLAGS"
CXXFLAGS="$GCC_CXXFLAGS"
else
# Fix for Sun Workshop compiler in debug mode, may be Sun case #6360993
case "${host_cpu}-${host_os}" in
*solaris*)
if test "$CXX" = "CC" ; then
CXXFLAGS="$CXXFLAGS -Qoption ccfe -stabs=no%dfltlit+no%dflthlp"
fi
;;
esac
fi
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
# Checks for library functions.
AC_CHECK_FUNCS([strchr strdup strstr])
AC_CHECK_SIZEOF(time_t)
# checks for pthreads
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.])
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
CXXFLAGS="$PTHREAD_CFLAGS $CXXFLAGS"
fi
# zlib settings
AC_ARG_WITH(zlib,
AC_HELP_STRING([--with-zlib=PATH], [where zlib is installed]),
[
if test -d "$withval"; then
CPPFLAGS="${CPPFLAGS} -I$withval/include"
LDFLAGS="${LDFLAGS} -L$withval/lib"
fi
]
)
AC_CHECK_HEADER([zlib.h],,AC_MSG_ERROR([unable to find zlib header files]))
AC_CHECK_LIB([z],[deflateInit2_],,AC_MSG_ERROR([unable to link with zlib library]))
# OpenSSL settings
AC_ARG_WITH(openssl,
AC_HELP_STRING([--with-openssl=PATH], [where openssl is installed]),
[if test x_$with_openssl != x_/usr; then
SSLFLAGS="-I${with_openssl}/include"
fi])
if test "x$SSLFLAGS" = "x" ; then
AC_PATH_PROG(PKG_CONFIG, pkg-config)
if test "x$PKG_CONFIG" != x && test "x$PKG_CONFIG" != "xno" ; then
if pkg-config openssl ; then
SSLFLAGS="`$PKG_CONFIG --cflags openssl`"
else
AC_MSG_ERROR([OpenSSL not supported by pkg-config, try --with-openssl instead])
fi
fi
fi
AC_MSG_CHECKING(for OpenSSL cflags)
AC_MSG_RESULT($SSLFLAGS)
CPPFLAGS="$SSLFLAGS $CPPFLAGS"
AC_CHECK_HEADER([openssl/x509.h],,
AC_MSG_ERROR([unable to find openssl header files]))
AC_LANG(C++)
# C++ requirements
AC_CXX_REQUIRE_STL
AC_CXX_NAMESPACES
# 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]),
[
LOG4SHIB_CONFIG="${with_log4shib}"
if ! test -f "${LOG4SHIB_CONFIG}" ; then
LOG4SHIB_CONFIG="${with_log4shib}/bin/log4shib-config"
fi
])
if test -f "${LOG4SHIB_CONFIG}"; then
LDFLAGS="`${LOG4SHIB_CONFIG} --libs` $LDFLAGS"
CPPFLAGS="`${LOG4SHIB_CONFIG} --cflags` $CPPFLAGS"
AC_CHECK_HEADER([log4shib/CategoryStream.hh],,AC_MSG_ERROR([unable to find log4shib header files]))
AC_TRY_LINK(
[#include <log4shib/Category.hh>
#include <log4shib/CategoryStream.hh>],
[log4shib::Category::getInstance("foo").errorStream() << log4shib::eol],
[AC_DEFINE(OPENSAML_LOG4SHIB,1,[Define if log4shib library is used.])],
[AC_MSG_ERROR([unable to link with log4shib])])
else
AC_MSG_WARN([log4shib-config not found, may need to use --with-log4shib option])
AC_MSG_WARN([will look for original log4cpp library])
# log4cpp settings
AC_PATH_PROG(LOG4CPP_CONFIG,log4cpp-config)
AC_ARG_WITH(log4cpp,
AC_HELP_STRING([--with-log4cpp=PATH], [where log4cpp-config is installed]),
[
LOG4CPP_CONFIG="${with_log4cpp}"
if ! test -f "${LOG4CPP_CONFIG}" ; then
LOG4CPP_CONFIG="${with_log4cpp}/bin/log4cpp-config"
fi
])
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"
CPPFLAGS="`${LOG4CPP_CONFIG} --cflags` $CPPFLAGS"
AC_CHECK_HEADER([log4cpp/CategoryStream.hh],,AC_MSG_ERROR([unable to find log4cpp header files]))
AC_TRY_LINK(
[#include <log4cpp/Category.hh>
#include <log4cpp/CategoryStream.hh>],
[log4cpp::Category::getInstance("foo").errorStream() << log4cpp::eol],
[AC_DEFINE(OPENSAML_LOG4CPP,1,[Define if log4cpp library is used.])],
[AC_MSG_ERROR([unable to link with log4cpp, need version 1.0 or later])])
else
AC_MSG_ERROR([log4cpp-config not found, may need to use --with-log4cpp option])
fi
fi
# Xerces settings
AC_ARG_WITH(xerces,
AC_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"
fi])
LIBS="-lxerces-c $LIBS"
AC_CHECK_HEADER([xercesc/dom/DOM.hpp],,AC_MSG_ERROR([unable to find xerces header files]))
AC_MSG_CHECKING([Xerces version])
AC_PREPROC_IFELSE(
[AC_LANG_PROGRAM([#include <xercesc/util/XercesVersion.hpp>],
[#if _XERCES_VERSION != 20600
int i = 0;
#else
#error cannot use version 2.6.0
#endif])],
[AC_MSG_RESULT(OK)],
[AC_MSG_FAILURE([Xerces-C v2.6.0 has bugs that inhibit use with signed XML, please use special 2.6.1 tarball provided by Shibboleth Project])])
AC_TRY_LINK(
[#include <xercesc/util/PlatformUtils.hpp>],
[xercesc::XMLPlatformUtils::Initialize()],
[AC_DEFINE(HAVE_LIBXERCESC,1,[Define if Xerces-C library was found])],
[AC_MSG_ERROR([unable to link with Xerces])])
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([OPENSAML_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]),
[if test x_$with_xmlsec != x_/usr; then
LDFLAGS="-L${with_xmlsec}/lib $LDFLAGS"
CPPFLAGS="-I${with_xmlsec}/include $CPPFLAGS"
fi])
LIBS="-lxml-security-c $LIBS"
AC_CHECK_HEADER([xsec/utils/XSECPlatformUtils.hpp],,AC_MSG_ERROR([unable to find xmlsec header files]))
AC_MSG_CHECKING([XML-Security version])
AC_PREPROC_IFELSE(
[AC_LANG_PROGRAM([#include <xsec/utils/XSECPlatformUtils.hpp>],
[#if XSEC_VERSION_MAJOR > 1 || (XSEC_VERSION_MAJOR == 1 && XSEC_VERSION_MEDIUM > 3)
int i = 0;
#else
#error need version 1.4.0 or later
#endif])],
[AC_MSG_RESULT(OK)],
[AC_MSG_FAILURE([XML-Security version 1.4.0 or greater is required.])])
AC_TRY_LINK(
[#include <xsec/utils/XSECPlatformUtils.hpp>],
[XSECPlatformUtils::Initialise()],
[AC_DEFINE(HAVE_LIBXSEC,1,[Define if XML-Security library was found])],
[AC_MSG_ERROR([unable to link with XML-Security library])]
)
# XML-Tooling settings
AC_ARG_WITH(xmltooling,
AC_HELP_STRING([--with-xmltooling=PATH], [where xmltooling is installed]),
[if test x_$with_xmltooling != x_/usr; then
LDFLAGS="-L${with_xmltooling}/lib $LDFLAGS"
CPPFLAGS="-I${with_xmltooling}/include $CPPFLAGS"
DX_INCLUDE="${with_xmltooling}/include"
fi])
LIBS="-lxmltooling $LIBS"
AC_CHECK_HEADER([xmltooling/XMLToolingConfig.h],,AC_MSG_ERROR([unable to find xmltooling header files]))
AC_TRY_LINK(
[#include <xmltooling/io/HTTPResponse.h>],
[xmltooling::HTTPResponse::sanitizeURL("http://test")],
[AC_DEFINE(HAVE_XMLTOOLING,1,[Define if xmltooling library was found])],
[AC_MSG_ERROR([unable to link with XMLTooling, or version was too old])])
# Check for unit test support
CXXTEST="/usr/bin/cxxtestgen.pl"
CXXTESTFLAGS=""
AC_ARG_WITH(cxxtest,
AC_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}"
fi])
if ! test -f "${CXXTEST}"; then
AC_MSG_WARN([cxxtestgen not found, won't build unit tests])
fi
AC_SUBST(CXXTEST)
AC_SUBST(CXXTESTFLAGS)
AM_CONDITIONAL(BUILD_UNITTEST,test -f ${CXXTEST})
AC_SUBST(DX_INCLUDE)
LIBTOOL="$LIBTOOL --silent"
# output packaging and makefiles
AC_CONFIG_FILES([opensaml.spec pkginfo Portfile])
AC_CONFIG_FILES([Makefile saml/Makefile samltest/Makefile samlsign/Makefile schemas/Makefile doc/Makefile])
AC_OUTPUT
|