diff --git a/GNUmakefile.in b/GNUmakefile.in
index f0e4cba89b0e22cbf05e0e3805046a9b16bf576f..e40a41bce5204e7426205be1c2582bf6e35de9ff 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -30,10 +30,12 @@ include Makeconf
 # Then things that depend on stuff we just did:
 #
 ifeq ($(STANDALONE_CLEARINGHOUSE),0)
-SUBDIRS = lib db assign www @optional_subdirs@ clientside ipod security sensors \
-		pxe tbsetup account tmcd utils backend tip capture ipod vis \
-		sensors os xmlrpc install/newnode_sshkeys mote tools/whol \
-		tools/svn wiki bugdb collab protogeni node_usage install
+SUBDIRS = \
+	clientside/lib \
+	db assign www @optional_subdirs@ clientside ipod security sensors \
+	pxe tbsetup account tmcd utils backend tip capture ipod vis \
+	sensors os xmlrpc install/newnode_sshkeys mote tools/whol \
+	tools/svn wiki bugdb collab protogeni node_usage install
 ifeq ($(ISMAINSITE),1)
 SUBDIRS += tools/rmanage
 endif
@@ -130,7 +132,6 @@ ops-install:
 	@$(MAKE) -C db control-install
 	@$(MAKE) -C tbsetup control-install
 	@$(MAKE) -C utils control-install
-	@$(MAKE) -C lib control-install
 ifeq ($(EVENTSYS),1)
 	@$(MAKE) -C event control-install
 endif
@@ -192,7 +193,6 @@ client-mkdirs:
 	-mkdir -p $(DESTDIR)$(CLIENT_MANDIR)
 
 client:
-	@$(MAKE) -C lib client
 	@$(MAKE) -C clientside client
 	@$(MAKE) -C os client
 ifneq ($(SYSTEM),CYGWIN_NT-5.1)
@@ -201,7 +201,6 @@ ifneq ($(SYSTEM),CYGWIN_NT-5.1)
 endif
 
 client-install: client client-mkdirs
-	@$(MAKE) -C lib client-install
 	@$(MAKE) -C clientside client-install
 	@$(MAKE) -C os client-install
 ifneq ($(SYSTEM),CYGWIN_NT-5.1)
diff --git a/Makeconf.in b/Makeconf.in
index c130617f15e53edab528ebb3488d39e0c8a60de9..5f8be2811683ae5e9b401603ed38ca7bf63c113d 100644
--- a/Makeconf.in
+++ b/Makeconf.in
@@ -96,3 +96,5 @@ MERGE_BUILD = @MERGE_BUILD@
 MERGE_BUILD_SANDBOX = @MERGE_BUILD_SANDBOX@
 
 EXP_VIS_SUPPORT    = @EXP_VIS_SUPPORT@
+TESTBED_LIBSRCDIR  = ${TESTBED_SRCDIR}/clientside/lib
+TESTBED_LIBOBJDIR  = ${OBJDIR}/clientside/lib
diff --git a/capture/GNUmakefile.in b/capture/GNUmakefile.in
index e7e00bf0e050ac48d2b277619d4c03688eb0f446..a8135f57913bfd5c0b7adc72987b5cf49f6920aa 100644
--- a/capture/GNUmakefile.in
+++ b/capture/GNUmakefile.in
@@ -1,6 +1,6 @@
 #
 # EMULAB-COPYRIGHT
-# Copyright (c) 2000-2008 University of Utah and the Flux Group.
+# Copyright (c) 2000-2011 University of Utah and the Flux Group.
 # All rights reserved.
 #
 
@@ -20,7 +20,7 @@ client: capture capquery caplog caplog.bin
 
 include $(TESTBED_SRCDIR)/GNUmakerules
 
-DBFLAGS	+= -I/usr/local/include -I$(TESTBED_SRCDIR)/lib/libtb
+DBFLAGS	+= -I/usr/local/include -I$(TESTBED_LIBSRCDIR)/libtb
 
 #
 # Define LOG_DROPS to record warnings in syslog whenever chars were dropped
@@ -60,7 +60,7 @@ capture-tty: capture.c capdecls.h
 
 capserver:	capserver.c capdecls.h
 	$(CC) $(CFLAGS) $(DBFLAGS) -o capserver $< \
-		${OBJDIR}/lib/libtb/libtb.a \
+		${TESTBED_LIBOBJDIR}/libtb/libtb.a \
 		-L/usr/local/lib/mysql -lmysqlclient
 
 #
diff --git a/clientside/GNUmakefile.in b/clientside/GNUmakefile.in
index 20d12be0184e1132d2f9b87914c4009f12b574cf..cb5846bbcbfa4a1e43e948a2db56c4f1cff0c469 100644
--- a/clientside/GNUmakefile.in
+++ b/clientside/GNUmakefile.in
@@ -11,16 +11,7 @@ SYSTEM	       := $(shell uname -s)
 
 include $(OBJDIR)/Makeconf
 
-SUBDIRS         =
-ifeq ($(WITH_EMULAB),0)
-#
-# lib is a common directory, and is added to the clientside tarball.
-# So not do not build it when building full emulab tree; already done.
-#
-SUBDIRS	       += lib
-endif
-# These must be after lib.
-SUBDIRS	       += event tools os sensors tmcc
+SUBDIRS         = lib event tools os sensors tmcc
 
 ifeq ($(WITH_EMULAB),1)
 all:	all-subdirs
diff --git a/clientside/Makeconf.in b/clientside/Makeconf.in
index 5649f3a3c966545054dd28e7ace795db4c398714..b816bdf9908a22a1d96ef7d165d8f03f1b50b26f 100644
--- a/clientside/Makeconf.in
+++ b/clientside/Makeconf.in
@@ -53,3 +53,5 @@ LOG_TESTBED	= @LOG_TESTBED@
 EVENTSYS	= @EVENTSYS@
 ELVIN_COMPAT    = @ELVIN_COMPAT@
 WITH_EMULAB     = @WITH_EMULAB@
+TESTBED_LIBSRCDIR  = ${TESTBED_SRCDIR}/lib
+TESTBED_LIBOBJDIR  = ${OBJDIR}/lib
diff --git a/clientside/configure b/clientside/configure
index 86b7f689d3a79a3b2c546c407423442f798515d5..976defa58119f581bec2dba088979833f115d003 100755
--- a/clientside/configure
+++ b/clientside/configure
@@ -4829,6 +4829,10 @@ done
 # END Python detection.
 
 outfiles="Makeconf GNUmakefile \
+	  lib/GNUmakefile \
+          lib/libtb/GNUmakefile \
+          lib/tmcd/GNUmakefile \
+          lib/event/GNUmakefile \
 	  event/GNUmakefile \
 	  event/program-agent/GNUmakefile \
 	  event/link-agent/GNUmakefile \
@@ -4873,21 +4877,6 @@ outfiles="Makeconf GNUmakefile \
 	  os/GNUmakefile os/syncd/GNUmakefile \
 	  os/dijkstra/GNUmakefile os/genhostsfile/GNUmakefile"
 
-#
-# When building as part of a full emulab build, a few things come
-# from the outer (upper?) build. Otherwise, we have to add them
-# to the files list.
-#
-if test $WITH_EMULAB -eq 0; then
-   outfiles="$outfiles lib/GNUmakefile \
-             lib/libtb/GNUmakefile \
-             lib/tmcd/GNUmakefile \
-             lib/event/GNUmakefile"
-else
-   ac_config_commands="$ac_config_commands lib"
-
-fi
-
 #
 # Do this for easy distclean.
 #
@@ -5333,7 +5322,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 # Files that config.status was made for.
 config_files="$ac_config_files"
 config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
 
 _ACEOF
 
@@ -5360,9 +5348,6 @@ $config_files
 Configuration headers:
 $config_headers
 
-Configuration commands:
-$config_commands
-
 Report bugs to <bug-autoconf@gnu.org>."
 
 _ACEOF
@@ -5486,7 +5471,6 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-    "lib") CONFIG_COMMANDS="$CONFIG_COMMANDS lib" ;;
     "$outfiles") CONFIG_FILES="$CONFIG_FILES $outfiles" ;;
 
   *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
@@ -5503,7 +5487,6 @@ done
 if $ac_need_defaults; then
   test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
   test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
@@ -5799,7 +5782,7 @@ $as_echo "$as_me: error: could not setup config headers machinery" >&2;}
 fi # test -n "$CONFIG_HEADERS"
 
 
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    "
 shift
 for ac_tag
 do
@@ -6100,16 +6083,9 @@ $as_echo "$as_me: error: could not create -" >&2;}
   fi
  ;;
 
-  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "lib":C) rm -f lib; ln -s ../lib . ;;
 
   esac
+
 done # for ac_tag
 
 
