Add a --forever flag, to continuously run tests as things change.
	Change on 2015/01/07 by ctiller <ctiller@google.com>
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=83451760
diff --git a/Makefile b/Makefile
index 829241b..49b0bd6 100644
--- a/Makefile
+++ b/Makefile
@@ -84,7 +84,7 @@
 LDFLAGS += -g -pthread -fPIC
 
 INCLUDES = . include gens
-LIBS = rt m z pthread
+LIBS = rt m z event event_pthreads pthread
 LIBSXX = protobuf
 LIBS_PROTOC = protoc protobuf
 
@@ -143,12 +143,20 @@
 IS_GIT_FOLDER = true
 endif
 
+EVENT2_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/event2.c -levent $(LDFLAGS)
 OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/openssl-alpn.c -lssl -lcrypto -ldl $(LDFLAGS)
 ZLIB_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/zlib.c -lz $(LDFLAGS)
 
+HAS_SYSTEM_EVENT2 = $(shell $(EVENT2_CHECK_CMD) 2> /dev/null && echo true || echo false)
 HAS_SYSTEM_OPENSSL_ALPN = $(shell $(OPENSSL_ALPN_CHECK_CMD) 2> /dev/null && echo true || echo false)
 HAS_SYSTEM_ZLIB = $(shell $(ZLIB_CHECK_CMD) 2> /dev/null && echo true || echo false)
 
+ifeq ($(wildcard third_party/libevent/include/event2/event.h),)
+HAS_EMBEDDED_EVENT2 = false
+else
+HAS_EMBEDDED_EVENT2 = true
+endif
+
 ifeq ($(wildcard third_party/openssl/ssl/ssl.h),)
 HAS_EMBEDDED_OPENSSL_ALPN = false
 else
@@ -161,6 +169,12 @@
 HAS_EMBEDDED_ZLIB = true
 endif
 
+ifneq ($(SYSTEM),MINGW32)
+ifeq ($(HAS_SYSTEM_EVENT2),false)
+DEP_MISSING += libevent
+endif
+endif
+
 ifeq ($(HAS_SYSTEM_ZLIB),false)
 ifeq ($(HAS_EMBEDDED_ZLIB),true)
 ZLIB_DEP = third_party/zlib/libz.a
@@ -452,6 +466,7 @@
 chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_test: bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_test
 
 run_dep_checks:
+	$(EVENT2_CHECK_CMD) || true
 	$(OPENSSL_ALPN_CHECK_CMD) || true
 	$(ZLIB_CHECK_CMD) || true
 
@@ -1214,11 +1229,9 @@
     src/core/iomgr/alarm_heap.c \
     src/core/iomgr/endpoint.c \
     src/core/iomgr/endpoint_pair_posix.c \
-    src/core/iomgr/fd_posix.c \
-    src/core/iomgr/iomgr.c \
-    src/core/iomgr/iomgr_posix.c \
-    src/core/iomgr/pollset_multipoller_with_poll_posix.c \
-    src/core/iomgr/pollset_posix.c \
+    src/core/iomgr/iomgr_libevent.c \
+    src/core/iomgr/iomgr_libevent_use_threads.c \
+    src/core/iomgr/pollset.c \
     src/core/iomgr/resolve_address_posix.c \
     src/core/iomgr/sockaddr_utils.c \
     src/core/iomgr/socket_utils_common_posix.c \
@@ -1264,8 +1277,8 @@
     src/core/transport/chttp2/stream_encoder.c \
     src/core/transport/chttp2/stream_map.c \
     src/core/transport/chttp2/timeout_encoding.c \
-    src/core/transport/chttp2/varint.c \
     src/core/transport/chttp2_transport.c \
+    src/core/transport/chttp2/varint.c \
     src/core/transport/metadata.c \
     src/core/transport/stream_op.c \
     src/core/transport/transport.c \
@@ -1366,11 +1379,9 @@
     src/core/iomgr/alarm_heap.c \
     src/core/iomgr/endpoint.c \
     src/core/iomgr/endpoint_pair_posix.c \
-    src/core/iomgr/fd_posix.c \
-    src/core/iomgr/iomgr.c \
-    src/core/iomgr/iomgr_posix.c \
-    src/core/iomgr/pollset_multipoller_with_poll_posix.c \
-    src/core/iomgr/pollset_posix.c \
+    src/core/iomgr/iomgr_libevent.c \
+    src/core/iomgr/iomgr_libevent_use_threads.c \
+    src/core/iomgr/pollset.c \
     src/core/iomgr/resolve_address_posix.c \
     src/core/iomgr/sockaddr_utils.c \
     src/core/iomgr/socket_utils_common_posix.c \
@@ -1416,8 +1427,8 @@
     src/core/transport/chttp2/stream_encoder.c \
     src/core/transport/chttp2/stream_map.c \
     src/core/transport/chttp2/timeout_encoding.c \
-    src/core/transport/chttp2/varint.c \
     src/core/transport/chttp2_transport.c \
+    src/core/transport/chttp2/varint.c \
     src/core/transport/metadata.c \
     src/core/transport/stream_op.c \
     src/core/transport/transport.c \