diff --git a/Makefile.am b/Makefile.am
index 64752cde936c66ddc2db98027de326ce8caae67e..5757c4eeb62b61ec6fb1a25a13f1ee0b81b05b7d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -7,37 +7,38 @@
 # See the file COPYING for details.
 
 AUTOMAKE_OPTIONS = foreign 1.7
-lib_LTLIBRARIES = liboop-adns.la liboop-glib2.la liboop-glib.la liboop-tcl.la liboop-www.la liboop-rl.la liboop.la
+lib_LTLIBRARIES = liboop.la @LIBOOP_LIBS@
+EXTRA_LTLIBRARIES = liboop-adns.la liboop-glib2.la liboop-glib.la liboop-tcl.la liboop-www.la liboop-rl.la
 
-# versions updated as of 0.8
-liboop_la_LDFLAGS = -version-info 4:0:0 # version:revision:age
+# versions updated as of 1.0
+liboop_la_LDFLAGS = -version-info 4:1:0 # version:revision:age
 liboop_la_SOURCES = sys.c select.c signal.c alloc.c read.c read-fd.c read-mem.c
 
-liboop_adns_la_LDFLAGS = -version-info 2:0:0
+liboop_adns_la_LDFLAGS = -version-info 3:0:0 -rpath '$(libdir)'
 liboop_adns_la_LIBADD = $(ADNS_LIBS)
 liboop_adns_la_SOURCES = adns.c
 
-liboop_glib_la_LDFLAGS = -version-info 1:0:0
+liboop_glib_la_LDFLAGS = -version-info 1:0:1 -rpath '$(libdir)'
 liboop_glib_la_LIBADD = $(GLIB_LIBS)
 liboop_glib_la_CFLAGS = $(GLIB_INCLUDES)
 liboop_glib_la_SOURCES = glib.c
 
-liboop_glib2_la_LDFLAGS = -version-info 0:0:0
+liboop_glib2_la_LDFLAGS = -version-info 0:0:0 -rpath '$(libdir)'
 liboop_glib2_la_LIBADD = $(GLIB2_LIBS)
 liboop_glib2_la_CFLAGS = $(GLIB2_CFLAGS)
 liboop_glib2_la_SOURCES = glib.c
 
-liboop_tcl_la_LDFLAGS = -version-info 0:0:0
+liboop_tcl_la_LDFLAGS = -version-info 0:0:0 -rpath '$(libdir)'
 liboop_tcl_la_LIBADD = $(TCL_LIBS)
 liboop_tcl_la_CFLAGS = $(TCL_INCLUDES)
 liboop_tcl_la_SOURCES = tcl.c
 
-liboop_www_la_LDFLAGS = -version-info 0:0:0
+liboop_www_la_LDFLAGS = -version-info 0:0:0 -rpath '$(libdir)'
 liboop_www_la_LIBADD = $(WWW_LIBS)
 liboop_www_la_CFLAGS = $(WWW_INCLUDES)
 liboop_www_la_SOURCES = www.c
 
-liboop_rl_la_LDFLAGS = -version-info 0:0:0
+liboop_rl_la_LDFLAGS = -version-info 0:0:0 -rpath '$(libdir)'
 liboop_rl_la_LIBADD = $(READLINE_LIBS)
 liboop_rl_la_SOURCES = readline.c
 
diff --git a/configure.ac b/configure.ac
index fe624f28924d4d90397d5c0c1acfda4b3ee3c3cf..dc60aa2b9cdc93bd10e67e1c97614f68b930c71a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,16 +1,18 @@
 dnl Process this file with autoconf to produce a configure script.
 AC_INIT(INSTALL)
-AM_INIT_AUTOMAKE(liboop,0.9)
+AM_INIT_AUTOMAKE(liboop,1.0)
 AC_CANONICAL_HOST
-
-dnl Use libtool for shared libraries
 AM_PROG_LIBTOOL
-
-dnl Checks for programs.
 AC_PROG_CC
 AC_PROG_INSTALL
 PROG_LDCONFIG=:
 
