=== Makefile.am ================================================================== --- Makefile.am (revision 8794) +++ Makefile.am (local) @@ -1,6 +1,5 @@ AUTOMAKE_OPTIONS = foreign no-dependencies -SUBDIRS = . sample test bin_SCRIPTS = event_rpcgen.py @@ -22,18 +21,34 @@ lib_LTLIBRARIES = libevent.la +if BUILD_WIN32 + +SUBDIRS = . sample +SYS_LIBS = -lws2_32 +SYS_SRC = WIN32-Code/misc.c WIN32-Code/win32.c +SYS_INCLUDES = -IWIN32-Code + +else + +SUBDIRS = . sample test +SYS_LIBS = +SYS_SRC = +SYS_INCLUDES = + +endif + libevent_la_SOURCES = event.c buffer.c evbuffer.c log.c event_tagging.c \ - http.c evhttp.h http-internal.h evdns.c evdns.h -libevent_la_LIBADD = @LTLIBOBJS@ + http.c evhttp.h http-internal.h evdns.c evdns.h $(SYS_SRC) +libevent_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS) libevent_la_LDFLAGS = -release @VERSION@ -version-info 1:3:0 include_HEADERS = event.h evhttp.h evdns.h -INCLUDES = -Icompat +INCLUDES = -Icompat $(SYS_INCLUDES) man_MANS = event.3 verify: libevent.la - cd $(srcdir)/test && make verify + cd $(srcdir)/test && make verify DISTCLEANFILES = *~ === WIN32-Code/misc.c ================================================================== --- WIN32-Code/misc.c (revision 8794) +++ WIN32-Code/misc.c (local) @@ -4,6 +4,12 @@ #include #include +#ifdef __GNUC__ +/*our prototypes for timeval and timezone are in here, just in case the above + headers don't have them*/ +#include "misc.h" +#endif + /**************************************************************************** * * Function: gettimeofday(struct timeval *, struct timezone *) === WIN32-Code/misc.h ================================================================== --- WIN32-Code/misc.h (revision 8794) +++ WIN32-Code/misc.h (local) @@ -1,6 +1,9 @@ #ifndef MISC_H #define MISC_H +struct timezone; +struct timeval; + int gettimeofday(struct timeval *,struct timezone *); #endif === WIN32-Code/win32.c ================================================================== --- WIN32-Code/win32.c (revision 8794) +++ WIN32-Code/win32.c (local) @@ -60,7 +60,8 @@ /* MSDN says this is required to handle SIGFPE */ volatile double SIGFPE_REQ = 0.0f; -int signal_handler(int sig); +static void signal_handler(int sig); + void signal_process(void); int signal_recalc(void); @@ -207,8 +208,9 @@ } int -win32_insert(struct win32op *win32op, struct event *ev) +win32_insert(void *op, struct event *ev) { + struct win32op *win32op = op; int i; if (ev->ev_events & EV_SIGNAL) { @@ -253,8 +255,9 @@ } int -win32_del(struct win32op *win32op, struct event *ev) +win32_del(void *op, struct event *ev) { + struct win32op *win32op = op; int i, found; if (ev->ev_events & EV_SIGNAL) @@ -304,9 +307,10 @@ */ int -win32_dispatch(struct event_base *base, struct win32op *win32op, +win32_dispatch(struct event_base *base, void *op, struct timeval *tv) { + struct win32op *win32op = op; int res = 0; int i; int fd_count; @@ -389,13 +393,11 @@ free(win32op); } -static int +static void signal_handler(int sig) { evsigcaught[sig]++; signal_caught = 1; - - return 0; } int === buffer.c ================================================================== --- buffer.c (revision 8794) +++ buffer.c (local) @@ -197,7 +197,7 @@ u_char *data = EVBUFFER_DATA(buffer); size_t len = EVBUFFER_LENGTH(buffer); char *line; - u_int i; + unsigned int i; for (i = 0; i < len; i++) { if (data[i] == '\r' || data[i] == '\n') === configure.in ================================================================== --- configure.in (revision 8794) +++ configure.in (local) @@ -111,6 +111,22 @@ ) fi +dnl - check if the macro WIN32 is defined on this compiler. +dnl - (this is how we check for a windows version of GCC) +AC_MSG_CHECKING(for WIN32) +AC_TRY_COMPILE(, + [ + #ifndef WIN32 + #error + #endif + ], + bwin32=true; AC_MSG_RESULT(yes), + bwin32=false; AC_MSG_RESULT(no), +) + +AM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue) + + dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE === evbuffer.c ================================================================== --- evbuffer.c (revision 8794) +++ evbuffer.c (local) @@ -163,12 +162,20 @@ if (EVBUFFER_LENGTH(bufev->output)) { res = evbuffer_write(bufev->output, fd); if (res == -1) { +#ifndef WIN32 +/*todo. evbuffer uses WriteFile when WIN32 is set. WIN32 system calls do not + *set errno. thus this error checking is not portable*/ if (errno == EAGAIN || errno == EINTR || errno == EINPROGRESS) goto reschedule; /* error case */ what |= EVBUFFER_ERROR; + +#else + goto reschedule; +#endif + } else if (res == 0) { /* eof case */ what |= EVBUFFER_EOF;