diff -r d85b9d4fe6f0 opal/event/Makefile.am
--- a/opal/event/Makefile.am	Fri Sep 03 12:07:11 2010 -0600
+++ b/opal/event/Makefile.am	Tue Sep 07 12:31:23 2010 -0600
@@ -68,7 +68,9 @@
 # is user-visible, and so we can pretty much guarantee that release
 # series won't be binary-compatible.
 
+if RPC
 dist_bin_SCRIPTS = event_rpcgen.py
+endif
 
 pkgconfigdir=$(libdir)/pkgconfig
 pkgconfig_DATA=libevent.pc
@@ -160,7 +162,17 @@
 	bufferevent.c bufferevent_sock.c bufferevent_filter.c \
 	bufferevent_pair.c listener.c bufferevent_ratelim.c \
 	evmap.c	log.c evutil.c evutil_rand.c strlcpy.c $(SYS_SRC)
-EXTRA_SRC = event_tagging.c http.c evdns.c evrpc.c
+EXTRA_SRC = event_tagging.c
+
+if HTTP
+EXTRA_SRC += http.c
+endif
+if DNS
+EXTRA_SRC += evdns.c
+endif
+if RPC
+EXTRA_SRC += evrpc.c
+endif
 
 if BUILD_WIN32
 NO_UNDEFINED = -no-undefined
@@ -196,9 +208,9 @@
 endif
 
 noinst_HEADERS = util-internal.h mm-internal.h ipv6-internal.h \
-	evrpc-internal.h strlcpy-internal.h evbuffer-internal.h \
-	bufferevent-internal.h http-internal.h event-internal.h \
-	evthread-internal.h ht-internal.h defer-internal.h \
+	 strlcpy-internal.h evbuffer-internal.h \
+	bufferevent-internal.h event-internal.h \
+	evthread-internal.h  defer-internal.h \
 	minheap-internal.h log-internal.h evsignal-internal.h evmap-internal.h \
 	changelist-internal.h iocp-internal.h \
 	ratelim-internal.h \
@@ -206,7 +218,20 @@
 	WIN32-Code/tree.h \
 	compat/sys/queue.h
 
-include_HEADERS = event.h evhttp.h evdns.h evrpc.h evutil.h
+include_HEADERS = event.h evutil.h
+
+if HTTP
+noinst_HEADERS += http-internal.h \
+                  ht-internal.h
+include_HEADERS += evhttp.h
+endif
+if RPC
+noinst_HEADERS += evrpc-internal.h
+include_HEADERS += evrpc.h
+endif
+if DNS
+include_HEADERS += evdns.h
+endif
 
 INCLUDES = -I$(srcdir)/compat -I$(srcdir)/include -I./include $(SYS_INCLUDES)
 
diff -r d85b9d4fe6f0 opal/event/configure.in
--- a/opal/event/configure.in	Fri Sep 03 12:07:11 2010 -0600
+++ b/opal/event/configure.in	Tue Sep 07 12:31:23 2010 -0600
@@ -45,6 +45,44 @@
      AS_HELP_STRING(--disable-debug-mode, disable support for running in debug mode),
         [], [enable_debug_mode=yes])
 
+dnl	OMPI ARGUMENTS TO TURN OFF VARIOUS MODES
+AC_ARG_ENABLE(dns,
+	AS_HELP_STRING(--disable-dns, disable dns support),
+	[], [enable_dns=yes])
+AC_ARG_ENABLE(http,
+	AS_HELP_STRING(--disable-http, disable http support),
+	[], [enable_http=yes])
+AC_ARG_ENABLE(rpc,
+	AS_HELP_STRING(--disable-rpc, disable rpc support),
+	[], [enable_rpc=yes])
+AM_CONDITIONAL(DNS, [test "$enable_dns" != "no"])
+AC_DEFINE(HAVE_DNS, [test "$enable_dns" != "no"], [Define if the user wants DNS support])
+AM_CONDITIONAL(HTTP, [test "$enable_http" != "no"])
+AC_DEFINE(HAVE_HTTP, [test "$enable_http" != "no"], [Define if the user wants http support])
+AM_CONDITIONAL(RPC, [test "$enable_rpc" != "no"])
+AC_DEFINE(HAVE_RPC, [test "$enable_rpc" != "no"], [Define if the user wants rpc support])
+AC_ARG_ENABLE(select,
+	AS_HELP_STRING(--disable-select, disable select support),
+	[], [enable_select=yes])
+AC_ARG_ENABLE(poll,
+	AS_HELP_STRING(--disable-poll, disable poll support),
+	[], [enable_dns=yes])
+AC_ARG_ENABLE(devpoll,
+	AS_HELP_STRING(--disable-devpoll, disable devpoll support),
+	[], [enable_devpoll=yes])
+AC_ARG_ENABLE(kqueue,
+	AS_HELP_STRING(--disable-kqueue, disable kqueue support),
+	[], [enable_kqueue=yes])
+AC_ARG_ENABLE(epoll,
+	AS_HELP_STRING(--disable-epoll, disable epoll support),
+	[], [enable_epoll=yes])
+AC_ARG_ENABLE(evport,
+	AS_HELP_STRING(--disable-evport, disable evport support),
+	[], [enable_evport=yes])
+AC_ARG_ENABLE(signal,
+	AS_HELP_STRING(--disable-signal, disable signal support),
+	[], [enable_signal=yes])
+
 AC_PROG_LIBTOOL
 
 dnl   Uncomment "AC_DISABLE_SHARED" to make shared librraries not get
