blob: 5ea4947850aab1b7574ae044944c8661a991233b [file] [log] [blame]
# Copyright 2002-2006 The Apache Software Foundation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# All these setting come from the configure script
# We use configure to do most of the hard work as it is more
# designed to handle different system complexity than make
#
# Process this file with autoconf to produce a configure script
AC_INIT([[XML-Security-C]], [1.3.1], [security-dev@xml.apache.org], [xml-security-c])
AC_CONFIG_AUX_DIR([config])
# kick off automake
AM_INIT_AUTOMAKE(XMl-Security-C, 1.3.1)
AM_PROG_LIBTOOL
# We want to control the autotools invocation
AM_MAINTAINER_MODE
# framework is a unique directory in src/ - allows configure to check
# it is running in the correct directory
AC_CONFIG_SRCDIR(src)
# Define the files we wish to generate
AC_CONFIG_FILES([Makefile\
lib/Makefile \
include/Makefile \
bin/Makefile ])
# AC_CONFIG_FILES([Makefile canon/Makefile transformers/Makefile dsig/Makefile enc/Makefile enc/OpenSSL/Makefile framework/Makefile utils/Makefile utils/unixutils/Makefile tools/Makefile samples/Makefile])
AC_CONFIG_HEADERS([src/framework/XSECConfig.hpp])
# Get user options
AC_ARG_WITH(xerces,
AC_HELP_STRING(--with-xerces,
[Define Xerces directory. Values = 'yes' or installation directory. 'No' is not permitted (Default = yes)]),
use_xerces=$withval, use_xerces=yes)
if test x"$use_xerces" != "xyes" ; then
if test x"$use_xerces" != "xno" ; then
XERCESCROOT=$use_xerces
else
AC_MSG_ERROR([Cannot configure without Xerces])
fi
fi
AC_ARG_WITH(xalan,
AC_HELP_STRING(--with-xalan,
[Enable Xalan integration. Values = 'yes' or installation directory (Default = yes)]),
use_xalan=$withval, use_xalan=yes)
if test x"$use_xalan" != "xyes" ; then
if test x"$use_xalan" != "xno" ; then
XALANCROOT=$use_xalan
fi
fi
AC_ARG_WITH(openssl,
AC_HELP_STRING(--with-openssl,
[Use Openssl. Values = 'yes' or installation directory (Default = yes)]),
use_openssl=$withval, use_openssl=yes)
if test x"$use_openssl" != "xyes" ; then
if test x"$use_openssl" != "xno" ; then
# Must be the source directory
OPENSSL=$use_openssl
fi
fi
AC_ARG_ENABLE(debug,
AC_HELP_STRING(--enable-debug,
[Compile a version of the library with symbols (Default = no)]),
enable_debug=$enableval, enable_debug=no)
# As of version 1.3, by default treat warnings as errors
AC_ARG_ENABLE(warnerror,
AC_HELP_STRING(--enable-warnerrer,
[Treat warnings as errors during compile (Default = no)]),
enable_warnerror=$enableval, enable_warnerror=no)
# Check for basic programs
AC_PROG_CC
AC_PROG_CXX
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_AWK
AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, true)
# AC_PROG_CC Defines the OBJEXT
objsuffix=".${OBJEXT}"
# pthreads
ACX_PTHREAD
CXXFLAGS="${CXXFLAGS} ${PTHREAD_CFLAGS}"
LIBS="${LIBS} ${PTHREAD_LIBS}"
# Set up versions
package_version_major=`echo ${PACKAGE_VERSION} | ${AWK} -F '.' '{print $1}'`
package_version_medium=`echo ${PACKAGE_VERSION} | ${AWK} -F '.' '{print $2}'`
package_version_minor=`echo ${PACKAGE_VERSION} | ${AWK} -F '.' '{print $3}'`
package_lib_major=${package_version_major}${package_version_medium}
package_lib_minor=${package_version_minor}
package_lib_version=${package_lib_major}.${package_lib_minor}
# "cache" the check for gcc -E
AC_TRY_CPP()
AC_LANG(C++)
AC_TRY_CPP()
# Need to reset CXXFLAGS if defaults have been set
if test "$ac_test_CXXFLAGS" != set; then
CXXFLAGS=""
fi
# Check for Intel > 8.0 (which fools configure into thinking it is GNU
if test "x${ac_cv_cxx_compiler_gnu}" = "xyes"; then
AC_MSG_CHECKING([for Intel compiler disguised as GNU])
intel_check=`${CXX} -v 2>&1 | ${AWK} '{print $1}'`
if test "x${intel_check}" = "xVersion"; then
AC_MSG_RESULT([yes])
ac_cv_cxx_compiler_gnu="no"
else
AC_MSG_RESULT([no])
fi
fi
AC_LANG(C)
# Checks for required libraries
AC_CHECK_LIB(m, floor)
AC_CHECK_LIB(socket, getservent)
# Determine the host system and Makefile fragment
# Check for required includes
AC_CHECK_HEADERS(unistd.h direct.h)
# As a part of the automake process, AM_CHECK_LIBTOOL calls
# this automatically. Adding here causes spurious warning messages
#AC_CANONICAL_HOST
# Ensure we are always compiling using library defs
CFLAGS="${CFLAGS} -DXSEC_LIBRARY_BUILD"
CXXFLAGS="${CXXFLAGS} -DXSEC_LIBRARY_BUILD"
# Platform-specific Makefile setup
# We have put most of the platform specific configuration here rather than
# in the Makefile. Autoconf is designed with platform portability in mind,
# so by putting the complexity here we should be able to create a more
# portable makefile.
case "${host}" in
*-*-solaris*)
platform=SOLARIS
shlibsuffix=.so
lib_name="lib${PACKAGE_TARNAME}.so.${package_lib_version}"
lib_major_name="lib${PACKAGE_TARNAME}.so.${package_lib_major}"
lib_short_name="lib${PACKAGE_TARNAME}.so"
if test "x${ac_cv_cxx_compiler_gnu}" != "xyes"; then
# Flags for warnings as errors
cxxflags_warnerror="-xwe -errtags"
# Flags for Optimise
cxxflags_optimise="-xO2"
# Flags for debug
cxxflags_debug="-g"
fi
# Should use -D_REENTRANT - but not yet OK
PLATFORM_OPTIONS=["${PLATFORM_OPTIONS} -DSOLARIS"]
SHARED_OPTIONS="-G -DSOLARIS"
LINK_OPTIONS="-DSOLARIS"
;;
*-*-netbsd*) platform=NETBSD
shlibsuffix=.so
lib_name="lib${PACKAGE_TARNAME}.so.${package_lib_version}"
lib_major_name="lib${PACKAGE_TARNAME}.so.${package_lib_major}"
lib_short_name="lib${PACKAGE_TARNAME}.so"
PLATFORM_OPTIONS=["${PLATFORM_OPTIONS} -DFREEBSD"]
SHARED_OPTIONS=["-DNETBSD -shared"]
LINK_OPTIONS=["-DNETBSD"]
# NetBSD puts packages in /usr/pkg
CPPFLAGS="${CPPFLAGS} -I/usr/pkg/include"
LIBS="${LIBS} -L/usr/pkg/lib"
;;
*-*-freebsd*) platform=FREEBSD
shlibsuffix=.so
lib_name="lib${PACKAGE_TARNAME}.so.${package_lib_version}"
lib_major_name="lib${PACKAGE_TARNAME}.so.${package_version_major}"
lib_short_name="lib${PACKAGE_TARNAME}.so"
# Should use -D_REENTRANT - but not yet OK
PLATFORM_OPTIONS=["${PLATFORM_OPTIONS} -DFREEBSD"]
SHARED_OPTIONS="-DFREEBSD -shared -pthread -lc_r"
LINK_OPTIONS="-DFREEBSD -pthread -lc_r"
;;
*-*-linux*) platform=LINUX ;
shlibsuffix=.so
lib_name="lib${PACKAGE_TARNAME}.so.${package_lib_version}"
lib_major_name="lib${PACKAGE_TARNAME}.so.${package_lib_major}"
lib_short_name="lib${PACKAGE_TARNAME}.so"
if test "x${ac_cv_cxx_compiler_gnu}" != "xyes"; then
# Assume Intel CC
PLATFORM_OPTIONS=["-w1 -mp -prec_div"]
fi
# Should use -D_REENTRANT - but not yet OK
PLATFORM_OPTIONS=["${PLATFORM_OPTIONS} -DLINUX"]
SHARED_OPTIONS=["-Wl,-soname,\$(LIBNAME) -DLINUX -shared"]
LINK_OPTIONS=["-DLINUX -ldl"]
;;
*-*-cygwin*)
platform=CYGWIN
shlibsuffix=.dll
lib_name="cyg${PACKAGE_TARNAME}-${package_lib_version}.dll"
lib_major_name="lib${PACKAGE_TARNAME}.dll.a"
lib_short_name="cyg${PACKAGE_TARNAME}.dll"
# Assume g++
PLATFORM_OPTIONS=["-Wall"]
PLATFORM_OPTIONS=["${PLATFORM_OPTIONS} -DCYGWIN"]
PIC=""
SHARED_OPTIONS="-Wl,-soname,\$(LIBNAME) -DCYGWIN -shared -Xlinker --warn-once -Xlinker -Map -Xlinker ../lib/lib${PACKAGE_TARNAME}.map -Xlinker --output-def -Xlinker ../lib/lib${PACKAGE_TARNAME}.def -Xlinker --out-implib -Xlinker ../lib/\$(LIBMAJORNAME)"
LINK_OPTIONS=["-DCYGWIN"]
# Define installation commands as cygwin uses different defaults
INSTALL_COMMAND_1=["\$(INSTALL) -d \$(DESTDIR)\${bindir} && \$(INSTALL) \${THISLIB} \$(DESTDIR)\${bindir}"]
INSTALL_COMMAND_2=["\$(INSTALL) -d \$(DESTDIR)\${libdir} && \$(INSTALL) \$(LIB_DIR)/\$(LIBMAJORNAME) \$(DESTDIR)\${libdir}"]
# Define this to kill the link commands
LINK_COMMAND_1=true
;;
# *-*-irix*) platform=IRIX ;;
# *-*-aix*) platform=AIX ;;
# *-*-hp*) platform=HPUX ;
# case "${host}" in
# *-*-hpux11*) osver=HPUX11;;
# *-*-hpux10*) osver=HPUX10;;
# *) osver=HPUX11;;
# esac;;
# *-*-mvs*) platform=OS390 ;;
# *-*-osf*) platform=TRU64 ;;
*-apple-darwin*)
platform=MACOSX
shlibsuffix=.dylib
lib_name="lib${PACKAGE_TARNAME}.${package_lib_version}.dylib"
lib_major_name="lib${PACKAGE_TARNAME}.${package_lib_major}.dylib"
lib_short_name="lib${PACKAGE_TARNAME}.dylib"
if test "x${ac_cv_cxx_compiler_gnu}" != "xyes"; then
# Not sure if these will work - only tested with g++
PLATFORM_OPTIONS=["-w1 -mp -prec_div"]
fi
PLATFORM_OPTIONS=["${PLATFORM_OPTIONS} -DMACOSX"]
SHARED_OPTIONS=["-Xlinker -install_name -Xlinker \$(LIBNAME) -DMACOSX -dynamiclib"]
LINK_OPTIONS=["-DMACOSX"]
;;
*) platform=UNKNOWN
AC_MSG_ERROR([Unknown Platform. Aborting])
;;
esac
# Now we should have all compiler specific flags. So set up specific flags
# we need
# First if we are using gcc then...
if test "x${ac_cv_cxx_compiler_gnu}" = "xyes" ; then
CXXFLAGS=["${CXXFLAGS} ${PLATFORM_OPTIONS} -Wall"]
if test "$enable_debug" = "yes" ; then
CXXFLAGS="${CXXFLAGS} -g"
else
CXXFLAGS="${CXXFLAGS} -O2 -DNDEBUG"
fi
if test "x${enable_warnerror}" = "xyes" ; then
AC_MSG_WARN([Enabling error on warnings])
CXXFLAGS="${CXXFLAGS} -Werror -Wno-deprecated"
fi
else
if test "$enable_debug" = "yes" ; then
CXXFLAGS="${CXXFLAGS} ${cxxflags_debug}"
else
CXXFLAGS="${CXXFLAGS} ${cxxflags_optimise} -DNDEBUG"
fi
if test "x${enable_warnerror}" = "xyes" ; then
AC_MSG_WARN([Enabling error on warnings])
CXXFLAGS="${CXXFLAGS} ${cxxflags_warnerror}"
fi
fi
# How do we run the C++ compiler?
CC1=["${CXX} ${CXXFLAGS}"]
# Command to make the shared library
MAKE_SHARED=["${CXX} ${CXXFLAGS} ${SHARED_OPTIONS}"]
# Command to link an executable
LINK=["${CXX} ${CXXFLAGS} ${LINK_OPTIONS}"]
# Default commands to create the library in the correct place
if test -z "$LINK_COMMAND_1" ; then
LINK_COMMAND_1=["(cd \$(LIB_DIR) ; rm -f \$(LIBMAJORNAME) ; \$(LN_S) \$(LIBNAME) \$(LIBMAJORNAME))"]
LINK_COMMAND_2=["(cd \$(LIB_DIR) ; rm -f \$(LIBSHORTNAME) ; \$(LN_S) \$(LIBNAME) \$(LIBSHORTNAME))"]
fi
# Default commands to install
if test -z "$INSTALL_COMMAND_1" ; then
INSTALL_COMMAND_1=["\$(INSTALL) -d \$(DESTDIR)\${libdir} && \$(INSTALL) \${THISLIB} \$(DESTDIR)\${libdir}"]
INSTALL_COMMAND_2=["\$(RM) \$(DESTDIR)\${libdir}/\${LIBMAJORNAME} && \$(LN_S) \${LIBNAME} \$(DESTDIR)\${libdir}/\${LIBMAJORNAME}"]
INSTALL_COMMAND_3=["\$(RM) \$(DESTDIR)\${libdir}/\${LIBSHORTNAME} && \$(LN_S) \${LIBNAME} \$(DESTDIR)\${libdir}/\${LIBSHORTNAME}"]
fi
# Find Xerces
# Check for Xerces using XERCESCROOT (override any system version)
AC_LANG(C++)
if test $XERCESCROOT; then
OLDCPPFLAGS=$CPPFLAGS
CPPFLAGS=["${CPPFLAGS} -I${XERCESCROOT}/include"]
AC_MSG_CHECKING([for Xerces 2.x or 3.x headers in XERCESCROOT/include])
AC_TRY_RUN([#include <xercesc/util/XercesVersion.hpp>
int main(int argc, char **argv) {
if (XERCES_VERSION_MAJOR < 2)
return 1;
else
return 0;
}],
xerces_lib_base=${XERCESCROOT}
xerces_found=yes
[AC_MSG_RESULT([found])],
CPPFLAGS=$OLD_CPPFLAGS
[AC_MSG_RESULT([no])])
fi
if test -z $xerces_found ; then
# Xerces was not found
AC_MSG_CHECKING([for Xerces 2.x or 3.x headers in system includes])
AC_TRY_RUN([#include <xercesc/util/XercesVersion.hpp>
int main(int argc, char **argv) {
if (XERCES_VERSION_MAJOR < 2)
return 1;
else
return 0;
}],
[AC_MSG_RESULT([found])],
[AC_MSG_ERROR([Xerces 2.0 not found. Ensure XERCESCROOT points to base directory of Xerces and Xerces 2.0 or later is available])])
fi
# Where is the Xerces lib?
AC_MSG_CHECKING([for Xerces 2.x or 3.x library naming convention])
OLD_LIBS=$LIBS
if test -z xerces_lib_base; then
LIBS="${LIBS} -lxerces-c"
else
LIBS="-L${xerces_lib_base}/lib -lxerces-c ${LIBS}"
fi
AC_TRY_LINK([#include <xercesc/util/PlatformUtils.hpp>],
[XERCES_CPP_NAMESPACE_USE XMLPlatformUtils::Initialize(); return 0; ],
[AC_MSG_RESULT([xerces-c])]
xerceslib_found=yes,
[LIBS=$OLD_LIBS])
if test -z $xerceslib_found; then
if test -z xerces_lib_base; then
LIBS="${LIBS} -lxerces-3.0"
else
LIBS="-L${xerces_lib_base}/lib -lxerces-3.0 ${LIBS}"
fi
AC_TRY_LINK([#include <xercesc/util/PlatformUtils.hpp>],
[XERCES_CPP_NAMESPACE_USE XMLPlatformUtils::Initialize(); return 0; ],
[AC_MSG_RESULT([xerces-3.0])]
xerceslib_found=yes,
[AC_MSG_RESULT([unable to determine])]
[AC_MSG_ERROR([cannot link to Xerces library])])
fi
# Find out some properties of the version of Xerces we have
AC_MSG_CHECKING([whether Xerces XMLFormatter requires a version])
AC_TRY_COMPILE([#include <xercesc/framework/XMLFormatter.hpp>
#include <xercesc/util/XercesDefs.hpp>
#include <xercesc/util/XMLUniDefs.hpp>],
[using namespace XERCES_CPP_NAMESPACE;
XMLCh s_encoding[] = {
chLatin_U, chLatin_T, chLatin_F, chDash, chDigit_8, chNull
};
XMLFormatter f(s_encoding,
NULL,
NULL,
XMLFormatter::NoEscapes,
XMLFormatter::UnRep_CharRef);
],
[AC_MSG_RESULT([yes])]
[AC_DEFINE(XSEC_XERCES_REQUIRES_MEMMGR)]
[AC_DEFINE(XSEC_XERCES_FORMATTER_REQUIRES_VERSION)],
[AC_MSG_RESULT([no])])
AC_MSG_CHECKING([whether Xerces XMLString has ::release])
AC_TRY_COMPILE([#include <xercesc/util/XMLString.hpp>],
[using namespace XERCES_CPP_NAMESPACE;
XMLCh * tst;
XMLString::release(&tst);
],
[AC_MSG_RESULT([yes])]
[AC_DEFINE(XSEC_XERCES_XMLSTRING_HAS_RELEASE)],
[AC_MSG_RESULT([no])])
AC_MSG_CHECKING([whether Xerces XMLElement has ::setIdAttribute(XMLCh*)])
AC_TRY_COMPILE([#include <xercesc/dom/DOM.hpp>],
[using namespace XERCES_CPP_NAMESPACE;
DOMElement * elt;
elt->setIdAttribute(NULL);
],
[AC_MSG_RESULT([yes])]
xerces_has_setidattribute=yes
[AC_DEFINE(XSEC_XERCES_HAS_SETIDATTRIBUTE)],
[AC_MSG_RESULT([no])])
if test -z $xerces_has_setidattribute; then
AC_MSG_CHECKING([whether Xerces XMLElement has ::setIdAttribute(XMLCh*, bool)])
AC_TRY_COMPILE([#include <xercesc/dom/DOM.hpp>],
[using namespace XERCES_CPP_NAMESPACE;
DOMElement * elt;
elt->setIdAttribute(NULL, false);
],
[AC_MSG_RESULT([yes])]
xerces_has_setidattribute=yes
[AC_DEFINE(XSEC_XERCES_HAS_BOOLSETIDATTRIBUTE)],
[AC_MSG_RESULT([no])])
fi
# For Xerces 3.x we now have a stricter DOM L3 implementation
AC_MSG_CHECKING([whether Xerces DOMImplementationLS has DOMLSSerializer])
AC_TRY_COMPILE([#include <xercesc/dom/DOM.hpp>],
[using namespace XERCES_CPP_NAMESPACE;
DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(NULL);
DOMLSSerializer *ls = ((DOMImplementationLS*)impl)->createLSSerializer();
],
[AC_MSG_RESULT([yes])]
[AC_DEFINE(XSEC_XERCES_DOMLSSERIALIZER)],
[AC_MSG_RESULT([no])])
AC_MSG_CHECKING([whether Xerces DOMEntity uses getInputEncoding()])
AC_TRY_COMPILE([#include <xercesc/dom/DOM.hpp>],
[using namespace XERCES_CPP_NAMESPACE;
DOMEntity *t;
t->getInputEncoding();
],
[AC_MSG_RESULT([yes])]
[AC_DEFINE(XSEC_XERCES_DOMENTITYINPUTENCODING)],
[AC_MSG_RESULT([no])])
# Now check for Xalan
if test x"$use_xalan" != x"no" ; then
if test $XALANCROOT; then
AC_MSG_CHECKING([for Xalan headers in XALANCROOT])
OLD_CPPFLAGS=$CPPFLAGS
# Updated to include nls/include as this is generally needed for
# compilation against non-installed xalan.
# Also now include XALANCROOT/include to cater for installed xalan
CPPFLAGS=["-I${XALANCROOT}/src -I${XALANCROOT}/include -I${XALANCROOT}/nls/include ${CPPFLAGS}"]
AC_TRY_CPP([#include <xalanc/Include/XalanVersion.hpp>],
xalan_found=yes
LIBS="-L${XALANCROOT}/lib -lxalan-c ${LIBS}"
[AC_MSG_RESULT([found])],
CPPFLAGS=$OLD_CPPFLAGS
[AC_MSG_RESULT([no])]);
fi
if test -z $xalan_found ; then
AC_MSG_CHECKING([for Xalan in system includes])
AC_TRY_CPP([#include <xalanc/Include/XalanVersion.hpp>],
xalan_found=yes
LIBS="${LIBS} -lxalan-c"
[AC_MSG_RESULT([found])],
[AC_DEFINE(XSEC_NO_XALAN)]
[AC_MSG_RESULT([no - WARNING - configuring for no Xalan])]);
fi
else
# NO_XALAN is defined - so we skip
AC_MSG_NOTICE([Warning - Xalan being configured out - XPath and XSLT will not be available])
AC_DEFINE(XSEC_NO_XALAN)
fi
if test "${xalan_found}" = "yes" ; then
# Do we need xalanMsg.so?
AC_MSG_CHECKING([if libxalanMsg is required])
old_libs=$LIBS
LIBS="${LIBS} -lxalanMsg"
AC_TRY_LINK([],[
int test=1;
],
AC_MSG_RESULT([yes]),
AC_MSG_RESULT([no])
LIBS=${old_libs});
fi
# Check for handling of XSLException types
if test "$xalan_found" = "yes" ; then
AC_MSG_CHECKING([whether XSLException::getType() returns XalanDOMString])
AC_TRY_COMPILE([#include <xalanc/PlatformSupport/XSLException.hpp>],
[ try {
int x = 1;
}
catch (XALAN_CPP_NAMESPACE_QUALIFIER XSLException &e) {
e.getType().c_str();
}
],
AC_DEFINE(XSEC_XSLEXCEPTION_RETURNS_DOMSTRING)
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])]);
AC_MSG_CHECKING([whether XercesParserLiaison ctor takes XercesDOMSupport])
AC_TRY_COMPILE([#include <xalanc/XercesParserLiaison/XercesDOMSupport.hpp>
#include <xalanc/XercesParserLiaison/XercesParserLiaison.hpp>],
[ XALAN_CPP_NAMESPACE_QUALIFIER XercesDOMSupport
theDOMSupport;
XALAN_CPP_NAMESPACE_QUALIFIER XercesParserLiaison
theParserLiaison(theDOMSupport);
],
AC_DEFINE(XSEC_XERCESPARSERLIAISON_REQS_DOMSUPPORT)
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])]);
AC_MSG_CHECKING([whether XPathEvaluator::selectNodeList reqs NodeRefList])
AC_TRY_COMPILE([#include <xalanc/XercesParserLiaison/XercesDOMSupport.hpp>
#include <xalanc/XPath/XPathEvaluator.hpp>
#include <xalanc/XPath/NodeRefList.hpp>
#include <xalanc/XercesParserLiaison/XercesParserLiaison.hpp>],
[ XALAN_CPP_NAMESPACE_QUALIFIER XercesDOMSupport
theDOMSupport;
XALAN_CPP_NAMESPACE_QUALIFIER XPathEvaluator theEvaluator;
XALAN_CPP_NAMESPACE_QUALIFIER NodeRefList theResult(
theEvaluator.selectNodeList(
theDOMSupport,
NULL,
NULL,
NULL));
],
[AC_MSG_RESULT([no])],
AC_DEFINE(XSEC_SELECTNODELIST_REQS_NODEREFLIST)
[AC_MSG_RESULT([yes])]);
AC_MSG_CHECKING([whether Xalan classes req MemoryManager])
AC_TRY_COMPILE([
#include <xalanc/XPath/XPathDefinitions.hpp>
#include <xalanc/XPath/Function.hpp>],
[
}
XALAN_CPP_NAMESPACE_BEGIN
class FunctionTest : public Function
{
public:
typedef Function ParentType;
FunctionTest();
virtual ~FunctionTest();
virtual XObjectPtr
execute(
XPathExecutionContext& executionContext,
XalanNode* context,
const XObjectArgVectorType& args,
const LocatorType* locator) const;
XObjectPtr
execute(
XPathExecutionContext& executionContext,
XalanNode* context,
const XObjectPtr arg1,
const XObjectPtr arg2,
const LocatorType* locator) const;
XObjectPtr
execute(
XPathExecutionContext& executionContext,
XalanNode* context,
const XObjectPtr arg1,
const XObjectPtr arg2,
const XObjectPtr arg3,
const LocatorType* locator) const;
#if !defined(XALAN_NO_USING_DECLARATION)
using ParentType::execute;
#endif
#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
virtual Function*
#else
virtual FunctionTest*
#endif
clone() const;
protected:
virtual const XalanDOMString
getError() const;
private:
// Not implemented...
FunctionTest&
operator=(const FunctionTest&);
bool
operator==(const FunctionTest&) const;
};
void main2(void){
FunctionTest t;
}
XALAN_CPP_NAMESPACE_END
int main3(void) {
],
[AC_MSG_RESULT([no])],
AC_DEFINE(XSEC_XALAN_REQS_MEMORYMANAGER)
[AC_MSG_RESULT([yes])]);
fi
# AC_LANG(C)
# Check for OpenSSL
if test $OPENSSL ; then
# First check includes
AC_MSG_CHECKING([for OpenSSL headers in OPENSSL])
OLD_CPPFLAGS=$CPPFLAGS
CPPFLAGS=["${CPPFLAGS} -I${OPENSSL}/include"]
AC_TRY_CPP([#include <openssl/opensslv.h>],
openssl_found=yes
AC_DEFINE(HAVE_OPENSSL)
[AC_MSG_RESULT([found])],
CPPFLAGS=$OLD_CPPFLAGS
[AC_MSG_RESULT([no])]);
# Now check libs
# Note we keep both the base OPENSSL dir and /lib to handle
# both an installed version or a source dir
OLD_LIBS=$LIBS
LIBS=["${LIBS} -L${OPENSSL} -lcrypto"]
# As of 1.3 - use AC_TRY_LINK to check as AC_CHECK_LIB does
# the wrong thing
AC_MSG_CHECKING([for libcrypto])
AC_TRY_LINK([#include <openssl/evp.h>],
[EVP_EncryptInit(NULL, NULL, NULL, NULL) ; return 0; ],
[AC_MSG_RESULT([found])]
openssllib_found=yes,
[LIBS=$OLD_LIBS])
if test -z $openssllib_found ; then
LIBS=["${LIBS} -L${OPENSSL}/lib -lcrypto"]
AC_TRY_LINK([#include <openssl/evp.h>],
[EVP_EncryptInit(NULL, NULL, NULL, NULL) ; return 0; ],
[AC_MSG_RESULT([found])]
openssllib_found=yes,
[LIBS=$OLD_LIBS]
[AC_MSG_RESULT([no])]
[AC_MSG_ERROR(["Unable to find libcrypto"])])
fi
fi
if test -z $openssl_found ; then
AC_MSG_CHECKING([for OpenSSL in system includes])
AC_TRY_CPP([#include <openssl/opensslv.h>],
openssl_found=yes
AC_DEFINE(HAVE_OPENSSL)
LIBS="${LIBS} -lcrypto"
[AC_MSG_RESULT([found])],
[AC_MSG_RESULT([no])]
[AC_MSG_ERROR([OpenSSL header files not found. Please define OPENSSL])]);
fi
# Now try to find out some things about this version of OpenSSL
AC_LANG(C++)
AC_MSG_CHECKING([for const input buffers in OpenSSL])
AC_TRY_COMPILE([#include <openssl/rsa.h>],
[ const unsigned char * buf;
unsigned char * outbuf;
RSA rsa;
RSA_private_decrypt(1,
buf,
outbuf,
&rsa,
RSA_PKCS1_PADDING);
],
[AC_MSG_RESULT([yes])]
[AC_DEFINE(XSEC_OPENSSL_CONST_BUFFERS)],
[AC_MSG_RESULT([no])])
# Check for full strength AES - Solaris 10 install is broken
# and only supports low end AES. As the library does not have
# this granularity, we have to disable AES in this instance.
# AC_CHECK_DECL(EVP_aes_256_cbc,
# [AC_DEFINE(XSEC_OPENSSL_HAVE_AES)],
# ,[#include <openssl/evp.h>])
AC_MSG_CHECKING([for non-broken AES support])
AC_TRY_LINK([#include <openssl/evp.h>],
[ EVP_aes_256_cbc();
],
[AC_MSG_RESULT([yes])]
[AC_DEFINE(XSEC_OPENSSL_HAVE_AES)],
[AC_MSG_RESULT([no])])
AC_CHECK_DECL(EVP_CIPHER_CTX_set_padding,
[AC_DEFINE(XSEC_OPENSSL_CANSET_PADDING)],
,[#include <openssl/evp.h>])
AC_CHECK_DECL(CRYPTO_cleanup_all_ex_data,
[AC_DEFINE(XSEC_OPENSSL_HAVE_CRYPTO_CLEANUP_ALL_EX_DATA)],
,[#include <openssl/crypto.h>])
AC_MSG_CHECKING([for const input buffer in loadX509Base64Bin])
AC_TRY_COMPILE([#include <openssl/x509.h>],
[ const unsigned char * buf;
d2i_X509(NULL, &buf, 1);
],
[AC_MSG_RESULT([yes])]
[AC_DEFINE(XSEC_OPENSSL_D2IX509_CONST_BUFFER)],
[AC_MSG_RESULT([no])])
# String functions
AC_CHECK_DECL(_strdup,
[AC_DEFINE(XSEC_HAVE__STRDUP)],
,[#include <string.h>])
AC_CHECK_DECL(_stricmp,
[AC_DEFINE(XSEC_HAVE__STRDUP)],
,[#include <string.h>])
AC_CHECK_DECL(_getcwd,
[AC_DEFINE(XSEC_HAVE__GETCWD)],
,[#include <string.h>])
AC_CHECK_DECL(_getcwd,
[AC_DEFINE(XSEC_HAVE__GETCWD)],
,[#include <string.h>])
AC_CHECK_DECL(stricmp,
[AC_DEFINE(XSEC_HAVE_STRICMP)],
,[#include <string.h>])
AC_CHECK_DECL(strcasecmp,
[AC_DEFINE(XSEC_HAVE_STRCASECMP)],
,[#include <string.h>])
# Populate Install directories
AC_SUBST(prefix)
AC_SUBST(exec_prefix)
AC_SUBST(includedir)
AC_SUBST(libdir)
AC_SUBST(bindir)
# Populate special platform specific make commands
AC_SUBST(LINK_COMMAND_1)
AC_SUBST(LINK_COMMAND_2)
AC_SUBST(INSTALL_COMMAND_1)
AC_SUBST(INSTALL_COMMAND_2)
AC_SUBST(INSTALL_COMMAND_3)
# Now populate the platform and Compiler related variables.
AC_SUBST(platform)
cxx=${CXX}
AC_SUBST(cxx)
cc=${CC}
AC_SUBST(cc)
AC_SUBST(prefix)
AC_SUBST(osver)
cxxflags=${CXXFLAGS}
AC_SUBST(cxxflags)
cppflags=${CPPFLAGS}
AC_SUBST(cppflags)
cflags=${CFLAGS}
AC_SUBST(cflags)
ldflags=${LDFLAGS}
AC_SUBST(ldflags)
libs=${LIBS}
AC_SUBST(libs)
transcoder=${TRANSCODER}
AC_SUBST(transcoder)
threads=${THREADS}
AC_SUBST(threads)
bitstobuild=${BITSTOBUILD}
AC_SUBST(bitstobuild)
cc1=${CC1}
AC_SUBST(cc1)
cc4=${CC4}
AC_SUBST(cc4)
ln_s=${LN_S}
AC_SUBST(ln_s)
install=${INSTALL}
install_data=${INSTALL_DATA}
AC_SUBST(install)
AC_SUBST(install_data)
make_shared=${MAKE_SHARED}
AC_SUBST(make_shared)
link=${LINK}
AC_SUBST(link)
AC_SUBST(objsuffix)
AC_SUBST(shlibsuffix)
# Populate the Makefile conditionals
AM_CONDITIONAL(XSEC_AM_HAVE_OPENSSL, test x$openssl_found = xyes)
# Versioning
package_version=${PACKAGE_VERSION}
package_libtool_version="${package_version_major}${package_version_medium}:${package_version_minor}"
AC_SUBST(package_version)
AC_SUBST(package_version_major)
AC_SUBST(package_libtool_version)
AC_DEFINE_UNQUOTED(XSEC_VERSION, "$package_version")
AC_DEFINE_UNQUOTED(XSEC_VERSION_MAJOR, $package_version_major)
AC_DEFINE_UNQUOTED(XSEC_VERSION_MEDIUM, $package_version_medium)
AC_DEFINE_UNQUOTED(XSEC_VERSION_MINOR, $package_version_minor)
package_name=${PACKAGE_NAME}
AC_SUBST(package_name)
package_tarname=${PACKAGE_TARNAME}
AC_SUBST(package_tarname)
# Library names
AC_SUBST(lib_name)
AC_SUBST(lib_major_name)
AC_SUBST(lib_short_name)
# output the Makefiles
AC_OUTPUT()