+AC_ARG_WITH(adns, AC_HELP_STRING(--without-adns,disable ADNS adapter))
+AC_ARG_WITH(readline, AC_HELP_STRING(--without-readline,disable readline adapter))
+AC_ARG_WITH(glib, AC_HELP_STRING(--without-glib,disable GLib adapter))
+AC_ARG_WITH(tcl, AC_HELP_STRING(--without-tcl,disable Tcl/Tk adapter))
+AC_ARG_WITH(libwww, AC_HELP_STRING(--with-libwww,build libwww adapter))
+
 dnl System type checks.
 case "$host" in
   *-linux-*)
@@ -27,54 +29,74 @@ esac
 
 AC_CHECK_HEADERS(poll.h sys/select.h sys/socket.h string.h strings.h)
 
-AC_CHECK_LIB(adns,adns_init,[
-  ADNS_LIBS="-ladns"
-  AC_DEFINE(HAVE_ADNS)
-])
-
-AC_CHECK_LIB(readline,rl_callback_handler_install,[
-AC_CHECK_HEADER(readline/readline.h,[
-  READLINE_LIBS="-lreadline"
-  AC_DEFINE(HAVE_READLINE)
-])])
+if test xno != x$with_adns; then
+  AC_CHECK_LIB(adns,adns_init,[
+    LIBOOP_LIBS="liboop-adns.la $LIBOOP_LIBS"
+    ADNS_LIBS="-ladns"
+    AC_DEFINE(HAVE_ADNS)
+  ])
+fi
 
-save_libs="$LIBS"
-save_cppflags="$CPPFLAGS"
-AC_CHECK_PROG(PROG_GLIB_CONFIG,glib-config,glib-config)
-if test -n "$PROG_GLIB_CONFIG" ; then
-  GLIB_INCLUDES="`glib-config --cflags`"
-  GLIB_LIBS="`glib-config --libs`"
-  LIBS="$save_libs $GLIB_LIBS"
-  CPPFLAGS="$save_cppflags $GLIB_INCLUDES"
-  AC_CHECK_FUNC(g_main_set_poll_func,[
-  AC_CHECK_HEADER(glib.h,[AC_DEFINE(HAVE_GLIB)])])
+if test xno != x$with_readline; then
+  AC_CHECK_LIB(readline,rl_callback_handler_install,[
+  AC_CHECK_HEADER(readline/readline.h,[
+    LIBOOP_LIBS="liboop-rl.la $LIBOOP_LIBS"
+    READLINE_LIBS="-lreadline"
+    AC_DEFINE(HAVE_READLINE)
+  ])])
 fi
-LIBS="$save_libs"
-CPPFLAGS="$save_cppflags"
 
-PKG_CHECK_MODULES(GLIB2,glib-2.0 >= 2.0,AC_DEFINE(HAVE_GLIB),[:])
+if test xno != x$with_glib; then
+  save_libs="$LIBS"
+  save_cppflags="$CPPFLAGS"
+  AC_CHECK_PROG(PROG_GLIB_CONFIG,glib-config,glib-config)
+  if test -n "$PROG_GLIB_CONFIG" ; then
+    GLIB_INCLUDES="`glib-config --cflags`"
+    GLIB_LIBS="`glib-config --libs`"
+    LIBS="$save_libs $GLIB_LIBS"
+    CPPFLAGS="$save_cppflags $GLIB_INCLUDES"
+    AC_CHECK_FUNC(g_main_set_poll_func,[
+    AC_CHECK_HEADER(glib.h,[
+      LIBOOP_LIBS="liboop-glib.la $LIBOOP_LIBS"
+      AC_DEFINE(HAVE_GLIB)
+    ])])
+  fi
+  LIBS="$save_libs"
+  CPPFLAGS="$save_cppflags"
 
