From: Scott Cantor Date: Thu, 17 May 2007 03:58:17 +0000 (+0000) Subject: Move curl dependent code to full build only. X-Git-Tag: 1.0-alpha1~22 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-xmltooling.git;a=commitdiff_plain;h=00eb828dc438a799606eb50b1f9e5027283d2e05 Move curl dependent code to full build only. --- diff --git a/configure.ac b/configure.ac index 39563a8..5684cf4 100644 --- a/configure.ac +++ b/configure.ac @@ -23,11 +23,11 @@ AC_ARG_ENABLE(debug, 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" + GCC_CFLAGS="$CFLAGS -g -D_DEBUG" + GCC_CXXFLAGS="$CXXFLAGS -g -D_DEBUG" else - GCC_CFLAGS="$CFLAGS -Wall -O2 -DNDEBUG" - GCC_CXXFLAGS="$CXXFLAGS -Wall -O2 -DNDEBUG" + GCC_CFLAGS="$CFLAGS -O2 -DNDEBUG" + GCC_CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" fi AC_PROG_CC([gcc gcc3 cc]) @@ -42,8 +42,8 @@ if test "$GCC" = "yes" ; then # GCC_CFLAGS="$GCC_CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden" # GCC_CXXFLAGS="$GCC_CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden" # ]) - CFLAGS="$GCC_CFLAGS" - CXXFLAGS="$GCC_CXXFLAGS" + CFLAGS="-Wall $GCC_CFLAGS" + CXXFLAGS="-Wall $GCC_CXXFLAGS" else # Fix for Sun Workshop compiler in debug mode, may be Sun case #6360993 case "${host_cpu}-${host_os}" in @@ -81,30 +81,6 @@ fi AC_CHECK_FUNCS([pthread_rwlock_init]) -# libcurl settings -AC_PATH_PROG(CURL_CONFIG,curl-config) -AC_ARG_WITH(curl, - AC_HELP_STRING([--with-curl=PATH], [where curl-config is installed]), - [ - CURL_CONFIG="${with_curl}" - if ! test -f "${CURL_CONFIG}" ; then - CURL_CONFIG="${with_curl}/bin/curl-config" - fi - ]) -if test -f "${CURL_CONFIG}" ; then - LDFLAGS="`${CURL_CONFIG} --libs` $LDFLAGS" - CPPFLAGS="`${CURL_CONFIG} --cflags` $CPPFLAGS" -else - AC_MSG_ERROR([curl-config not found, may need to use --with-curl option]) -fi -AC_CHECK_HEADER([curl/curl.h],,AC_MSG_ERROR([unable to find libcurl header files])) -AC_CHECK_LIB([curl],[curl_global_init],,AC_MSG_ERROR([unable to link with libcurl])) -AC_MSG_CHECKING([for CURLOPT_SSL_CTX_FUNCTION in curl.h]) -AC_EGREP_HEADER([CURLOPT_SSL_CTX_FUNCTION], [curl/curl.h], - [AC_MSG_RESULT(yes)], - [AC_MSG_ERROR([need libcurl that supports CURLOPT_SSL_CTX_FUNCTION])]) - - AC_LANG(C++) # C++ requirements @@ -205,6 +181,37 @@ int i = 0; AC_LANG(C) + # libcurl settings + AC_PATH_PROG(CURL_CONFIG,curl-config) + AC_ARG_WITH(curl, + AC_HELP_STRING([--with-curl=PATH], [where curl-config is installed]), + [ + CURL_CONFIG="${with_curl}" + if ! test -f "${CURL_CONFIG}" ; then + CURL_CONFIG="${with_curl}/bin/curl-config" + fi + ]) + if test -f "${CURL_CONFIG}" ; then + CPPFLAGS="`${CURL_CONFIG} --cflags`" + XMLSEC_LIBS="`${CURL_CONFIG} --libs` $XMLSEC_LIBS" + else + AC_MSG_ERROR([curl-config not found, may need to use --with-curl option]) + fi + + # save and append master libs + save_LIBS="$LIBS" + LIBS="$XMLSEC_LIBS $LIBS" + + AC_CHECK_HEADER([curl/curl.h],,AC_MSG_ERROR([unable to find libcurl header files])) + AC_CHECK_LIB([curl],[curl_global_init],,AC_MSG_ERROR([unable to link with libcurl])) + AC_MSG_CHECKING([for CURLOPT_SSL_CTX_FUNCTION in curl.h]) + AC_EGREP_HEADER([CURLOPT_SSL_CTX_FUNCTION], [curl/curl.h], + [AC_MSG_RESULT(yes)], + [AC_MSG_ERROR([need libcurl that supports CURLOPT_SSL_CTX_FUNCTION])]) + + # restore master libs + LIBS="$save_LIBS" + # OpenSSL settings AC_ARG_WITH(openssl, AC_HELP_STRING([--with-openssl=PATH], [where openssl is installed]), diff --git a/xmltooling/Makefile.am b/xmltooling/Makefile.am index b8f756b..0703030 100644 --- a/xmltooling/Makefile.am +++ b/xmltooling/Makefile.am @@ -129,7 +129,8 @@ xmlsec_sources = \ security/impl/TrustEngine.cpp \ security/impl/XSECCryptoX509CRL.cpp \ signature/impl/SignatureValidator.cpp \ - signature/impl/XMLSecSignatureImpl.cpp + signature/impl/XMLSecSignatureImpl.cpp \ + soap/impl/CURLSOAPTransport.cpp if BUILD_PTHREAD thread_sources = util/PThreads.cpp @@ -161,7 +162,6 @@ common_sources = \ soap/impl/SOAPClient.cpp \ soap/impl/SOAPImpl.cpp \ soap/impl/SOAPSchemaValidators.cpp \ - soap/impl/CURLSOAPTransport.cpp \ util/DateTime.cpp \ util/NDC.cpp \ util/ParserPool.cpp \ diff --git a/xmltooling/XMLToolingConfig.cpp b/xmltooling/XMLToolingConfig.cpp index 468a29c..80a89fd 100644 --- a/xmltooling/XMLToolingConfig.cpp +++ b/xmltooling/XMLToolingConfig.cpp @@ -46,14 +46,14 @@ #endif #include -#include #include #include #include #include #ifndef XMLTOOLING_NO_XMLSEC - #include - #include +# include +# include +# include #endif using namespace soap11; @@ -197,11 +197,13 @@ bool XMLToolingInternalConfig::init() try { log.debug("library initialization started"); +#ifndef XMLTOOLING_NO_XMLSEC if (curl_global_init(CURL_GLOBAL_ALL)) { log.fatal("failed to initialize libcurl, OpenSSL, or Winsock"); return false; } log.debug("libcurl %s initialization complete", LIBCURL_VERSION); +#endif XMLPlatformUtils::Initialize(); log.debug("Xerces initialization complete"); @@ -257,9 +259,9 @@ bool XMLToolingInternalConfig::init() registerCredentialResolvers(); registerTrustEngines(); registerXMLAlgorithms(); -#endif registerSOAPTransports(); initSOAPTransports(); +#endif registerStorageServices(); m_urlEncoder = new URLEncoder(); @@ -273,7 +275,9 @@ bool XMLToolingInternalConfig::init() } catch (const xercesc::XMLException&) { log.fatal("caught exception while initializing Xerces"); +#ifndef XMLTOOLING_NO_XMLSEC curl_global_cleanup(); +#endif return false; } @@ -305,10 +309,10 @@ void XMLToolingInternalConfig::term() AttributeExtensibleXMLObject::deregisterIDAttributes(); StorageServiceManager.deregisterFactories(); - termSOAPTransports(); - SOAPTransportManager.deregisterFactories(); #ifndef XMLTOOLING_NO_XMLSEC + termSOAPTransports(); + SOAPTransportManager.deregisterFactories(); TrustEngineManager.deregisterFactories(); CredentialResolverManager.deregisterFactories(); KeyInfoResolverManager.deregisterFactories(); @@ -359,9 +363,10 @@ void XMLToolingInternalConfig::term() m_lock=NULL; XMLPlatformUtils::Terminate(); +#ifndef XMLTOOLING_NO_XMLSEC curl_global_cleanup(); - - #ifdef _DEBUG +#endif +#ifdef _DEBUG xmltooling::NDC ndc("term"); #endif Category::getInstance(XMLTOOLING_LOGCAT".XMLToolingConfig").info("library shutdown complete"); diff --git a/xmltooling/soap/SOAPTransport.h b/xmltooling/soap/SOAPTransport.h index d3b8bc5..b36c606 100644 --- a/xmltooling/soap/SOAPTransport.h +++ b/xmltooling/soap/SOAPTransport.h @@ -151,6 +151,7 @@ namespace xmltooling { virtual std::string getContentType() const=0; }; +#ifndef XMLTOOLING_NO_XMLSEC /** * Registers SOAPTransport classes into the runtime. */ @@ -165,6 +166,7 @@ namespace xmltooling { * Notifies transport infrastructure to shutdown. */ void XMLTOOL_API termSOAPTransports(); +#endif };