diff options
-rw-r--r-- | CMakeLists.txt | 25 | ||||
-rw-r--r-- | cmake/FindPolarSSL.cmake | 17 | ||||
-rw-r--r-- | cmake/FindcyaSSL.cmake | 17 | ||||
-rw-r--r-- | librabbitmq/CMakeLists.txt | 35 |
4 files changed, 93 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 55d56e1..a9447be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -202,6 +202,7 @@ endif (REGENERATE_AMQP_FRAMING) find_package(POPT) find_package(XmlTo) +find_package(OpenSSL 1.0.0) if (POPT_FOUND AND XmlTo_FOUND) set(DO_DOCS ON) @@ -214,6 +215,30 @@ option(BUILD_EXAMPLES "Build Examples" ON) option(BUILD_TOOLS "Build Tools (requires POPT Library)" ${POPT_FOUND}) option(BUILD_TOOLS_DOCS "Build man pages for Tools (requires xmlto)" ${DO_DOCS}) option(BUILD_TESTS "Build tests (run tests with make test)" ON) +option(ENABLE_SSL_SUPPORT "Enable SSL support" ON) + +set(SSL_ENGINE "OpenSSL" CACHE STRING "SSL Backend to use, valid options: OpenSSL, cyaSSL, GnuTLS, PolarSSL") +mark_as_advanced(SSL_ENGINE) + +if (ENABLE_SSL_SUPPORT) + if (SSL_ENGINE STREQUAL "OpenSSL") + if (NOT OPENSSL_FOUND) + message(FATAL_ERROR "Cannot find OpenSSL package, install openssl-dev package") + endif() + + elseif (SSL_ENGINE STREQUAL "cyaSSL") + find_package(cyaSSL REQUIRED) + + elseif (SSL_ENGINE STREQUAL "GnuTLS") + find_package(GnuTLS REQUIRED) + + elseif (SSL_ENGINE STREQUAL "PolarSSL") + find_package(PolarSSL REQUIRED) + + else() + message(FATAL_ERROR "Unsupported SSL_ENGINE ${SSL_ENGINE}, valid engines: OpenSSL, cyaSSL, GnuTLS, or PolarSSL") + endif() +endif() if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) message(FATAL_ERROR "One or both of BUILD_SHARED_LIBS or BUILD_STATIC_LIBS must be set to ON to build") diff --git a/cmake/FindPolarSSL.cmake b/cmake/FindPolarSSL.cmake new file mode 100644 index 0000000..f5a7c9b --- /dev/null +++ b/cmake/FindPolarSSL.cmake @@ -0,0 +1,17 @@ +INCLUDE(LibFindMacros) + +# Find the include directories +FIND_PATH(POLARSSL_INCLUDE_DIR + NAMES polarssl/ssl.h + HINTS ${POLARSSL_PREFIX}/include + ) + +FIND_LIBRARY(POLARSSL_LIBRARY + NAMES polarssl + HINTS ${POLARSSL_PREFIX}/lib + ) + +SET(POLARSSL_PROCESS_INCLUDES POLARSSL_INCLUDE_DIR) +SET(POLARSSL_PROCESS_LIBS POLARSSL_LIBRARY) + +LIBFIND_PROCESS(POLARSSL) diff --git a/cmake/FindcyaSSL.cmake b/cmake/FindcyaSSL.cmake new file mode 100644 index 0000000..80452bb --- /dev/null +++ b/cmake/FindcyaSSL.cmake @@ -0,0 +1,17 @@ +INCLUDE(LibFindMacros) + +# Find the include directories +FIND_PATH(CYASSL_INCLUDE_DIR + NAMES cyassl/ssl.h + HINTS ${CYASSL_PREFIX}/include + ) + +FIND_LIBRARY(CYASSL_LIBRARY + NAMES cyassl + HINTS ${CYASSL_PREFIX}/lib + ) + +SET(CYASSL_PROCESS_INCLUDES CYASSL_INCLUDE_DIR) +SET(CYASSL_PROCESS_LIBS CYASSL_LIBRARY) + +LIBFIND_PROCESS(CYASSL) diff --git a/librabbitmq/CMakeLists.txt b/librabbitmq/CMakeLists.txt index a9996cf..07d6146 100644 --- a/librabbitmq/CMakeLists.txt +++ b/librabbitmq/CMakeLists.txt @@ -76,6 +76,35 @@ set(LIBRABBITMQ_INCLUDE_DIRS add_definitions(-DHAVE_CONFIG_H) +if (ENABLE_SSL_SUPPORT) + add_definitions(-DWITH_SSL=1) + + if (SSL_ENGINE STREQUAL "OpenSSL") + set(AMQP_SSL_SRCS amqp-ssl.h amqp-openssl.c) + include_directories(${OPENSSL_INCLUDE_DIR}) + set(AMQP_SSL_LIBS ${OPENSSL_LIBRARIES}) + + elseif (SSL_ENGINE STREQUAL "cyaSSL") + set(AMQP_SSL_SRCS amqp-ssl.h amqp-cyassl.c) + include_directories(${CYASSL_INCLUDE_DIR}) + set(AMQP_SSL_LIBS ${CYASSL_LIBRARIES}) + + elseif (SSL_ENGINE STREQUAL "GnuTLS") + set(AMQP_SSL_SRCS amqp-ssl.h amqp-gnutls.c) + include_directories(${GNUTLS_INCLUDE_DIR}) + add_definitions(${GNUTLS_DEFINITIONS}) + set(AMQP_SSL_LIBS ${GNUTLS_LIBRARIES}) + + elseif (SSL_ENGINE STREQUAL "PolarSSL") + set(AMQP_SSL_SRCS amqp-ssl.h amqp-polarssl.c) + include_directories(${POLARSSL_INCLUDE_DIR}) + set(AMQP_SSL_LIBS ${POLARSSL_LIBRARIES}) + + else() + message(FATAL_ERROR "Unknown SSL_ENGINE ${SSL_ENGINE}") + endif() +endif() + set(RABBITMQ_SOURCES ${AMQP_FRAMING_H_PATH} ${AMQP_FRAMING_C_PATH} @@ -83,6 +112,7 @@ set(RABBITMQ_SOURCES amqp_connection.c amqp_mem.c amqp_private.h amqp_socket.c amqp_table.c amqp_url.c ${SOCKET_IMPL}/socket.h ${SOCKET_IMPL}/socket.c + ${AMQP_SSL_SRCS} ) add_definitions(-DAMQP_BUILD) @@ -92,6 +122,10 @@ include(InstallMacros) if (BUILD_SHARED_LIBS) add_library(rabbitmq SHARED ${RABBITMQ_SOURCES}) + if (ENABLE_SSL_SUPPORT) + target_link_libraries(rabbitmq ${AMQP_SSL_LIBS}) + endif() + if (WIN32) set_target_properties(rabbitmq PROPERTIES VERSION ${RMQ_VERSION} OUTPUT_NAME rabbitmq.${RMQ_SOVERSION}) else (WIN32) @@ -141,4 +175,3 @@ install(FILES amqp.h ${AMQP_FRAMING_H_PATH} ${STDINT_H_INSTALL_FILE} ) set(RMQ_LIBRARY_TARGET ${RMQ_LIBRARY_TARGET} PARENT_SCOPE) - |