summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2017-06-01 14:20:31 (GMT)
committerStefan Radomski <github@mintwerk.de>2017-06-01 14:20:31 (GMT)
commitcfa566ab882b416396aba38252992903658f2a8b (patch)
treedb7a697735e8125abfdd49c3845a26f364291f8b /contrib
parent1e84bbb24e8301ccfcf8ffd98f00447fa566c8a6 (diff)
downloaduscxml-cfa566ab882b416396aba38252992903658f2a8b.zip
uscxml-cfa566ab882b416396aba38252992903658f2a8b.tar.gz
uscxml-cfa566ab882b416396aba38252992903658f2a8b.tar.bz2
SSL support on Win32
Diffstat (limited to 'contrib')
-rw-r--r--contrib/cmake/BuildLibCurl.cmake31
-rw-r--r--contrib/cmake/BuildLibEvent.cmake24
-rw-r--r--contrib/patches/libevent/Makefile.nmake82
3 files changed, 114 insertions, 23 deletions
diff --git a/contrib/cmake/BuildLibCurl.cmake b/contrib/cmake/BuildLibCurl.cmake
index 54bfe4a..c7251fe 100644
--- a/contrib/cmake/BuildLibCurl.cmake
+++ b/contrib/cmake/BuildLibCurl.cmake
@@ -26,27 +26,20 @@ if (MSVC)
set(VC_VERSION 12)
endif()
+ SET(MACHINE_ARCH "x86")
if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
- externalproject_add(libcurl
- URL https://curl.haxx.se/download/curl-7.48.0.tar.gz
- URL_MD5 b2cac71029d28cb989150bac72aafab5
- BUILD_IN_SOURCE 1
- PREFIX ${CMAKE_BINARY_DIR}/deps/libcurl
- CONFIGURE_COMMAND ""
- BUILD_COMMAND cd winbuild && nmake /f Makefile.vc mode=static MACHINE=x64 VC=${VC_VERSION}
- INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory builds/libcurl-vc${VC_VERSION}-x64-release-static-ipv6-sspi-winssl ${CMAKE_BINARY_DIR}/deps/libcurl/
- )
- else()
- externalproject_add(libcurl
- URL https://curl.haxx.se/download/curl-7.48.0.tar.gz
- URL_MD5 b2cac71029d28cb989150bac72aafab5
- BUILD_IN_SOURCE 1
- PREFIX ${CMAKE_BINARY_DIR}/deps/libcurl
- CONFIGURE_COMMAND ""
- BUILD_COMMAND cd winbuild && nmake /f Makefile.vc mode=static MACHINE=x86 VC=${VC_VERSION}
- INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory builds/libcurl-vc${VC_VERSION}-x86-release-static-ipv6-sspi-winssl ${CMAKE_BINARY_DIR}/deps/libcurl/
- )
+ SET(MACHINE_ARCH "x64")
endif()
+
+ externalproject_add(libcurl
+ URL https://curl.haxx.se/download/curl-7.48.0.tar.gz
+ URL_MD5 b2cac71029d28cb989150bac72aafab5
+ BUILD_IN_SOURCE 1
+ PREFIX ${CMAKE_BINARY_DIR}/deps/libcurl
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND cd winbuild && nmake /f Makefile.vc mode=static MACHINE=${MACHINE_ARCH} VC=${VC_VERSION}
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory builds/libcurl-vc${VC_VERSION}-${MACHINE_ARCH}-release-static-ipv6-sspi-winssl ${CMAKE_BINARY_DIR}/deps/libcurl/
+ )
else()
externalproject_add(libcurl
URL https://curl.haxx.se/download/curl-7.48.0.tar.gz
diff --git a/contrib/cmake/BuildLibEvent.cmake b/contrib/cmake/BuildLibEvent.cmake
index 80e425a..26b9a42 100644
--- a/contrib/cmake/BuildLibEvent.cmake
+++ b/contrib/cmake/BuildLibEvent.cmake
@@ -2,24 +2,36 @@
# see http://tools.cinemapub.be/opendcp/opendcp-0.19-src/contrib/CMakeLists.txt
find_package(OpenSSL)
+if (OPENSSL_FOUND)
+ string(REGEX REPLACE "/include$" "" OPENSSL_ROOT_DIR ${OPENSSL_INCLUDE_DIR})
+ set(OPENSSL_ROOT_DIR "OPENSSL_DIR=${OPENSSL_ROOT_DIR}")
+ set(COPY_LIBEVENT_SSL "libevent_openssl.lib")
+else()
+ # essentially a noop to work around externalproject_add syntax
+ set(COPY_LIBEVENT_SSL "libevent.lib")
+endif()
include(ExternalProject)
if (MSVC)
externalproject_add(libevent
- URL https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
- URL_MD5 c4c56f986aa985677ca1db89630a2e11
+ URL https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
+ URL_MD5 f3eeaed018542963b7d2416ef1135ecc
BUILD_IN_SOURCE 1
PREFIX ${CMAKE_BINARY_DIR}/deps/libevent
CONFIGURE_COMMAND ""
- BUILD_COMMAND nmake -f Makefile.nmake
+ PATCH_COMMAND
+ ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/contrib/patches/libevent/Makefile.nmake" <SOURCE_DIR>/Makefile.nmake
+
+ BUILD_COMMAND nmake ${OPENSSL_ROOT_DIR} -f Makefile.nmake
INSTALL_COMMAND
${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/deps/libevent/lib &&
${CMAKE_COMMAND} -E copy libevent.lib ${CMAKE_BINARY_DIR}/deps/libevent/lib/ &&
${CMAKE_COMMAND} -E copy libevent_core.lib ${CMAKE_BINARY_DIR}/deps/libevent/lib/ &&
${CMAKE_COMMAND} -E copy libevent_extras.lib ${CMAKE_BINARY_DIR}/deps/libevent/lib/ &&
+ ${CMAKE_COMMAND} -E copy ${COPY_LIBEVENT_SSL} ${CMAKE_BINARY_DIR}/deps/libevent/lib/ &&
${CMAKE_COMMAND} -E copy_directory include ${CMAKE_BINARY_DIR}/deps/libevent/include &&
- ${CMAKE_COMMAND} -E copy Win32-Code/event2/event-config.h ${CMAKE_BINARY_DIR}/deps/libevent/include/event2/
+ ${CMAKE_COMMAND} -E copy Win32-Code/nmake/event2/event-config.h ${CMAKE_BINARY_DIR}/deps/libevent/include/event2/
)
else ()
if (UNIX)
@@ -57,6 +69,10 @@ elseif (UNIX)
endif()
elseif(WIN32)
set(LIBEVENT_LIBRARIES ${CMAKE_BINARY_DIR}/deps/libevent/lib/libevent.lib)
+ if (OPENSSL_FOUND)
+ list (APPEND LIBEVENT_LIBRARIES ${CMAKE_BINARY_DIR}/deps/libevent/lib/libevent_openssl.lib)
+ endif()
+
else()
message(FATAL_ERROR "Unknown platform!")
endif()
diff --git a/contrib/patches/libevent/Makefile.nmake b/contrib/patches/libevent/Makefile.nmake
new file mode 100644
index 0000000..b941a67
--- /dev/null
+++ b/contrib/patches/libevent/Makefile.nmake
@@ -0,0 +1,82 @@
+# WATCH OUT! This makefile is a work in progress. -*- makefile -*-
+#
+# I'm not very knowledgeable about MSVC and nmake beyond their most basic
+# aspects. If anything here looks wrong to you, please let me know.
+
+# If OPENSSL_DIR is not set, builds without OpenSSL support. If you want
+# OpenSSL support, you can set the OPENSSL_DIR variable to where you
+# installed OpenSSL. This can be done in the environment:
+# set OPENSSL_DIR=c:\openssl
+# Or on the nmake command line:
+# nmake OPENSSL_DIR=C:\openssl -f Makefile.nmake
+# Or by uncommenting the following line here in the makefile...
+
+# OPENSSL_DIR=c:\openssl
+
+!IFDEF OPENSSL_DIR
+SSL_CFLAGS=/I$(OPENSSL_DIR)\include /DEVENT__HAVE_OPENSSL
+!ELSE
+SSL_CFLAGS=
+!ENDIF
+
+# Needed for correctness
+CFLAGS=/IWIN32-Code /IWIN32-Code/nmake /Iinclude /Icompat /DHAVE_CONFIG_H /I. $(SSL_CFLAGS)
+
+# For optimization and warnings
+CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo
+
+# XXXX have a debug mode
+
+LIBFLAGS=/nologo
+
+CORE_OBJS=event.obj buffer.obj bufferevent.obj bufferevent_sock.obj \
+ bufferevent_pair.obj listener.obj evmap.obj log.obj evutil.obj \
+ strlcpy.obj signal.obj bufferevent_filter.obj evthread.obj \
+ bufferevent_ratelim.obj evutil_rand.obj evutil_time.obj
+WIN_OBJS=win32select.obj evthread_win32.obj buffer_iocp.obj \
+ event_iocp.obj bufferevent_async.obj
+EXTRA_OBJS=event_tagging.obj http.obj evdns.obj evrpc.obj
+
+!IFDEF OPENSSL_DIR
+SSL_OBJS=bufferevent_openssl.obj
+SSL_LIBS=libevent_openssl.lib
+!ELSE
+SSL_OBJS=
+SSL_LIBS=
+!ENDIF
+
+ALL_OBJS=$(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS) $(SSL_OBJS)
+STATIC_LIBS=libevent_core.lib libevent_extras.lib libevent.lib $(SSL_LIBS)
+
+
+all: static_libs
+
+static_libs: $(STATIC_LIBS)
+
+libevent_core.lib: $(CORE_OBJS) $(WIN_OBJS)
+ lib $(LIBFLAGS) $(CORE_OBJS) $(WIN_OBJS) /out:libevent_core.lib
+
+libevent_extras.lib: $(EXTRA_OBJS)
+ lib $(LIBFLAGS) $(EXTRA_OBJS) /out:libevent_extras.lib
+
+libevent.lib: $(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS)
+ lib $(LIBFLAGS) $(CORE_OBJS) $(EXTRA_OBJS) $(WIN_OBJS) /out:libevent.lib
+
+libevent_openssl.lib: $(SSL_OBJS)
+ lib $(LIBFLAGS) $(SSL_OBJS) /out:libevent_openssl.lib
+
+clean:
+ del $(ALL_OBJS)
+ del $(STATIC_LIBS)
+ cd test
+ $(MAKE) /F Makefile.nmake clean
+ cd ..
+
+tests:
+ cd test
+!IFDEF OPENSSL_DIR
+ $(MAKE) OPENSSL_DIR=$(OPENSSL_DIR) /F Makefile.nmake
+!ELSE
+ $(MAKE) /F Makefile.nmake
+!ENDIF
+ cd ..