@@ -280,21 +318,21 @@
  	needsignal=yes
     fi
 fi
-AM_CONDITIONAL(SELECT_BACKEND, [test "x$haveselect" = "xyes"])
+AM_CONDITIONAL(SELECT_BACKEND, [test "$enable_select" != "no" && test "x$haveselect" = "xyes"])
 
 havepoll=no
 AC_CHECK_FUNCS(poll, [havepoll=yes], )
 if test "x$havepoll" = "xyes" ; then
 	needsignal=yes
 fi
-AM_CONDITIONAL(POLL_BACKEND, [test "x$havepoll" = "xyes"])
+AM_CONDITIONAL(POLL_BACKEND, [test "$enable_poll" != "no" && test "x$havepoll" = "xyes"])
 
 havedevpoll=no
 if test "x$ac_cv_header_sys_devpoll_h" = "xyes"; then
 	AC_DEFINE(HAVE_DEVPOLL, 1,
 		    [Define if /dev/poll is available])
 fi
-AM_CONDITIONAL(DEVPOLL_BACKEND, [test "x$ac_cv_header_sys_devpoll_h" = "xyes"])
+AM_CONDITIONAL(DEVPOLL_BACKEND, [test "$enable_devpoll" != "no" && test "x$ac_cv_header_sys_devpoll_h" = "xyes"])
 
 havekqueue=no
 if test "x$ac_cv_header_sys_event_h" = "xyes"; then
@@ -353,7 +391,7 @@
     ], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
 	fi
 fi
-AM_CONDITIONAL(KQUEUE_BACKEND, [test "x$havekqueue" = "xyes"])
+AM_CONDITIONAL(KQUEUE_BACKEND, [test "$enable_kqueue" != "no" && test "x$havekqueue" = "xyes"])
 
 haveepollsyscall=no
 haveepoll=no
@@ -396,7 +434,7 @@
     ], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
 	fi
 fi
-AM_CONDITIONAL(EPOLL_BACKEND, [test "x$haveepoll" = "xyes"])
+AM_CONDITIONAL(EPOLL_BACKEND, [text "$enable_epoll" != "no" && test "x$haveepoll" = "xyes"])
 
 haveeventports=no
 AC_CHECK_FUNCS(port_create, [haveeventports=yes], )
@@ -405,13 +443,13 @@
 		[Define if your system supports event ports])
 	needsignal=yes
 fi
-AM_CONDITIONAL(EVPORT_BACKEND, [test "x$haveeventports" = "xyes"])
+AM_CONDITIONAL(EVPORT_BACKEND, [test "$enable_evport" != "no" && test "x$haveeventports" = "xyes"])
 
 if test "x$bwin32" = "xtrue"; then
 	needsignal=yes
 fi
 
-AM_CONDITIONAL(SIGNAL_SUPPORT, [test "x$needsignal" = "xyes"])
+AM_CONDITIONAL(SIGNAL_SUPPORT, [test "$enable_signal" != "no" && test "x$needsignal" = "xyes"])
 
 AC_TYPE_PID_T
 AC_TYPE_SIZE_T
diff -r d85b9d4fe6f0 opal/event/sample/Makefile.am
--- a/opal/event/sample/Makefile.am	Fri Sep 03 12:07:11 2010 -0600
+++ b/opal/event/sample/Makefile.am	Tue Sep 07 12:31:23 2010 -0600
@@ -3,12 +3,23 @@
 LDADD = ../libevent.la
 AM_CFLAGS = -I$(top_srcdir) -I$(top_srcdir)/compat -I$(top_srcdir)/include -I../include
 
-noinst_PROGRAMS = event-test time-test signal-test dns-example hello-world
+noinst_PROGRAMS = event-test time-test hello-world
+
+if SIGNAL_SUPPORT
+noinst_PROGRAMS += signal-test
+endif
+if DNS
+noinst_PROGRAMS += dns-example
+endif
 
 event_test_sources = event-test.c
 time_test_sources = time-test.c
+if SIGNAL_SUPPORT
 signal_test_sources = signal-test.c
+endif
+if DNS
 dns_example_sources = dns-example.c
+endif
 hello_world_sources = hello-world.c
 
 if OPENSSL
diff -r d85b9d4fe6f0 opal/event/test/Makefile.am
--- a/opal/event/test/Makefile.am	Fri Sep 03 12:07:11 2010 -0600
+++ b/opal/event/test/Makefile.am	Tue Sep 07 12:31:23 2010 -0600
@@ -2,16 +2,15 @@
 
 AM_CFLAGS = -I$(top_srcdir) -I$(top_srcdir)/compat -I$(top_srcdir)/include -I../include
 
