summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Antonuk <aega@med.umich.edu>2012-05-25 11:14:43 -0400
committerMichael Steinert <mike.steinert@gmail.com>2012-05-27 10:39:58 -0600
commit07ba8de95128373d42e704e74ae0e95d62dcaed5 (patch)
tree4edbb316f0a67cd3749d7366b41e9b5a05c8f331
parentcbf56b42d1061a2f1ebe62f3c42edbfe4d4da46a (diff)
downloadrabbitmq-c-github-ask-07ba8de95128373d42e704e74ae0e95d62dcaed5.tar.gz
Adding support for SSL to CMake build system
-rw-r--r--CMakeLists.txt25
-rw-r--r--cmake/FindPolarSSL.cmake17
-rw-r--r--cmake/FindcyaSSL.cmake17
-rw-r--r--librabbitmq/CMakeLists.txt34
4 files changed, 93 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 194c25a..0d94a55 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,6 +55,7 @@ mark_as_advanced(AMQP_CODEGEN_DIR)
find_package(POPT)
find_package(XmlTo)
+find_package(OpenSSL 1.0.0)
if (POPT_FOUND AND XmlTo_FOUND)
set(DO_DOCS ON)
@@ -65,6 +66,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 (WIN32 AND NOT BUILD_SHARED_LIBS)
message(FATAL_ERROR "The rabbitmq-c library cannot be built as a static library on Win32. Set BUILD_SHARED_LIBS=ON to get around this.")
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 140c4b9..958b641 100644
--- a/librabbitmq/CMakeLists.txt
+++ b/librabbitmq/CMakeLists.txt
@@ -70,6 +70,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
${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.h
${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.c
@@ -77,6 +106,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)
@@ -87,6 +117,10 @@ endif()
add_library(rabbitmq ${RABBITMQ_SOURCES})
+if (ENABLE_SSL_SUPPORT)
+ target_link_libraries(rabbitmq ${AMQP_SSL_LIBS})
+endif()
+
if(WIN32)
target_link_libraries(rabbitmq ws2_32)
endif(WIN32)