diff --git a/clientside/configure.in b/clientside/configure.in
index 09fc678446902f656681cf229f9c34437277a43e..63ce4f9048ede3c2f2f579280cdc3e0cd01e0738 100644
--- a/clientside/configure.in
+++ b/clientside/configure.in
@@ -155,6 +155,10 @@ AC_SUBST(PYTHON_INCLUDE)
 # END Python detection.
 
 outfiles="Makeconf GNUmakefile \
+	  lib/GNUmakefile \
+          lib/libtb/GNUmakefile \
+          lib/tmcd/GNUmakefile \
+          lib/event/GNUmakefile \
 	  event/GNUmakefile \
 	  event/program-agent/GNUmakefile \
 	  event/link-agent/GNUmakefile \
@@ -199,20 +203,6 @@ outfiles="Makeconf GNUmakefile \
 	  os/GNUmakefile os/syncd/GNUmakefile \
 	  os/dijkstra/GNUmakefile os/genhostsfile/GNUmakefile"
 
-#
-# When building as part of a full emulab build, a few things come
-# from the outer (upper?) build. Otherwise, we have to add them
-# to the files list.
-#
-if test $WITH_EMULAB -eq 0; then
-   outfiles="$outfiles lib/GNUmakefile \
-             lib/libtb/GNUmakefile \
-             lib/tmcd/GNUmakefile \
-             lib/event/GNUmakefile"
-else
-   AC_CONFIG_COMMANDS([lib], [rm -f lib; ln -s ../lib .])
-fi
-
 #
 # Do this for easy distclean.
 #
diff --git a/clientside/event/delay-agent/GNUmakefile.in b/clientside/event/delay-agent/GNUmakefile.in
index 3e5ec35c76b167f419dd3364503eec60e12572f8..e0e23036add887b473eb2fd90daf658f47598913 100644
--- a/clientside/event/delay-agent/GNUmakefile.in
+++ b/clientside/event/delay-agent/GNUmakefile.in
@@ -16,12 +16,12 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 
 #CFLAGS  += -DDEBUG
 CFLAGS	 += -O -g -Wall
-CFLAGS   += -I. -I${OBJDIR} -I$(TESTBED_SRCDIR)/lib/libtb
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event
+CFLAGS   += -I. -I$(TESTBED_LIBSRCDIR)/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event
 CFLAGS   += -I/usr/local/include
 
 LDFLAGS  += $(LDSTATIC)
-LDFLAGS  += -L${OBJDIR}/lib/libtb -L${OBJDIR}/lib/event
+LDFLAGS  += -L${TESTBED_LIBOBJDIR}/libtb -L${TESTBED_LIBOBJDIR}/event
 LIBS     += -levent -ltb -lcrypto
 LIBS     += -L/usr/local/lib -lpubsub -lm
 
@@ -30,7 +30,7 @@ OBJS	  = main.o callback.o
 delay-agent:	$(OBJS)
 	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
 
-$(OBJS):	main.h $(OBJDIR)/lib/event/libevent.a
+$(OBJS):	main.h $(TESTBED_LIBOBJDIR)/event/libevent.a
 
 install:
 boss-install:
diff --git a/clientside/event/link-agent/GNUmakefile.in b/clientside/event/link-agent/GNUmakefile.in
index b9fcf6204ebd4f6f61dc20fe0e09a03c50002bdb..7c7b515c52b054b8bbadb3a4fd141e4d20f13ae8 100644
--- a/clientside/event/link-agent/GNUmakefile.in
+++ b/clientside/event/link-agent/GNUmakefile.in
@@ -19,10 +19,10 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 CFLAGS   += -DDEBUG
 CFLAGS	 += -O -g -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 
-LDFLAGS  += -L${OBJDIR}/lib/event -L${OBJDIR}/lib/libtb
+LDFLAGS  += -L${TESTBED_LIBOBJDIR}/event -L${TESTBED_LIBOBJDIR}/libtb
 LIBS     += -levent -ltb -lcrypto
 LIBS     += -L/usr/local/lib -lpubsub -lm
 LDFLAGS  += $(LDSTATIC)
@@ -50,7 +50,8 @@ endif
 link-agent-debug:	link-agent.o
 	$(CC) $(LDFLAGS) -o $@ link-agent.o $(LIBS)
 
-$(PROGRAMS):	${OBJDIR}/lib/event/libevent.a ${OBJDIR}/lib/event/event.h
+$(PROGRAMS):	${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBSRCDIR}/event/event.h
 
 boss-install:
 
diff --git a/clientside/event/linktest/GNUmakefile.in b/clientside/event/linktest/GNUmakefile.in
index d036bf1c6ad5fb977eb27c20847332906c671b79..0eb37ceeccd51d8e2f3f973f32ef796e2be73f68 100644
--- a/clientside/event/linktest/GNUmakefile.in
+++ b/clientside/event/linktest/GNUmakefile.in
@@ -8,8 +8,8 @@ TESTBED_SRCDIR	= @top_srcdir@
 OBJDIR		= @top_builddir@
 SUBDIR		= $(subst $(TESTBED_SRCDIR)/,,$(SRCDIR))
 
-LIBTBDIR        = $(OBJDIR)/lib/libtb
-LIBEVENTDIR     = ${OBJDIR}/lib/event
+LIBTBDIR        = $(TESTBED_LIBOBJDIR)/libtb
+LIBEVENTDIR     = ${TESTBED_LIBOBJDIR}/event
 DAEMON	        = linktest
 LTEVENT		= ltevent
 SCRIPT		= linktest.pl
@@ -36,10 +36,10 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 CFLAGS   += -DDEBUG -DCLIENT_BINDIR='"$(CLIENT_BINDIR)"'
 CFLAGS	 += -O -g -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 
-LDFLAGS  += -L${OBJDIR}/lib/event -L${OBJDIR}/lib/libtb
+LDFLAGS  += -L${LIBEVENTDIR} -L${LIBTBDIR}
 LIBS     += -levent -lcrypto -lssl
 LIBS     += -L/usr/local/lib -lpubsub -lm
 LDFLAGS  += $(LDSTATIC)
@@ -87,9 +87,11 @@ $(LTEVENT)-debug: $(LTEVENT_OBJS) $(LIBTB_OBJS)
 version.c: linktest.c
 	echo >$@ "char build_info[] = \"Built `date +%d-%b-%Y` by `id -nu`@`hostname | sed 's/\..*//'`:`pwd`\";"
 
-$(DAEMON_OBJS): ${OBJDIR}/lib/event/libevent.a ${OBJDIR}/lib/event/event.h
+$(DAEMON_OBJS): ${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBSRCDIR}/event/event.h
 
-$(LTEVENT_OBJS): ${OBJDIR}/lib/event/libevent.a ${OBJDIR}/lib/event/event.h
+$(LTEVENT_OBJS): ${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBSRCDIR}/event/event.h
 
 # We install just enough to fire off the test from boss and wait. 
 boss-install: weblinktest $(SCRIPT_RUN) $(SCRIPT_PROXY) $(LTEVENT) \
diff --git a/clientside/event/program-agent/GNUmakefile.in b/clientside/event/program-agent/GNUmakefile.in
index 978edb178567b4610c31841b3f7715117afd3884..32d87319db5bcaf1f0a5d15ffe70eb617c89ccfd 100644
--- a/clientside/event/program-agent/GNUmakefile.in
+++ b/clientside/event/program-agent/GNUmakefile.in
@@ -20,12 +20,12 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 CFLAGS   += -DDEBUG
 CFLAGS	 += -O -g -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS	 += -I/usr/local/include
 CFLAGS	 += -DHAVE_PUBSUB
 CFLAGS   += -DCLIENT_BINDIR='"$(CLIENT_BINDIR)"'
 
-LDFLAGS  += -g -L${OBJDIR}/lib/event -L${OBJDIR}/lib/libtb
+LDFLAGS  += -g -L${TESTBED_LIBOBJDIR}/event -L${TESTBED_LIBOBJDIR}/libtb
 LIBS     += -levent -ltb -lcrypto
 LIBS	 += -L/usr/local/lib -lpubsub
 LDFLAGS  += $(LDSTATIC)
@@ -53,7 +53,8 @@ version.c: program-agent.c
 program-agent-debug: program-agent.o version.o
 	$(CC) $(LDFLAGS) -o $@ program-agent.o version.o $(LIBS)
 
-$(PROGRAMS):	${OBJDIR}/lib/event/libevent.a ${OBJDIR}/lib/event/event.h
+$(PROGRAMS):	${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBSRCDIR}/event/event.h
 
 boss-install:	$(INSTALL_DIR)/opsdir/sbin/program-agent
 	-mkdir -p $(INSTALL_DIR)/opsdir/man/man8
diff --git a/clientside/event/proxy/GNUmakefile.in b/clientside/event/proxy/GNUmakefile.in
index a362d645d4f779f9e89be1085aa8518b20d76bfe..4cf9a5e1b04d414ea5bae3f2df91f3efdfc4340b 100644
--- a/clientside/event/proxy/GNUmakefile.in
+++ b/clientside/event/proxy/GNUmakefile.in
@@ -17,8 +17,8 @@ all:	$(PROGRAMS)
 
 include $(TESTBED_SRCDIR)/GNUmakerules
 
