From 28e7413bddf81f9db0d38bd4265be60183b9c0e1 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Mon, 29 Aug 2011 11:08:57 -0400 Subject: [PATCH] Make QCA2 an optional dep, it's only required for HMAC(md5) for resolvers --- CMakeLists.txt | 2 +- src/CMakeLists.txt | 11 ++++++++--- src/config.h.in | 1 + src/resolvers/qtscriptresolver.cpp | 5 +++++ src/resolvers/qtscriptresolver.h | 6 ++++++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9626afd2f..d796aef90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,7 +103,7 @@ macro_optional_find_package(Boost) macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explaination macro_optional_find_package(QCA2) -macro_log_feature(QCA2_FOUND "QCA2" "Provides encryption and signing functions required for Grooveshark resolver" "http://delta.affinix.com/qca/" TRUE "" "") +macro_log_feature(QCA2_FOUND "QCA2" "Provides encryption and signing functions required for Grooveshark resolver" "http://delta.affinix.com/qca/" FALSE "" "") # required #While we distribute our own liblastfm2, don't need to look for it diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 94b939cda..b027c1543 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -163,7 +163,6 @@ INCLUDE_DIRECTORIES( ${QJSON_INCLUDE_DIR} ${LIBECHONEST_INCLUDE_DIR} ${LIBECHONEST_INCLUDE_DIR}/.. - ${QCA2_INCLUDE_DIR} ) SET( OS_SPECIFIC_LINK_LIBRARIES "" ) @@ -195,6 +194,10 @@ IF(GLOOX_FOUND) ENDIF(GLOOX_FOUND) ADD_SUBDIRECTORY( sip ) +IF(QCA2_FOUND) + INCLUDE_DIRECTORIES( ${QCA2_INCLUDE_DIR} ) +ENDIF(QCA2_FOUND) + kde4_add_app_icon( tomahawkSources "${CMAKE_SOURCE_DIR}/data/icons/tomahawk-icon-*.png" ) qt4_add_resources( RC_SRCS "../resources.qrc" ) qt4_wrap_cpp( tomahawkMoc ${tomahawkHeaders} ) @@ -235,6 +238,10 @@ IF(GLOOX_FOUND) SET(LINK_LIBRARIES ${LINK_LIBRARIES} ${GLOOX_LIBRARIES} ) ENDIF(GLOOX_FOUND) +IF(QCA2_FOUND) + SET(LINK_LIBRARIES ${LINK_LIBRARIES} ${QCA2_LIBRARIES} ) +ENDIF(QCA2_FOUND) + TARGET_LINK_LIBRARIES( tomahawk ${LINK_LIBRARIES} ${TOMAHAWK_LIBRARIES} @@ -246,10 +253,8 @@ TARGET_LINK_LIBRARIES( tomahawk ${QXTWEB_LIBRARIES} ${QJSON_LIBRARIES} ${TAGLIB_LIBRARIES} - ${QCA2_LIBRARIES} ) - IF( APPLE ) IF(HAVE_SPARKLE) MESSAGE("Sparkle Found, installing framekwork in bundle") diff --git a/src/config.h.in b/src/config.h.in index 7ac3931a2..c065cf2d6 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -17,5 +17,6 @@ #cmakedefine LIBLASTFM_FOUND #cmakedefine GLOOX_FOUND +#cmakedefine QCA2_FOUND #endif // CONFIG_H_IN diff --git a/src/resolvers/qtscriptresolver.cpp b/src/resolvers/qtscriptresolver.cpp index 9cc49ae01..9f4577105 100644 --- a/src/resolvers/qtscriptresolver.cpp +++ b/src/resolvers/qtscriptresolver.cpp @@ -123,6 +123,7 @@ QtScriptResolverHelper::setResolverConfig( const QVariantMap& config ) QString QtScriptResolverHelper::hmac( const QByteArray& key, const QByteArray &input ) { +#ifdef QCA2_FOUND if ( !QCA::isSupported( "hmac(md5)" ) ) { tLog() << "HMAC(md5) not supported with qca-ossl plugin, or qca-ossl plugin is not installed! Unable to generate signature!"; @@ -138,6 +139,10 @@ QtScriptResolverHelper::hmac( const QByteArray& key, const QByteArray &input ) QString result = QCA::arrayToHex( resultArray.toByteArray() ); return result.toUtf8(); +#else + tLog() << "Tomahawk compiled without QCA support, cannot generate HMAC signature"; + return QString(); +#endif } QString diff --git a/src/resolvers/qtscriptresolver.h b/src/resolvers/qtscriptresolver.h index 83c4942f5..4549169c3 100644 --- a/src/resolvers/qtscriptresolver.h +++ b/src/resolvers/qtscriptresolver.h @@ -23,6 +23,7 @@ #include "query.h" #include "result.h" #include "utils/tomahawkutils.h" +#include "config.h" #include #include @@ -30,7 +31,10 @@ #include #include #include + +#ifdef QCA2_FOUND #include +#endif class QtScriptResolver; @@ -63,7 +67,9 @@ private: QString m_scriptPath; QVariantMap m_resolverConfig; QtScriptResolver* m_resolver; +#ifdef QCA2_FOUND QCA::Initializer m_qcaInit; +#endif }; class ScriptEngine : public QWebPage