From c9e6c3d70f837755c3ea66700ff70f61d1e18015 Mon Sep 17 00:00:00 2001 From: billsegall Date: Wed, 16 Dec 2015 11:17:36 +1000 Subject: [PATCH 1/2] The Windows socket type is defined as SOCKET. Under the hood it's an unsigned rather than a signed type and whilst C compilers are largely happy with this C++ compilers tend to be fussy about class function signatures which makes C++ usage of libevent problematic. --- include/event2/util.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/event2/util.h b/include/event2/util.h index 3936786e..47391565 100644 --- a/include/event2/util.h +++ b/include/event2/util.h @@ -300,9 +300,9 @@ extern "C" { /** * A type wide enough to hold the output of "socket()" or "accept()". On - * Windows, this is an intptr_t; elsewhere, it is an int. */ + * Windows, this is an SOCKET; elsewhere, it is an int. */ #ifdef _WIN32 -#define evutil_socket_t intptr_t +#define evutil_socket_t SOCKET #else #define evutil_socket_t int #endif From ded80866563436d453e4fa26e8645e87529d07b8 Mon Sep 17 00:00:00 2001 From: billsegall Date: Thu, 17 Dec 2015 21:27:37 +1000 Subject: [PATCH 2/2] Provide a mechanism for building the library on Windows with different compiler flags. Add a batch file that builds it for the M[DT][d] options and performs a hunt and gather of the different output libraries. --- Makefile.nmake | 4 +++- buildall.bat | 26 ++++++++++++++++++++++++++ test/Makefile.nmake | 3 +++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 buildall.bat diff --git a/Makefile.nmake b/Makefile.nmake index f27cd619..d1e7a1c4 100644 --- a/Makefile.nmake +++ b/Makefile.nmake @@ -25,6 +25,9 @@ CFLAGS=/IWIN32-Code /IWIN32-Code/nmake /Iinclude /Icompat /DHAVE_CONFIG_H /I. $( # For optimization and warnings CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo +# Add BUILD_CFLAGS from the environment +CFLAGS=$(CFLAGS) $(BUILD_CFLAGS) + # XXXX have a debug mode LIBFLAGS=/nologo @@ -48,7 +51,6 @@ SSL_LIBS= 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 tests static_libs: $(STATIC_LIBS) diff --git a/buildall.bat b/buildall.bat new file mode 100644 index 00000000..3b537d02 --- /dev/null +++ b/buildall.bat @@ -0,0 +1,26 @@ +nmake -f Makefile.nmake clean + +set BUILD_CFLAGS=/MT +nmake -f Makefile.nmake +mkdir lib\MT\Release +move libev*.lib lib\MT\Release +nmake -f Makefile.nmake clean + +set BUILD_CFLAGS=/MTd +nmake -f Makefile.nmake +mkdir lib\MT\Debug +move libev*.lib lib\MT\Debug +nmake -f Makefile.nmake clean + +set BUILD_CFLAGS=/MD +nmake -f Makefile.nmake +mkdir lib\MD\Release +move libev*.lib lib\MD\Release +nmake -f Makefile.nmake clean + +set BUILD_CFLAGS=/MDd +nmake -f Makefile.nmake +mkdir lib\MD\Debug +move libev*.lib lib\MD\Debug +nmake -f Makefile.nmake clean + diff --git a/test/Makefile.nmake b/test/Makefile.nmake index 30c3eb79..54b15cdb 100644 --- a/test/Makefile.nmake +++ b/test/Makefile.nmake @@ -14,6 +14,9 @@ CFLAGS=/I.. /I../WIN32-Code /I../WIN32-Code/nmake /I../include /I../compat /DHAV CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo +# Add BUILD_CFLAGS from the environment +CFLAGS=$(CFLAGS) $(BUILD_CFLAGS) + REGRESS_OBJS=regress.obj regress_buffer.obj regress_http.obj regress_dns.obj \ regress_testutils.obj \ regress_rpc.obj regress.gen.obj \