-LIBTBDIR    = $(OBJDIR)/lib/libtb
-LIBEVENTDIR = $(OBJDIR)/lib/event
+LIBTBDIR    = $(TESTBED_LIBOBJDIR)/libtb
+LIBEVENTDIR = $(TESTBED_LIBOBJDIR)/event
 CPPC        = g++
 
 # Rules to make sure that some libraries we need from other directories get
@@ -32,22 +32,24 @@ $(LIBEVENTDIR)/%.a:
 CFLAGS   += -DDEBUG
 CFLAGS	 += -O2 -g -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 
 PFLAGS    = -pthread
 PFLAGS   += -DDEBUG
 PFLAGS	 += -O2 -g -Wall
 PFLAGS   += -I. -I${OBJDIR}
-PFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+PFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 PFLAGS   += -L/usr/local/lib -lpubsub_r -ltb -lm
 
-PLDFLAGS += -L$(OBJDIR)/lib -L$(OBJDIR)/lib/libtb -L$(OBJDIR)/lib/event
+PLDFLAGS += -L$(TESTBED_LIBOBJDIR)
+PLDFLAGS += -L$(TESTBED_LIBOBJDIR)/libtb -L$(TESTBED_LIBOBJDIR)/event
 PLIBS     = -levent_r -ltb -lcrypto
 PLIBS    += -L/usr/local/lib -lpubsub_r -ltb -lm
 PLDFLAGS += $(LDSTATIC)
 
-LDFLAGS  += -L$(OBJDIR)/lib -L$(OBJDIR)/lib/libtb -L$(OBJDIR)/lib/event
+LDFLAGS  += -L$(TESTBED_LIBOBJDIR)
+LDFLAGS  += -L$(TESTBED_LIBOBJDIR)/libtb -L$(TESTBED_LIBOBJDIR)/event
 LIBS      = -levent -ltb -lcrypto
 LIBS     += -L/usr/local/lib -lpubsub -ltb -lm
 LDFLAGS  += $(LDSTATIC)
@@ -87,13 +89,15 @@ evproxyplab.o: evproxyplab.cc
 	$(CPPC) $(CFLAGS)  -c $<
 
 evproxyplab-debug:    evproxyplab.o \
-		${OBJDIR}/lib/event/libevent.a ${OBJDIR}/lib/event/event.h
+		${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBOBJDIR}/event/event.h
 	$(CPPC) $(LDFLAGS) -o $@ evproxyplab.o $(LIBS)
 
 eventping-debug: eventping.o
 	$(CC) $(LDFLAGS) -o $@ eventping.o -pthread $(LIBS)
 
-$(PROGRAMS):	${OBJDIR}/lib/event/libevent.a ${OBJDIR}/lib/event/event.h
+$(PROGRAMS):	${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBSRCDIR}/event/event.h
 
 control-install:
 
diff --git a/clientside/event/tevc/GNUmakefile.in b/clientside/event/tevc/GNUmakefile.in
index b64f594cb36bcfbb6f35c89f6fc4d8e5c261b867..5264ada897bd40bccf91c719a07bfad1def3c2cb 100644
--- a/clientside/event/tevc/GNUmakefile.in
+++ b/clientside/event/tevc/GNUmakefile.in
@@ -17,8 +17,8 @@ all:	$(PROGRAMS)
 
 include $(TESTBED_SRCDIR)/GNUmakerules
 
-LIBTBDIR    = $(OBJDIR)/lib/libtb
-LIBEVENTDIR = $(OBJDIR)/lib/event
+LIBTBDIR    = $(TESTBED_LIBOBJDIR)/libtb
+LIBEVENTDIR = $(TESTBED_LIBOBJDIR)/event
 
 # Rules to make sure that some libraries we need from other directories get
 # built first
@@ -31,10 +31,11 @@ $(LIBEVENTDIR)/%.a:
 CFLAGS   += -DDEBUG
 CFLAGS	 += -O -g -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 
-LDFLAGS  += -L$(OBJDIR)/lib -L$(OBJDIR)/lib/libtb -L$(OBJDIR)/lib/event
+LDFLAGS  += -L$(TESTBED_LIBOBJDIR)
+LDFLAGS  += -L$(TESTBED_LIBOBJDIR)/libtb -L$(TESTBED_LIBOBJDIR)/event
 LIBS     += -levent -lcrypto
 LIBS     += -lm -L/usr/local/lib -lpubsub 
 LDFLAGS  += $(LDSTATIC)
diff --git a/clientside/event/trafgen/GNUmakefile.in b/clientside/event/trafgen/GNUmakefile.in
index a4b5094f763abf04b72d319140b5a84bab5c57c4..8296e1859b61300ec15dff22930b1a439446cab1 100644
--- a/clientside/event/trafgen/GNUmakefile.in
+++ b/clientside/event/trafgen/GNUmakefile.in
@@ -38,11 +38,11 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 CFLAGS   += -DDEBUG
 CFLAGS	 += -O -g #-Wall
 CFLAGS   += -I. -I$(TGSRCDIR) -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 CFLAGS	 += -DUSEEVENTS
 
-LDFLAGS  += -L${OBJDIR}/lib/event -L${OBJDIR}/lib/libtb
+LDFLAGS  += -L${TESTBED_LIBOBJDIR}/event -L${TESTBED_LIBOBJDIR}/libtb
 LIBS     += -levent -ltb -lcrypto
 # Expand the elvin-config list now so it can be filtered below.
 LIBS     += -L/usr/local/lib -lpubsub -lm
@@ -107,7 +107,8 @@ tg.o: tg.y lex.yy.c
 trafgen-debug:	$(OBJS)
 	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
 
-$(PROGRAMS):	${OBJDIR}/lib/event/libevent.a ../../lib/event/event.h
+$(PROGRAMS):	${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBSRCDIR}/event/event.h
 
 install:
 boss-install:
diff --git a/lib/GNUmakefile.in b/clientside/lib/GNUmakefile.in
similarity index 100%
rename from lib/GNUmakefile.in
rename to clientside/lib/GNUmakefile.in
diff --git a/lib/event/GNUmakefile.in b/clientside/lib/event/GNUmakefile.in
similarity index 100%
rename from lib/event/GNUmakefile.in
rename to clientside/lib/event/GNUmakefile.in
diff --git a/lib/event/README b/clientside/lib/event/README
similarity index 100%
rename from lib/event/README
rename to clientside/lib/event/README
diff --git a/lib/event/event.c b/clientside/lib/event/event.c
similarity index 100%
rename from lib/event/event.c
rename to clientside/lib/event/event.c
diff --git a/lib/event/event.h b/clientside/lib/event/event.h
similarity index 100%
rename from lib/event/event.h
rename to clientside/lib/event/event.h
diff --git a/lib/event/event.i b/clientside/lib/event/event.i
similarity index 100%
rename from lib/event/event.i
rename to clientside/lib/event/event.i
diff --git a/lib/event/event.pm b/clientside/lib/event/event.pm
similarity index 100%
rename from lib/event/event.pm
rename to clientside/lib/event/event.pm
diff --git a/lib/event/event.pm.tail b/clientside/lib/event/event.pm.tail
similarity index 100%
rename from lib/event/event.pm.tail
rename to clientside/lib/event/event.pm.tail
diff --git a/lib/event/event_wrap.c b/clientside/lib/event/event_wrap.c
similarity index 100%
rename from lib/event/event_wrap.c
rename to clientside/lib/event/event_wrap.c
diff --git a/lib/event/event_wrap_py.c b/clientside/lib/event/event_wrap_py.c
similarity index 100%
rename from lib/event/event_wrap_py.c
rename to clientside/lib/event/event_wrap_py.c
diff --git a/lib/event/perlvers.pl b/clientside/lib/event/perlvers.pl
similarity index 100%
rename from lib/event/perlvers.pl
rename to clientside/lib/event/perlvers.pl
diff --git a/lib/event/tbevent.py b/clientside/lib/event/tbevent.py
similarity index 100%
rename from lib/event/tbevent.py
rename to clientside/lib/event/tbevent.py
diff --git a/lib/event/tbevent.py.tail b/clientside/lib/event/tbevent.py.tail
similarity index 100%
rename from lib/event/tbevent.py.tail
rename to clientside/lib/event/tbevent.py.tail
diff --git a/lib/event/util.c b/clientside/lib/event/util.c
similarity index 100%
rename from lib/event/util.c
rename to clientside/lib/event/util.c
diff --git a/lib/libtb/GNUmakefile.in b/clientside/lib/libtb/GNUmakefile.in
similarity index 100%
rename from lib/libtb/GNUmakefile.in
rename to clientside/lib/libtb/GNUmakefile.in
diff --git a/lib/libtb/be_user.c b/clientside/lib/libtb/be_user.c
similarity index 100%
rename from lib/libtb/be_user.c
rename to clientside/lib/libtb/be_user.c
diff --git a/lib/libtb/be_user.h b/clientside/lib/libtb/be_user.h
similarity index 100%
rename from lib/libtb/be_user.h
rename to clientside/lib/libtb/be_user.h
diff --git a/lib/libtb/log.c b/clientside/lib/libtb/log.c
similarity index 100%
rename from lib/libtb/log.c
rename to clientside/lib/libtb/log.c
diff --git a/lib/libtb/log.h b/clientside/lib/libtb/log.h
similarity index 100%
rename from lib/libtb/log.h
rename to clientside/lib/libtb/log.h
diff --git a/lib/libtb/popenf.c b/clientside/lib/libtb/popenf.c
similarity index 100%
rename from lib/libtb/popenf.c
rename to clientside/lib/libtb/popenf.c
diff --git a/lib/libtb/popenf.h b/clientside/lib/libtb/popenf.h
similarity index 100%
rename from lib/libtb/popenf.h
rename to clientside/lib/libtb/popenf.h
diff --git a/lib/libtb/systemf.c b/clientside/lib/libtb/systemf.c
similarity index 100%
rename from lib/libtb/systemf.c
rename to clientside/lib/libtb/systemf.c
diff --git a/lib/libtb/systemf.h b/clientside/lib/libtb/systemf.h
similarity index 100%
rename from lib/libtb/systemf.h
rename to clientside/lib/libtb/systemf.h
diff --git a/lib/libtb/tbdb.c b/clientside/lib/libtb/tbdb.c
similarity index 100%
rename from lib/libtb/tbdb.c
rename to clientside/lib/libtb/tbdb.c
diff --git a/lib/libtb/tbdb.h b/clientside/lib/libtb/tbdb.h
similarity index 100%
rename from lib/libtb/tbdb.h
rename to clientside/lib/libtb/tbdb.h
diff --git a/lib/libtb/tbdefs.c b/clientside/lib/libtb/tbdefs.c
similarity index 100%
rename from lib/libtb/tbdefs.c
rename to clientside/lib/libtb/tbdefs.c
diff --git a/lib/libtb/tbdefs.h b/clientside/lib/libtb/tbdefs.h
similarity index 100%
rename from lib/libtb/tbdefs.h
rename to clientside/lib/libtb/tbdefs.h
diff --git a/lib/libtb/tmcc.c b/clientside/lib/libtb/tmcc.c
similarity index 100%
rename from lib/libtb/tmcc.c
rename to clientside/lib/libtb/tmcc.c
diff --git a/lib/libtb/tmcc.h b/clientside/lib/libtb/tmcc.h
similarity index 100%
rename from lib/libtb/tmcc.h
rename to clientside/lib/libtb/tmcc.h
diff --git a/lib/tmcd/GNUmakefile.in b/clientside/lib/tmcd/GNUmakefile.in
similarity index 96%
rename from lib/tmcd/GNUmakefile.in
rename to clientside/lib/tmcd/GNUmakefile.in
index 7eceef28d676d91b94f8d59a34a1dc5e935fa64f..8b571b38edacddc8583410c501ae03dde7c7e9b6 100644
--- a/lib/tmcd/GNUmakefile.in
+++ b/clientside/lib/tmcd/GNUmakefile.in
@@ -1,4 +1,3 @@
-
 #
 # EMULAB-COPYRIGHT
 # Copyright (c) 2000-2011 University of Utah and the Flux Group.