-for version in 8.4 8.3 8.2 8.1 8.0 ; do
-  CPPFLAGS="$save_cppflags -I/usr/include/tcl$version"
-  AC_CHECK_LIB(tcl$version,Tcl_Main,[
-  AC_CHECK_HEADER(tcl.h,[
-    AC_DEFINE(HAVE_TCL)
-    TCL_INCLUDES="-I/usr/include/tcl$version"
-    TCL_LIBS="-ltcl$version"
-    break
-  ])])
-done
-CPPFLAGS="$save_cppflags"
+  PKG_CHECK_MODULES(GLIB2,glib-2.0 >= 2.0,[
+    LIBOOP_LIBS="liboop-glib2.la $LIBOOP_LIBS"
+    AC_DEFINE(HAVE_GLIB)
+    ],[:])
+fi
 
-AC_CHECK_LIB(wwwcore,HTEvent_setRegisterCallback,[
-  AC_DEFINE(HAVE_WWW)
-  # This is just a little unpleasant.
-  WWW_LIBS=" \
-  -lwwwapp -lwwwcache -lwwwcore -lwwwdir -lwwwfile -lwwwftp -lwwwgopher \
-  -lwwwhtml -lwwwhttp -lwwwinit -lwwwmime -lwwwmux -lwwwnews -lwwwstream \
-  -lwwwtelnet -lwwwtrans -lwwwutils -lwwwzip -lmd5"
-  WWW_INCLUDES="-I/usr/include/w3c-libwww" # the libwww RPM puts headers here
-],,-lwwwutils)
+if test xno != x$with_tcl; then
+  for version in 8.4 8.3 8.2 8.1 8.0 ; do
+    CPPFLAGS="$save_cppflags -I/usr/include/tcl$version"
+    AC_CHECK_LIB(tcl$version,Tcl_Main,[
+    AC_CHECK_HEADER(tcl.h,[
+      LIBOOP_LIBS="liboop-tcl.la $LIBOOP_LIBS"
+      AC_DEFINE(HAVE_TCL)
+      TCL_INCLUDES="-I/usr/include/tcl$version"
+      TCL_LIBS="-ltcl$version"
+      break
+    ])])
+  done
+  CPPFLAGS="$save_cppflags"
+fi
+
+if test xyes = x$with_libwww; then
+  AC_CHECK_LIB(wwwcore,HTEvent_setRegisterCallback,[
+    LIBOOP_LIBS="liboop-www.la $LIBOOP_LIBS"
+    AC_DEFINE(HAVE_WWW)
+    # This is just a little unpleasant.
+    WWW_LIBS=" \
+    -lwwwapp -lwwwcache -lwwwcore -lwwwdir -lwwwfile -lwwwftp -lwwwgopher \
+    -lwwwhtml -lwwwhttp -lwwwinit -lwwwmime -lwwwmux -lwwwnews -lwwwstream \
+    -lwwwtelnet -lwwwtrans -lwwwutils -lwwwzip -lmd5"
+    WWW_INCLUDES="-I/usr/include/w3c-libwww" # the libwww RPM puts headers here
+  ],,-lwwwutils)
+fi
 
 if test -z "$no_wacky_libs" ; then
   AC_CHECK_LIB(resolv,res_query)
@@ -96,4 +118,5 @@ AC_SUBST(ADNS_LIBS)
 AC_SUBST(WWW_INCLUDES)
 AC_SUBST(WWW_LIBS)
 AC_SUBST(READLINE_LIBS)
+AC_SUBST(LIBOOP_LIBS)
 AC_OUTPUT(Makefile)
diff --git a/glib.c b/glib.c
index 6358405cf09a1cddf4d24ee45005f27c5df44d36..d2b785e86415da8eee78f5430a6d1f3b964777e0 100644
--- a/glib.c
+++ b/glib.c
@@ -4,8 +4,6 @@
    terms of the GNU Lesser General Public License, version 2.1 or later.
    See the file COPYING for details. */
 
-#ifdef HAVE_GLIB
-
 #include "glib.h"
 #include "oop-glib.h"
 #include "oop.h"
@@ -132,5 +130,3 @@ void oop_glib_delete(void) {
 	oop_select_delete(sel);
 	oop_sys_delete(sys);
 }
-
-#endif