-EXTRA_DIST = regress.rpc regress.gen.h regress.gen.c test.sh
+EXTRA_DIST = test.sh
 
 noinst_PROGRAMS = test-init test-eof test-weof test-time regress \
-	bench bench_cascade bench_http bench_httpclient test-ratelim \
+	bench bench_cascade test-ratelim \
 	test-changelist
 noinst_HEADERS = tinytest.h tinytest_macros.h regress.h
 
 TESTS = $(top_srcdir)/test/test.sh
 
-BUILT_SOURCES = regress.gen.c regress.gen.h
 test_init_SOURCES = test-init.c
 test_init_LDADD = ../libevent_core.la
 test_eof_SOURCES = test-eof.c
@@ -25,9 +24,8 @@
 test_ratelim_SOURCES = test-ratelim.c
 test_ratelim_LDADD = ../libevent_core.la -lm
 
-regress_SOURCES = regress.c regress_buffer.c regress_http.c regress_dns.c \
-	regress_testutils.c regress_testutils.h \
-	regress_rpc.c regress.gen.c regress.gen.h regress_et.c \
+regress_SOURCES = regress.c regress_buffer.c \
+	regress_et.c \
 	regress_bufferevent.c regress_listener.c \
 	regress_util.c tinytest.c regress_main.c regress_minheap.c \
 	$(regress_pthread_SOURCES) $(regress_zlib_SOURCES)
@@ -56,13 +54,27 @@
 bench_LDADD = ../libevent.la
 bench_cascade_SOURCES = bench_cascade.c
 bench_cascade_LDADD = ../libevent.la
+
+if DNS
+regress_SOURCES += regress_dns.c regress_testutils.c regress_testutils.h
+endif
+
+if HTTP
 bench_http_SOURCES = bench_http.c
 bench_http_LDADD = ../libevent.la
 bench_httpclient_SOURCES = bench_httpclient.c
 bench_httpclient_LDADD = ../libevent_core.la
+regress_SOURCES += regress_http.c
+noinst_PROGRAMS += bench_http bench_httpclient
+endif
 
+if RPC
+BUILT_SOURCES = regress.gen.c regress.gen.h
+regress_SOURCES += regress_rpc.c regress.gen.c regress.gen.h
 regress.gen.c regress.gen.h: regress.rpc $(top_srcdir)/event_rpcgen.py
 	$(top_srcdir)/event_rpcgen.py $(srcdir)/regress.rpc || echo "No Python installed"
+EXTRA_DIST += regress.rpc regress.gen.h regress.gen.c
+endif
 
 DISTCLEANFILES = *~
 
diff -r d85b9d4fe6f0 opal/event/test/regress_main.c
--- a/opal/event/test/regress_main.c	Fri Sep 03 12:07:11 2010 -0600
+++ b/opal/event/test/regress_main.c	Tue Sep 07 12:31:23 2010 -0600
@@ -67,8 +67,10 @@
 #include <event2/util.h>
 #include <event2/event.h>
 #include <event2/event_compat.h>
+#if HAVE_DNS
 #include <event2/dns.h>
 #include <event2/dns_compat.h>
+#endif
 #include <event2/thread.h>
 
 #include "event2/event-config.h"
@@ -101,10 +103,12 @@
  */
 int in_legacy_test_wrapper = 0;
 
+#if HAVE_DNS
 static void dnslogcb(int w, const char *m)
 {
 	TT_BLATHER(("%s", m));
 }
+#endif
 
 /* creates a temporary file with the data in it */
 evutil_socket_t
@@ -214,13 +218,13 @@
 			return (void*)TT_SKIP;
 		}
 	}
-
+#if HAVE_DNS
 	if (testcase->flags & TT_NEED_DNS) {
 		evdns_set_log_fn(dnslogcb);
 		if (evdns_init())
 			return NULL; /* fast failure */ /*XXX asserts. */
 	}
-
+#endif
 	if (testcase->flags & TT_NO_LOGS)
 		event_set_log_callback(ignore_log_cb);
 
@@ -249,9 +253,11 @@
 			evutil_closesocket(data->pair[1]);
 	}
 
+#if HAVE_DNS
 	if (testcase->flags & TT_NEED_DNS) {
 		evdns_shutdown(0);
 	}
+#endif
 
 	if (testcase->flags & TT_NEED_BASE) {
 		if (data->base)
@@ -343,10 +349,16 @@
 	{ "signal/", signal_testcases },
 	{ "util/", util_testcases },
 	{ "bufferevent/", bufferevent_testcases },
+#if HAVE_HTTP
 	{ "http/", http_testcases },
+#endif
+#if HAVE_DNS
 	{ "dns/", dns_testcases },
+#endif
 	{ "evtag/", evtag_testcases },
+#if HAVE_RPC
 	{ "rpc/", rpc_testcases },
+#endif
 	{ "thread/", thread_testcases },
 	{ "listener/", listener_testcases },
 #ifdef WIN32