@@ -19,7 +18,7 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 
 CFLAGS	+= -O -g -Wall -DUDP \
 		-I${OBJDIR} -I/usr/local/include \
-		-I${TESTBED_SRCDIR}/lib/libtb \
+		-I${TESTBED_LIBSRCDIR}/libtb \
 		-L/usr/local/lib
 LDFLAGS += $(LDSTATIC)
 
diff --git a/lib/tmcd/ssl.c b/clientside/lib/tmcd/ssl.c
similarity index 100%
rename from lib/tmcd/ssl.c
rename to clientside/lib/tmcd/ssl.c
diff --git a/lib/tmcd/ssl.h b/clientside/lib/tmcd/ssl.h
similarity index 100%
rename from lib/tmcd/ssl.h
rename to clientside/lib/tmcd/ssl.h
diff --git a/lib/tmcd/tmcd.h b/clientside/lib/tmcd/tmcd.h
similarity index 100%
rename from lib/tmcd/tmcd.h
rename to clientside/lib/tmcd/tmcd.h
diff --git a/lib/tmcd/tpm.c b/clientside/lib/tmcd/tpm.c
similarity index 100%
rename from lib/tmcd/tpm.c
rename to clientside/lib/tmcd/tpm.c
diff --git a/lib/tmcd/tpm.h b/clientside/lib/tmcd/tpm.h
similarity index 100%
rename from lib/tmcd/tpm.h
rename to clientside/lib/tmcd/tpm.h
diff --git a/clientside/os/genhostsfile/GNUmakefile.in b/clientside/os/genhostsfile/GNUmakefile.in
index 6a4d1519ac0f64bc071acf8d375b0d1b429e06bd..51ea15b0db618539143cae29ec4ff7bf38293668 100644
--- a/clientside/os/genhostsfile/GNUmakefile.in
+++ b/clientside/os/genhostsfile/GNUmakefile.in
@@ -10,8 +10,8 @@ SUBDIR		= $(subst $(TESTBED_SRCDIR)/,,$(SRCDIR))
 
 include $(OBJDIR)/Makeconf
 
-CFLAGS	= -Wall -O2 -g $(LDSTATIC) -I${OBJDIR} -I${TESTBED_SRCDIR}/lib/libtb
-LIBS    = ${OBJDIR}/lib/libtb/libtb.a
+CFLAGS	= -Wall -O2 -g $(LDSTATIC) -I${OBJDIR} -I${TESTBED_LIBSRCDIR}/libtb
+LIBS    = ${TESTBED_LIBOBJDIR}/libtb/libtb.a
 
 all:	genhostsfile genfromdb genfromtopo
 
diff --git a/clientside/os/syncd/GNUmakefile.in b/clientside/os/syncd/GNUmakefile.in
index 25b632a0bc6e340489bbd6d130d4a0119606ac0a..4d7e3aea07d40bdbda638b1b078d1657080fbc38 100644
--- a/clientside/os/syncd/GNUmakefile.in
+++ b/clientside/os/syncd/GNUmakefile.in
@@ -10,9 +10,8 @@ SUBDIR		= $(subst $(TESTBED_SRCDIR)/,,$(SRCDIR))
 
 include $(OBJDIR)/Makeconf
 
-CFLAGS	= -Wall -O2 -g \
-		  -I${OBJDIR} -I${TESTBED_SRCDIR}/lib/libtb
-LIBS	= ${OBJDIR}/lib/libtb/libtb.a
+CFLAGS	= -Wall -O2 -g -I${OBJDIR} -I${TESTBED_LIBSRCDIR}/libtb
+LIBS	= ${TESTBED_LIBOBJDIR}/libtb/libtb.a
 LDFLAGS =
 LDFLAGS  += $(LDSTATIC)
 
diff --git a/clientside/sensors/slothd/GNUmakefile.in b/clientside/sensors/slothd/GNUmakefile.in
index 16a8dc8ab76e14e973b3aba348ee3b803910656e..b0465febda88e678e7bc3c6621bfedd9ac5ec9a1 100644
--- a/clientside/sensors/slothd/GNUmakefile.in
+++ b/clientside/sensors/slothd/GNUmakefile.in
@@ -9,7 +9,7 @@ OBJDIR		= @top_builddir@
 SUBDIR		= $(subst $(TESTBED_SRCDIR)/,,$(SRCDIR))
 SYSTEM	       := $(shell uname -s)
 SLOTHD_DIR	= unknownclient
-TBLIB		= $(OBJDIR)/lib/libtb/libtb.a
+TBLIB		= $(TESTBED_LIBOBJDIR)/libtb/libtb.a
 
 SBIN_SCRIPTS    = sdisrunning sddeploy
 SDPROGS		= sdcollectd$(EXE) slothd$(EXE)
@@ -19,10 +19,10 @@ include $(OBJDIR)/Makeconf
 CC?=gcc
 ## For debug compilation
 ##CFLAGS+= -g
-CFLAGS+= -Wall -I${OBJDIR} -I/usr/local/include -I$(TESTBED_SRCDIR)/lib/libtb \
+CFLAGS+= -Wall -I${OBJDIR} -I/usr/local/include -I$(TESTBED_LIBSRCDIR)/libtb \
 		-DCLIENT_BINDIR='"$(CLIENT_BINDIR)"' \
 		-DLOG_TESTBED=$(LOG_TESTBED)
-LDFLAGS+= $(LDSTATIC) -L${OBJDIR}/lib/libtb -L/usr/local/lib/mysql
+LDFLAGS+= $(LDSTATIC) -L${TESTBED_LIBOBJDIR}/libtb -L/usr/local/lib/mysql
 SDLIBS+= -ltb -lmysqlclient
 LIBS= $(MLIBS)
 CP= cp -pf
diff --git a/clientside/tmcc/GNUmakefile.in b/clientside/tmcc/GNUmakefile.in
index 936a2157a983ee38087a6edf600742de58439b2d..8e0f9444486cde43ab9e565424501ca7705d8010 100644
--- a/clientside/tmcc/GNUmakefile.in
+++ b/clientside/tmcc/GNUmakefile.in
@@ -16,17 +16,18 @@ fullclient: tmcc
 client: tmcc-nossl findif dostype
 
 # For VPATH.
-MOSTLY_SRCDIRS = ${TESTBED_SRCDIR}/lib/libtb \
-		 ${TESTBED_SRCDIR}/lib/tmcd
+MOSTLY_SRCDIRS = ${TESTBED_LIBSRCDIR}/libtb \
+		 ${TESTBED_LIBSRCDIR}/tmcd
 
 include $(TESTBED_SRCDIR)/GNUmakerules
 
 CFLAGS	+= -O -g -Wall -DUDP \
 		-I${OBJDIR} -I/usr/local/include \
-		-I${TESTBED_SRCDIR}/lib/libtb \
-		-I${TESTBED_SRCDIR}/lib/tmcd \
+		-I${TESTBED_LIBSRCDIR}/libtb \
+		-I${TESTBED_LIBSRCDIR}/tmcd \
 		-L/usr/local/lib
-TMLIBS	 = ${OBJDIR}/lib/tmcd/libtmcc.a ${OBJDIR}/lib/libtb/libtb.a
+TMLIBS	 = ${TESTBED_LIBOBJDIR}/tmcd/libtmcc.a
+TMLIBS  += ${TESTBED_LIBOBJDIR}/libtb/libtb.a
 LDFLAGS += $(LDSTATIC)
 
 #
@@ -151,10 +152,10 @@ elabinelabfiles:
 # Here so that the event system libraries, and libraries they depend upon,
 # can get made.
 #
-${OBJDIR}/lib/tmcd/%:
-	cd ${OBJDIR}/lib/tmcd && gmake $<
-${OBJDIR}/lib/libtb/%:
-	cd ${OBJDIR}/lib/tbdb && gmake $<
+${TESTBED_LIBOBJDIR}/tmcd/%:
+	cd ${TESTBED_LIBOBJDIR}/tmcd && gmake $<
+${TESTBED_LIBOBJDIR}/libtb/%:
+	cd ${TESTBED_LIBOBJDIR}/tbdb && gmake $<
 
 clean:	subdir-clean
 	rm -f *.o core tmcd tmcc tmcc-nossl findif dostype *-debug
diff --git a/clientside/tools/pcapper/GNUmakefile.in b/clientside/tools/pcapper/GNUmakefile.in
index 2e51e10f85d4fd1a57649d9ce19ed4b2a08279b5..0efa59b5ae519c36464161c087c6e3f0ecc71db4 100644
--- a/clientside/tools/pcapper/GNUmakefile.in
+++ b/clientside/tools/pcapper/GNUmakefile.in
@@ -37,12 +37,13 @@ endif
 
 ELVINFLAGS    = -I/usr/local/include
 ELVINLIBS     = -L/usr/local/lib -lpubsub -lm
-EVENTFLAGS    = -DEVENTSYS -I$(TESTBED_SRCDIR)/lib/event $(ELVINFLAGS)
-EVENTOBJS     = $(OBJDIR)/lib/event/event.o $(OBJDIR)/lib/event/util.o
+EVENTFLAGS    = -DEVENTSYS -I$(TESTBED_LIBSRCDIR)/event $(ELVINFLAGS)
+EVENTOBJS     = $(TESTBED_LIBOBJDIR)/event/event.o \
+		$(TESTBED_LIBOBJDIR)/event/util.o
 EVENTLIBS     = $(ELVINLIBS) -lcrypto
 
-TBCFLAGS      = $(EVENTFLAGS) -I$(TESTBED_SRCDIR)/lib/libtb
-TBLIBS        = $(EVENTOBJS) $(OBJDIR)/lib/libtb/libtb.a $(EVENTLIBS)
+TBCFLAGS      = $(EVENTFLAGS) -I$(TESTBED_LIBSRCDIR)/libtb
+TBLIBS        = $(EVENTOBJS) $(TESTBED_LIBOBJDIR)/libtb/libtb.a $(EVENTLIBS)
 
 PCAPLIBS=-lpcap
 
diff --git a/configure b/configure
index 496ff2cb3f09821047b5584ab2821e8c994fa1f5..7a6599d2d302a8d0ddb908fdaa59548cb2c6d270 100755
--- a/configure
+++ b/configure
@@ -5616,7 +5616,7 @@ if test "$enable_events" = "no"; then
 	eventfiles="";
         EVENTSYS=0;
 else
-	eventfiles="event/GNUmakefile lib/event/GNUmakefile \
+	eventfiles="event/GNUmakefile clientside/lib/event/GNUmakefile \
 		    event/etc/elvind-boss.conf event/etc/elvind-ops.conf \
 		    event/etc/elvind-inetd.conf event/etc/GNUmakefile\
 		    event/sched/GNUmakefile \
@@ -7159,7 +7159,6 @@ outfiles="$outfiles Makeconf GNUmakefile \
 	db/idletimes db/idlemail db/xmlconvert \
 	db/libdb.py db/elabinelab_bossinit \
 	ipod/GNUmakefile \
-	lib/GNUmakefile lib/libtb/GNUmakefile lib/tmcd/GNUmakefile \
 	os/GNUmakefile os/split-image.sh os/imagezip/GNUmakefile \
 	os/imagezip/ffs/GNUmakefile os/imagezip/extfs/GNUmakefile os/imagezip/ext4fs/GNUmakefile \
 	os/imagezip/hashmap/GNUmakefile \
@@ -7345,6 +7344,8 @@ outfiles="$outfiles Makeconf GNUmakefile \
 # lists here and in clientside.
 #
 outfiles="$outfiles clientside/GNUmakefile \
+ clientside/lib/GNUmakefile clientside/lib/libtb/GNUmakefile \
+ clientside/lib/tmcd/GNUmakefile \
  clientside/GNUmakefile clientside/event/GNUmakefile \
  clientside/event/program-agent/GNUmakefile \
  clientside/tools/GNUmakefile clientside/tools/pcapper/GNUmakefile \
diff --git a/configure.in b/configure.in
index f0aab241fec6fba3499e1796ebb3ad606e1adc5c..2a13aa7da145ed534d54dd48203809ab68800e88 100755
--- a/configure.in
+++ b/configure.in
@@ -703,7 +703,7 @@ if test "$enable_events" = "no"; then
 	eventfiles="";
         EVENTSYS=0;
 else
-	eventfiles="event/GNUmakefile lib/event/GNUmakefile \
+	eventfiles="event/GNUmakefile clientside/lib/event/GNUmakefile \
 		    event/etc/elvind-boss.conf event/etc/elvind-ops.conf \
 		    event/etc/elvind-inetd.conf event/etc/GNUmakefile\
 		    event/sched/GNUmakefile \
@@ -891,7 +891,6 @@ outfiles="$outfiles Makeconf GNUmakefile \
 	db/idletimes db/idlemail db/xmlconvert \
 	db/libdb.py db/elabinelab_bossinit \
 	ipod/GNUmakefile \
-	lib/GNUmakefile lib/libtb/GNUmakefile lib/tmcd/GNUmakefile \
 	os/GNUmakefile os/split-image.sh os/imagezip/GNUmakefile \
 	os/imagezip/ffs/GNUmakefile os/imagezip/extfs/GNUmakefile os/imagezip/ext4fs/GNUmakefile \
 	os/imagezip/hashmap/GNUmakefile \
@@ -1077,6 +1076,8 @@ outfiles="$outfiles Makeconf GNUmakefile \
 # lists here and in clientside.
 #
 outfiles="$outfiles clientside/GNUmakefile \
+ clientside/lib/GNUmakefile clientside/lib/libtb/GNUmakefile \
+ clientside/lib/tmcd/GNUmakefile \
  clientside/GNUmakefile clientside/event/GNUmakefile \
  clientside/event/program-agent/GNUmakefile \
  clientside/tools/GNUmakefile clientside/tools/pcapper/GNUmakefile \
diff --git a/event/example/GNUmakefile.in b/event/example/GNUmakefile.in
index 1c720aa9a1acbe26b14d31f8803271c5570f6147..bc824843e15a8271cf4d8546bc1746332f0064bb 100644
--- a/event/example/GNUmakefile.in
+++ b/event/example/GNUmakefile.in
@@ -21,10 +21,11 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 CFLAGS   += -DDEBUG
 CFLAGS	 += -O -g -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 
-LDFLAGS  += $(LDSTATIC) -L${OBJDIR}/lib/event -L${OBJDIR}/lib/libtb
+LDFLAGS  += $(LDSTATIC)
+LDFLAGS  += -L${TESTBED_LIBOBJDIR}/event -L${TESTBED_LIBOBJDIR}/libtb
 LIBS     += -levent -ltb -lcrypto
 LIBS     +=  -L/usr/local/lib -lpubsub -lm
 ifeq ($(SYSTEM),Linux)
@@ -40,7 +41,8 @@ tbsend:		tbsend.o
 dumpevsubs:	dumpevsubs.o
 	$(CC) $(LDFLAGS) -o $@ dumpevsubs.o $(LIBS)
 
-$(PROGRAMS):	${OBJDIR}/lib/event/libevent.a ../../lib/event/event.h
+$(PROGRAMS):	${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBSRCDIR}/event/event.h
 
 install:	$(addprefix $(INSTALL_SBINDIR)/, eventdebug.pl)
 
diff --git a/event/new_sched/GNUmakefile.in b/event/new_sched/GNUmakefile.in
index d175af30af943f9d0fa471d9c0b78160c1cf306d..0855e1722f94582f9d2cd711b6deea8f07d6dbe0 100644
--- a/event/new_sched/GNUmakefile.in
+++ b/event/new_sched/GNUmakefile.in
@@ -20,18 +20,18 @@ CFLAGS   += -DSBINDIR='"$(INSTALL_SBINDIR)"'
 #CFLAGS  += -DDEBUG
 CFLAGS	 += -O -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 
 LDFLAGS  += -pthread
-LDFLAGS  += -L${OBJDIR}/lib/event -L${OBJDIR}/lib/libtb
+LDFLAGS  += -L${TESTBED_LIBOBJDIR}/event -L${TESTBED_LIBOBJDIR}/libtb
 LDFLAGS  += $(LDSTATIC)
 DBLIBS    = -L/usr/local/lib/mysql -lmysqlclient -lz
 LIBS     += -levent_r -ltb -lz
 
 XMLRPCINC = `xmlrpc-c-config c++2 client --cflags`
 CXXFLAGS += -pthread -O $(XMLRPCINC) -I$(OBJDIR)
-CXXFLAGS +=  -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CXXFLAGS +=  -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 XMLRPCLIBS = `xmlrpc-c-config c++2 client --libs`
 
 #
@@ -62,13 +62,13 @@ OBJS = \
 	timeline-agent.o \
 	version.o
 
-event-sched_rrpc: $(OBJS) event-sched.h ${OBJDIR}/lib/event/libevent.a
+event-sched_rrpc: $(OBJS) event-sched.h ${TESTBED_LIBOBJDIR}/event/libevent.a
 	$(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(XMLRPCLIBS) $(LIBS)
 
 DEPS = \
 	console-agent.h error-record.h event-sched.h group-agent.h listNode.h \
 	local-agent.h node-agent.h rpc.h simulator-agent.h timeline-agent.h \
-	../../lib/event/event.h
+	${TESTBED_LIBSRCDIR}/event/event.h
 
 emulab_proxy.o:		emulab_proxy.cc $(DEPS)
 queue.o:		queue.c $(DEPS)
diff --git a/event/nsetrafgen/GNUmakefile.in b/event/nsetrafgen/GNUmakefile.in
index 0e788821b917c94f9a947643fdf40ffba156844e..c3c85ba8c82f30579a4d8779c652060b50a18609 100644
--- a/event/nsetrafgen/GNUmakefile.in
+++ b/event/nsetrafgen/GNUmakefile.in
@@ -35,9 +35,9 @@ buildnse:
 	ln -sf $(SRCDIR)/tbnexthop.h .
 	ln -sf $(SRCDIR)/tbnexthop.cc .
 	ln -sf $(SRCDIR)/ip_fw.h .
-	ln -sf $(SRCDIR)/../../lib/libtb/log.h .
-	ln -sf $(SRCDIR)/../../lib/libtb/tbdefs.h .
-	ln -sf $(SRCDIR)/../../lib/event/event.h .
+	ln -sf $(TESTBED_LIBSRCDIR)/libtb/log.h .
+	ln -sf $(TESTBED_LIBSRCDIR)/libtb/tbdefs.h .
+	ln -sf $(TESTBED_LIBSRCDIR)/event/event.h .
 	$(SRCDIR)/nse-install $(SRCDIR)/nse.patch
 
 makepatch:
diff --git a/event/proxy/GNUmakefile.in b/event/proxy/GNUmakefile.in
index 0bdc9ab2b1c429b1a66c19daac5b83e2dc54f517..35955d5d4c429300d092962e6ec01b9089227680 100644
--- a/event/proxy/GNUmakefile.in
+++ b/event/proxy/GNUmakefile.in
@@ -20,8 +20,8 @@ all:	$(PROGRAMS)
 
 include $(TESTBED_SRCDIR)/GNUmakerules
 
-LIBTBDIR    = $(OBJDIR)/lib/libtb
-LIBEVENTDIR = $(OBJDIR)/lib/event
+LIBTBDIR    = $(TESTBED_LIBOBJDIR)/libtb
+LIBEVENTDIR = $(TESTBED_LIBOBJDIR)/event
 CPPC        = g++
 
 # Rules to make sure that some libraries we need from other directories get
@@ -35,22 +35,24 @@ $(LIBEVENTDIR)/%.a:
 CFLAGS   += -DDEBUG
 CFLAGS	 += -O2 -g -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 
 PFLAGS    = -pthread
 PFLAGS   += -DDEBUG
 PFLAGS	 += -O2 -g -Wall
 PFLAGS   += -I. -I${OBJDIR}
-PFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+PFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 PFLAGS   += -L/usr/local/lib -lpubsub_r -ltb -lm
 
-PLDFLAGS += -L$(OBJDIR)/lib -L$(OBJDIR)/lib/libtb -L$(OBJDIR)/lib/event
+PLDFLAGS += -L$(TESTBED_LIBOBJDIR)
+PLDFLAGS += -L$(TESTBED_LIBOBJDIR)/libtb -L$(TESTBED_LIBOBJDIR)/event
 PLIBS     = -levent_r -ltb -lcrypto
 PLIBS    += -L/usr/local/lib -lpubsub_r -ltb -lm
 PLDFLAGS += $(LDSTATIC)
 
-LDFLAGS  += -L$(OBJDIR)/lib -L$(OBJDIR)/lib/libtb -L$(OBJDIR)/lib/event
+LDFLAGS  += -L$(TESTBED_LIBOBJDIR)
+LDFLAGS  += -L$(TESTBED_LIBOBJDIR)/libtb -L$(TESTBED_LIBOBJDIR)/event
 LIBS      = -levent -ltb -lcrypto
 LIBS     += -L/usr/local/lib -lpubsub -ltb -lm
 LDFLAGS  += $(LDSTATIC)
@@ -85,7 +87,8 @@ version0_gateway:    version0_gateway.c
 eventping-debug: eventping.o
 	$(CC) $(LDFLAGS) -o $@ eventping.o -pthread $(LIBS)
 
-$(PROGRAMS):	${OBJDIR}/lib/event/libevent.a ${OBJDIR}/lib/event/event.h
+$(PROGRAMS):	${TESTBED_LIBOBJDIR}/event/libevent.a \
+		${TESTBED_LIBSRCDIR}/event/event.h
 
 control-install:	$(INSTALL_SBINDIR)/version0_gateway
 
diff --git a/event/sched/GNUmakefile.in b/event/sched/GNUmakefile.in
index 6c365c9d4a3962fc3d12fe6395c26d17175db149..28c629a19981f1b3d4341cdb1a955e2a6ca463e1 100644
--- a/event/sched/GNUmakefile.in
+++ b/event/sched/GNUmakefile.in
@@ -20,18 +20,18 @@ CFLAGS   += -DSBINDIR='"$(INSTALL_SBINDIR)"'
 #CFLAGS  += -DDEBUG
 CFLAGS	 += -O -Wall
 CFLAGS   += -I. -I${OBJDIR}
-CFLAGS   += -I$(TESTBED_SRCDIR)/lib/event -I$(TESTBED_SRCDIR)/lib/libtb
+CFLAGS   += -I$(TESTBED_LIBSRCDIR)/event -I$(TESTBED_LIBSRCDIR)/libtb
 CFLAGS   += -I/usr/local/include
 
 LDFLAGS  += -pthread
-LDFLAGS  += -L${OBJDIR}/lib/event -L${OBJDIR}/lib/libtb
+LDFLAGS  += -L${TESTBED_LIBOBJDIR}/event -L${TESTBED_LIBOBJDIR}/libtb
 LDFLAGS  += $(LDSTATIC)
 DBLIBS    = -L/usr/local/lib/mysql -lmysqlclient -lz
 LIBS     += -levent_r -ltb -lz
 
 ULXRINC   = -I/usr/local/include -I/usr/local/include/ulxmlrpcpp
-CXXFLAGS += -pthread -O $(ULXRINC) -I$(OBJDIR) -I$(TESTBED_SRCDIR)/lib/libtb
-CXXFLAGS += -I$(TESTBED_SRCDIR)/lib/event
+CXXFLAGS += -pthread -O $(ULXRINC) -I$(OBJDIR) -I$(TESTBED_LIBSRCDIR)/libtb
+CXXFLAGS += -I$(TESTBED_LIBSRCDIR)/event
 ULXRLIBS  = -L/usr/local/lib  -lulsshxmlrpcpp -lulxmlrpcpp -lexpat
 
 #
@@ -61,13 +61,13 @@ OBJS = \
 	timeline-agent.o \
 	version.o
 
-event-sched_rrpc: $(OBJS) event-sched.h ../../lib/event/libevent.a
+event-sched_rrpc: $(OBJS) event-sched.h $(TESTBED_LIBOBJDIR)/event/libevent.a
 	$(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(ULXRLIBS) $(LIBS)
 
 DEPS = \
 	console-agent.h error-record.h event-sched.h group-agent.h listNode.h \
 	local-agent.h node-agent.h rpc.h simulator-agent.h timeline-agent.h \
-	../../lib/event/event.h
+	${TESTBED_LIBSRCDIR}/event/event.h
 
 queue.o:		queue.c $(DEPS)
 listNode.o:		listNode.c $(DEPS)
diff --git a/os/frisbee.redux/GNUmakefile.in b/os/frisbee.redux/GNUmakefile.in
index 24251351e7a78d6355943020a554b40a4f859f99..576b2555af6a06a07f8c52321477fa922e586272 100644
--- a/os/frisbee.redux/GNUmakefile.in
+++ b/os/frisbee.redux/GNUmakefile.in
@@ -95,9 +95,10 @@ ifeq ($(WITH_MSERVER_EMULAB),1)
 # Emulab master server config
 MYSQLCFLAGS	= -I/usr/local/include
 MYSQLLIBS	= -L/usr/local/lib/mysql -lmysqlclient
-MSERVERFLAGS	+= -DUSE_EMULAB_CONFIG -DUSE_LOCALHOST_PROXY $(MYSQLCFLAGS) -I$(TESTBED_SRCDIR)/lib/libtb
+MSERVERFLAGS	+= -DUSE_EMULAB_CONFIG -DUSE_LOCALHOST_PROXY $(MYSQLCFLAGS) \
+		   -I$(TESTBED_LIBSRCDIR)/libtb
 MSERVEROBJS	+= config_emulab.o
-MSERVERLIBS	+= $(OBJDIR)/lib/libtb/libtb.a $(MYSQLLIBS)
+MSERVERLIBS	+= $(TESTBED_LIBOBJDIR)/libtb/libtb.a $(MYSQLLIBS)
 endif
 
 CFLAGS		= -O2 -g -Wall -fno-builtin-log $(LDSTATIC) $(PTHREADCFLAGS) -DSTATS -DMASTER_SERVER
diff --git a/pxe/GNUmakefile.in b/pxe/GNUmakefile.in
index 9edf02b6614030a07d6baccbde26fe5339fbde34..443d0ca8b3dd38fcbb6aad11824764a4f8fb957b 100644
--- a/pxe/GNUmakefile.in
+++ b/pxe/GNUmakefile.in
@@ -26,7 +26,7 @@ DBFLAG	= -DUSE_MYSQL_DB
 BI_DBSRC   = bootinfo_null.c bootinfo_cfile.c bootinfo_mysql.c
 BI_DBOBJ   = bootinfo_null.o bootinfo_cfile.o bootinfo_mysql.o
 
-INCS    = -I${OBJDIR} -I/usr/local/include -I$(TESTBED_SRCDIR)/lib/libtb
+INCS    = -I${OBJDIR} -I/usr/local/include -I$(TESTBED_LIBSRCDIR)/libtb
 
 CFLAGS	+= -Wall \
 	$(INCS) $(DBFLAG) -DSOLARIS -DHAVE_SOCKADDR_SA_LEN -DUSE_RECVMSG \
@@ -35,14 +35,15 @@ CFLAGS	+= -Wall \
 	-DDEFAULT_PATH='"/tftpboot/pxeboot.newnode"' \
 	-DLOG_TESTBED=$(LOG_TESTBED)
 
-LFLAGS	=  ${OBJDIR}/lib/libtb/libtb.a
+LFLAGS	=  ${TESTBED_LIBOBJDIR}/libtb/libtb.a
 
 ifeq ($(EVENTSYS),1)
 BI_DBSRC += event-support.c
 BI_DBOBJ += event-support.o
 
-CFLAGS  += -DEVENTSYS -I$(TESTBED_SRCDIR)/lib/event -I/usr/local/include
-LFLAGS  += $(OBJDIR)/lib/event/libevent.a -L/usr/local/lib -lpubsub -lcrypto
+CFLAGS  += -DEVENTSYS -I$(TESTBED_LIBSRCDIR)/event -I/usr/local/include
+LFLAGS  += $(TESTBED_LIBOBJDIR)/event/libevent.a
+LFLAGS  += -L/usr/local/lib -lpubsub -lcrypto
 endif
 
 bootinfo: main.o bootinfo.o bootinfo.h bootinfo_version.o \
diff --git a/robots/emc/GNUmakefile.in b/robots/emc/GNUmakefile.in
index fcd42e63e8904d64388cc0b9e94c6dba25dca31c..5f0b5093396c5553c7e1fced3ffd60d28a9e7e51 100644
--- a/robots/emc/GNUmakefile.in
+++ b/robots/emc/GNUmakefile.in
@@ -1,6 +1,6 @@
 #
 # EMULAB-COPYRIGHT
-# Copyright (c) 2004, 2005, 2006 University of Utah and the Flux Group.
+# Copyright (c) 2004-2011 University of Utah and the Flux Group.
 # All rights reserved.
 #
 
@@ -26,10 +26,11 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 
 OBJS		= emcd.o robot_list.o
 CFLAGS	       += -O -g -Wall -I${OBJDIR} -I/usr/local/include
-CFLAGS	       += -I${SRCDIR}/../mtp -I../mtp -I${SRCDIR}/../../event/lib
-CFLAGS	       += -I${SRCDIR}/../../lib/libtb
+CFLAGS	       += -I${SRCDIR}/../mtp -I../mtp -I${TESTNED_LIBSRCDIR}/event
+CFLAGS	       += -I${TESTBED_LIBSRCDIR}/libtb
 CFLAGS	       += `$(ELVIN_CONFIG) --cflags vin4c`
-LDFLAGS		= -L../mtp -L${OBJDIR}/lib/libtb -L${OBJDIR}/event/lib
+LDFLAGS		= -L../mtp
+LDFLAGS        += -L${TESTBED_LIBOBJDIR}/libtb -L${TESTBED_LIBOBJDIR}/event
 
 LIBS	 += -levent -lcrypto -lmtp -ltb
 LIBS     += `$(ELVIN_CONFIG) --libs vin4c`
diff --git a/robots/rmcd/GNUmakefile.in b/robots/rmcd/GNUmakefile.in
index 7d8164af9f21d184fb629e24bea56b077e49a147..55cc3d5c243741f1f7e55de79a5f07bedb80b343 100644
--- a/robots/rmcd/GNUmakefile.in
+++ b/robots/rmcd/GNUmakefile.in
@@ -1,6 +1,6 @@
 #
 # EMULAB-COPYRIGHT
-# Copyright (c) 2004, 2005 University of Utah and the Flux Group.
+# Copyright (c) 2004-2011 University of Utah and the Flux Group.
 # All rights reserved.
 #
 
@@ -21,9 +21,9 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 
 CFLAGS	       += -O -g -Wall -I${OBJDIR} -I/usr/local/include
 CFLAGS	       += -I${SRCDIR}/../mtp -I../mtp
-CFLAGS	       += -I${SRCDIR}/../../lib/libtb
+CFLAGS	       += -I${TESTBED_LIBSRCDIR}/libtb
 
-LDFLAGS		= -L../mtp -L${OBJDIR}/lib/libtb
+LDFLAGS		= -L../mtp -L${TESTBED_LIBOBJDIR}/libtb
 
 LIBS	 += -lmtp -ltb -lm
 
diff --git a/robots/vmcd/GNUmakefile.in b/robots/vmcd/GNUmakefile.in
index d2178310ccfb5a16737b0c45345cef42ae7c0c56..343d4fd9a3afc21bb028e738b02d764617238ad7 100644
--- a/robots/vmcd/GNUmakefile.in
+++ b/robots/vmcd/GNUmakefile.in
@@ -1,6 +1,6 @@
 #
 # EMULAB-COPYRIGHT
-# Copyright (c) 2004, 2005 University of Utah and the Flux Group.
+# Copyright (c) 2004-2011 University of Utah and the Flux Group.
 # All rights reserved.
 #
 
@@ -36,9 +36,10 @@ include $(TESTBED_SRCDIR)/GNUmakerules
 
 CFLAGS	       += -O -g -Wall -I${OBJDIR} -I/usr/local/include
 CFLAGS	       += -I${SRCDIR}/../mtp -I../mtp
-CFLAGS	       += -I${SRCDIR}/../../lib/libtb
+CFLAGS	       += -I${TESTBED_LIBSRCDIR}/libtb
 
-LDFLAGS		= -L../mtp -L${OBJDIR}/lib/libtb -L${OBJDIR}/event/lib 
+LDFLAGS		= -L../mtp
+LDFLAGS        += -L${TESTBED_LIBOBJDIR}/libtb -L${TESTBED_LIBOBJDIR}/event
 
 LIBS	 += -lmtp -ltb -lm -lz
 
diff --git a/security/GNUmakefile.in b/security/GNUmakefile.in
index 7a38f3a484a7dab607cc65deeeb20b4faaef2e24..b0023c35c48f1c62ae67ea7c02f18621a09c5e72 100644
--- a/security/GNUmakefile.in
+++ b/security/GNUmakefile.in
@@ -1,6 +1,6 @@
 #
 # EMULAB-COPYRIGHT
-# Copyright (c) 2000-2004, 2006 University of Utah and the Flux Group.
+# Copyright (c) 2000-2011 University of Utah and the Flux Group.
 # All rights reserved.
 #
 
@@ -37,13 +37,13 @@ suexec:		suexec.c suexec.h
 		-o suexec $<
 
 genlastlog:	genlastlog.c
-	$(CC) $(CFLAGS) -I/usr/local/include -I$(TESTBED_SRCDIR)/lib/libtb \
+	$(CC) $(CFLAGS) -I/usr/local/include -I$(TESTBED_LIBSRCDIR)/libtb \
 		-DTBDBNAME='"$(TBDBNAME)"' \
 		-DUSERSVAR='"$(prefix)/usersvar"' \
 		-DOURDOMAIN='"$(OURDOMAIN)"' \
                 -DUSERNODE='"$(USERNODE)"' \
 		-DLOG_TESTBED=$(LOG_TESTBED) \
-		-o genlastlog $< ${OBJDIR}/lib/libtb/libtb.a \
+		-o genlastlog $< ${TESTBED_LIBOBJDIR}/libtb/libtb.a \
 		-L/usr/local/lib/mysql -lmysqlclient
 
 install: $(addprefix $(INSTALL_LIBEXECDIR)/, $(BINS)) \
diff --git a/tmcd/GNUmakefile.in b/tmcd/GNUmakefile.in
index b3fe8dfea6ccf108f69b065933addcac97fc9ff3..38a1634f7a9f38ff097f2ec555d129394a615ed9 100644
--- a/tmcd/GNUmakefile.in
+++ b/tmcd/GNUmakefile.in
@@ -16,17 +16,17 @@ all:	server
 server: tmcd tmcd.restart
 
 # For VPATH.
-MOSTLY_SRCDIRS = ${TESTBED_SRCDIR}/lib/libtb ${TESTBED_SRCDIR}/pxe \
-		 ${TESTBED_SRCDIR}/lib/tmcd
+MOSTLY_SRCDIRS = ${TESTBED_LIBSRCDIR}/libtb ${TESTBED_SRCDIR}/pxe \
+		 ${TESTBED_LIBSRCDIR}/tmcd
 
 include $(TESTBED_SRCDIR)/GNUmakerules
 
 CFLAGS	+= -O -g -Wall -DUDP \
 		-I${OBJDIR} -I/usr/local/include \
-		-I${TESTBED_SRCDIR}/lib/libtb -I${TESTBED_SRCDIR}/pxe \
-		-I${TESTBED_SRCDIR}/lib/tmcd \
+		-I${TESTBED_LIBSRCDIR}/libtb -I${TESTBED_SRCDIR}/pxe \
+		-I${TESTBED_LIBSRCDIR}/tmcd \
 		-L/usr/local/lib
-TMLIBS	 = ${OBJDIR}/lib/libtb/libtb.a
+TMLIBS	 = ${TESTBED_LIBOBJDIR}/libtb/libtb.a
 BOOTINFO = ${OBJDIR}/pxe/bootinfo.o ${OBJDIR}/pxe/bootinfo_mysql.o
 LDFLAGS += $(LDSTATIC)
 
@@ -36,7 +36,7 @@ LDFLAGS += $(LDSTATIC)
 CFLAGS	+= -DETCDIR='"$(INSTALL_ETCDIR)"'
 SSLFLAGS = -DWITHSSL 
 TMLIBS	+= -lssl -lcrypto
-NOTPMLIB = ${OBJDIR}/lib/tmcd/libtmcd.a
+NOTPMLIB = ${TESTBED_LIBOBJDIR}/tmcd/libtmcd.a
 
 ifeq ($(SYSTEM),Linux)
 ifneq ($(LDSTATIC),)
@@ -55,8 +55,8 @@ TMLIBS  += -ldl
 endif
 
 ifeq ($(EVENTSYS),1)
-	TMCDCFLAGS  = -I$(TESTBED_SRCDIR)/lib/event -DEVENTSYS
-	TMCDLIBS    = ${OBJDIR}/lib/event/libevent.a
+	TMCDCFLAGS  = -I$(TESTBED_LIBSRCDIR)/event -DEVENTSYS
+	TMCDLIBS    = ${TESTBED_LIBOBJDIR}/event/libevent.a
 	ELVINFLAGS  = -lm -L/usr/local/lib -lpubsub 
 endif
 
@@ -84,7 +84,7 @@ libtmcd.o: libtmcd.c ${TMCDLIBS} tmcd.h version.o $(BOOTINFO)
 
 libtmcd.so: libtmcd.o ${TMCDLIBS} tmcd.h $(BOOTINFO)
 	$(LD) -shared $^ -L/usr/local/lib/mysql -lxml2 -lmysqlclient \
-		$(TMCDLIBS) $(ELVINFLAGS) ../lib/libtb/libtb.a \
+		$(TMCDLIBS) $(ELVINFLAGS) $(TESTBED_LIBOBJDIR)/libtb/libtb.a \
 		-o $@
 
 version.c: tmcd.c
@@ -109,12 +109,12 @@ $(INSTALL_BINDIR)/tmcd/%: %
 # Here so that the event system libraries, and libraries they depend upon,
 # can get made.
 #
-${OBJDIR}/lib/event/%:
-	cd ${OBJDIR}/lib/event && gmake $<
-${OBJDIR}/lib/libtb/%:
-	cd ${OBJDIR}/lib/tbdb && gmake $<
-${OBJDIR}/lib/tmcd/%:
-	cd ${OBJDIR}/lib/tmcd && gmake $<
+${TESTBED_LIBOBJDIR}/event/%:
+	cd ${TESTBED_LIBOBJDIR}/event && gmake $<
+${TESTBED_LIBOBJDIR}/libtb/%:
+	cd ${TESTBED_LIBOBJDIR}/tbdb && gmake $<
+${TESTBED_LIBOBJDIR}/tmcd/%:
+	cd ${TESTBED_LIBOBJDIR}/tmcd && gmake $<
 
 clean:
 	rm -f *.o core tmcd *-debug version.c
diff --git a/tools/rmanage/GNUmakefile.in b/tools/rmanage/GNUmakefile.in
index 8338056d27fd2dd6e41c1cd689266b8c6a790d3b..6393dd1e9664122f4d272061e5d72e2043265a11 100644
--- a/tools/rmanage/GNUmakefile.in
+++ b/tools/rmanage/GNUmakefile.in
@@ -1,6 +1,6 @@
 #
 # EMULAB-COPYRIGHT
-# Copyright (c) 2006-2008 University of Utah and the Flux Group.
+# Copyright (c) 2006-2011 University of Utah and the Flux Group.
 # All rights reserved.
 #
 
@@ -57,22 +57,23 @@ rmcp_wrap.o: $(SRCDIR)/rmcp_wrap.c
 	$(CC) -fpic -c $(CFLAGS) $(SWIG_GCC_INCS) $(LDFLAGS) $(SRCDIR)/rmcp_wrap.c
 
 rmanage: GNUmakefile rmanage.o rmcp.o \
-		${OBJDIR}/lib/libtb/tbdb.o ${OBJDIR}/lib/libtb/log.o
+		${TESTBED_LIBOBJDIR}/libtb/tbdb.o \
+		${TESTBED_LIBOBJDIR}/libtb/log.o
 	$(CC) $(CFLAGS) $(LDFLAGS) $(MYSQL_LIBS) \
-		rmanage.o rmcp.o ${OBJDIR}/lib/libtb/tbdb.o \
-		${OBJDIR}/lib/libtb/log.o -o rmanage
+		rmanage.o rmcp.o ${TESTBED_LIBOBJDIR}/libtb/tbdb.o \
+		${TESTBED_LIBOBJDIR}/libtb/log.o -o rmanage
 		cp rmanage rmanage.debug
 		strip rmanage
 
 #
 # Here so that we get libtb tbdb stuff.
 #
-${OBJDIR}/lib/libtb/%:
-	cd ${OBJDIR}/lib/tbdb && gmake $<
+${TESTBED_LIBOBJDIR}/libtb/%:
+	cd ${TESTBED_LIBOBJDIR}/tbdb && gmake $<
 
 rmanage.o: rmanage.c rmcp.c
 	$(CC) -c -o rmanage.o $(CFLAGS) \
-		-I$(TESTBED_SRCDIR)/lib/libtb -I/usr/local/include $<
+		-I$(TESTBED_LIBSRCDIR)/libtb -I/usr/local/include $<
 
 rmcp.o: rmcp.c rmcp.h
 	$(CC) -c -o rmcp.o $(CFLAGS) $<