diff --git a/src/uifc/GNUmakefile b/src/uifc/GNUmakefile
index d8897f0fb256256df678271a8ecc7ef4f254f9b7..16f14ed6bfe56b82e8eb0152d0e7c3e510ab8c4c 100644
--- a/src/uifc/GNUmakefile
+++ b/src/uifc/GNUmakefile
@@ -20,13 +20,13 @@ include $(SRC_ROOT)/build/Common.gmake	# defines clean and output directory rule
 CFLAGS += -I$(XPDEV_SRC) $(CIOLIB-MT_CFLAGS)
 
 # UIFC Library Link Rule
-$(UIFCLIB): $(OBJODIR) $(OBJS)
+$(UIFCLIB): $(OBJS)
 	@echo Creating $@ ...
 	$(QUIET)ar rc $@ $(OBJS)
 	$(QUIET)ranlib $@
 
 # MT-UIFC Library Link Rule
-$(UIFCLIB-MT): $(MTOBJODIR) $(MT_OBJS)
+$(UIFCLIB-MT): $(MT_OBJS)
 	@echo Creating $@ ...
 	$(QUIET)ar rc $@ $(MT_OBJS)
 	$(QUIET)ranlib $@
diff --git a/src/uifc/Makefile b/src/uifc/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..4bd1cca2ac3a912325942efb4381c0f2f8525132
--- /dev/null
+++ b/src/uifc/Makefile
@@ -0,0 +1,15 @@
+SRC_ROOT = ..
+# Cross platform/compiler definitions
+!include $(SRC_ROOT)\build\Common.bmake	# defines clean and output directory rules
+
+CFLAGS = $(CFLAGS) $(XPDEV-MT_CFLAGS) $(CIOLIB-MT_CFLAGS)
+
+$(UIFCLIB): $(OBJS)
+	@echo Creating $< ...
+	-$(QUIET)$(DELETE) $@
+        &$(QUIET)tlib $@ +$**
+
+$(UIFCLIB-MT): $(MT_OBJS)
+	@echo Creating $< ...
+	-$(QUIET)$(DELETE) $@
+        &$(QUIET)tlib $@ +$**
diff --git a/src/uifc/targets.mk b/src/uifc/targets.mk
index 698e5dd862fa1bb1b37cb943c3768ff71b600131..aadb155d100669df81141fcd3a524cf6fd9125ee 100644
--- a/src/uifc/targets.mk
+++ b/src/uifc/targets.mk
@@ -1,4 +1,4 @@
 all: lib mtlib
 
-lib: $(LIBODIR) $(UIFCLIB)
-mtlib: $(LIBODIR) $(UIFCLIB-MT)
+lib: $(OBJODIR) $(LIBODIR) $(UIFCLIB)
+mtlib: $(MTOBJODIR) $(LIBODIR) $(UIFCLIB-MT)
diff --git a/src/xpdev/Common.gmake b/src/xpdev/Common.gmake
deleted file mode 100644
index bc2aee1b15df9c83faa4c2c7239161aa5bc72d22..0000000000000000000000000000000000000000
--- a/src/xpdev/Common.gmake
+++ /dev/null
@@ -1,201 +0,0 @@
-# Available Options:
-# NEED_THREADS		= Set flags suitable for threaded programs
-
-# Set DEBUG
-ifndef DEBUG
- ifndef RELEASE
-  DEBUG	:=	1
- endif
-endif
-
-# VERBOSE/QUITE
-ifndef VERBOSE
- QUIET	=	@
-endif
-
-# Compiler-specific options
-CFLAGS	+=	-MMD
-ifdef BUILD_DEPENDS
- ifdef DONT_CLOBBER_CC
-  CC	?=	gcc
- else
-  CC	:=	gcc
- endif
- CCPRE	:=	$(CC)
- CC	:=	$(XPDEV)/../build/mkdep -a
- CXX	:=	$(XPDEV)/../build/mkdep -a
- LD	:=	echo
- COMPILE_MSG	:= Depending
-else
- ifdef DONT_CLOBBER_CC
-  CC	?=	gcc
- else
-  CC	:=	gcc
- endif
- CCPRE	:=	$(CC)
- CXX	?=	g++
- LD	?=	ld
- COMPILE_MSG	:= Compiling
-endif
-
-SLASH	=	/
-OFILE	=	o
-
-ifdef DEBUG
- BUILD	=	debug
-else
- BUILD	=	release
-endif
-BUILDPATH	?=	$(BUILD)
-
-# Get OS
-ifndef os
- os		=	$(shell uname)
-endif
-os      :=	$(shell echo $(os) | tr '[A-Z]' '[a-z]' | tr ' ' '_')
-
-machine		:=	$(shell if uname -m | egrep -v "(i[3456789]|x)86" > /dev/null; then uname -m | tr "[A-Z]" "[a-z]" | tr " " "_" ; fi)
-ifeq ($(machine),sun4u)
- CFLAGS +=      -D__BIG_ENDIAN__
-endif
-ifeq ($(machine),)
- machine	:=	$(os)
-else
- machine	:=	$(os).$(machine)
-endif
-
-LIBODIR :=	$(CCPRE).$(machine).lib.$(BUILDPATH)
-EXEODIR :=	$(CCPRE).$(machine).exe.$(BUILDPATH)
-LDFLAGS	+=	-L$(LIBODIR)
-
-ifeq ($(os),netbsd)
- DELETE :=	rm -f
-else
- ifeq ($(os),openbsd)
-  DELETE :=	rm -f
- else
-  ifeq ($(os),sunos)
-   DELETE :=	rm -f
-  else
-   DELETE	=	rm -fv
-  endif
- endif
-endif
-
-EXEFILE	:=
-
-ifeq ($(os),openbsd)
-LIBFILE =	.so.0.0
-else
- ifeq ($(os),darwin)
-  LIBFILE =	.dylib
- else
-  LIBFILE	=	.so
- endif
-endif
-LIBPREFIX =	lib
-
-# OS Specific Flags
-ifeq ($(os),sunos)    # Solaris
- CFLAGS	+= -D__solaris__ -DNEEDS_DAEMON -DNEEDS_FORKPTY -DNEEDS_SETENV -DNEEDS_CFMAKERAW
-endif
-ifeq ($(os),netbsd)	# NetBSD
- CFLAGS	+=	-D__unix__ -I/usr/pkg/include -I/usr/pkg/pthreads/include -DNEEDS_FORKPTY
-endif
-ifeq ($(os),darwin)
- CFLAGS +=  -D__unix__ -fno-common -D__DARWIN__
- LDFLAGS +=  -lm
-endif
-
-# PThread-specific flags
-ifeq ($(os),linux)    # Linux
- ifndef THREADS_ACTUALLY_WORK
-  PTHREAD_CFLAGS    += -D_THREAD_SUID_BROKEN
- endif
-endif
-PTHREAD_CFLAGS    += -D_THREAD_SAFE -D_REENTRANT
-ifeq ($(os),freebsd)    # FreeBSD
- PTHREAD_CFLAGS    += -DUSE_XP_SEMAPHORES
- PTHREAD_LDFLAGS    +=    -pthread
- XP_SEM    :=    1
-else
- ifeq ($(os),openbsd)    # OpenBSD
-  PTHREAD_CFLAGS    += -DUSE_XP_SEMAPHORES
-  PTHREAD_LDFLAGS    +=    -pthread
-  XP_SEM    :=    1
- else
-  ifeq ($(os),netbsd)    # NetBSD
-   PTHREAD_CFLAGS    += -D__unix__ -DUSE_XP_SEMAPHORES
-   PTHREAD_LDFLAGS    +=    -L/usr/pkg/lib -L/usr/pkg/pthreads/lib -lpthread
-   XP_SEM    :=    1
-  else
-   ifeq ($(os),qnx)    # QNX
-   else
-    ifeq ($(os),darwin)    # Darwin/Mac OS X
-     PTHREAD_CFLAGS    += -D__unix__ -DUSE_XP_SEMAPHORES -D__DARWIN__
-     PTHREAD_LDFLAGS    += -lpthread
-     XP_SEM    := 1
-    else
-     ifeq ($(os),sunos)  # Solaris
-      XP_SEM :=    1
-      PTHREAD_CFLAGS    +=    -D_POSIX_PTHREAD_SEMANTICS
-      PTHREAD_CFLAGS    += -DUSE_XP_SEMAPHORES
-      PTHREAD_LDFLAGS    +=    -lpthread
-     else            # Linux / Other UNIX
-      XP_SEM :=    1
-      PTHREAD_CFLAGS    += -DUSE_XP_SEMAPHORES
-      PTHREAD_LDFLAGS    +=    -lpthread
-     endif
-    endif
-   endif
-  endif
- endif
-endif
-
-ifdef DEBUG
- CFLAGS	+=	-ggdb
- CFLAGS	+=	-D_DEBUG
- ODIR	:=	$(ODIR).debug
-else # RELEASE
- CFLAGS	:= -O3 $(CFLAGS)
- ODIR	:=	$(ODIR).release
-endif
-
-vpath %.c $(XPDEV)
-
-CFLAGS	+=	-I$(XPDEV)
-
--include targets.mk
--include $(XPDEV)/rules.mk
--include objects.mk		# defines $(OBJS)
-ifdef XP_SEM
- PTHREAD_OBJS	+= $(LIBODIR)$(SLASH)xpsem.$(OFILE)
-endif
-
-# Implicit C Compile Rule
-$(LIBODIR)/%.o : %.c $(BUILD_DEPENDS)
-	@echo $(COMPILE_MSG) $<
-	$(QUIET)$(CC) $(CFLAGS) -o $@ -c $<
-
-# Implicit C++ Compile Rule
-$(LIBODIR)/%.o : %.cpp $(BUILD_DEPENDS)
-	@echo $(COMPILE_MSG) $<
-	$(QUIET)$(CXX) $(CFLAGS) -o $@ -c $<
-
-ifdef NEED_THREADS
- CFLAGS += $(PTHREAD_CFLAGS)
- LDFLAGS	+= $(PTHREAD_LDFLAGS)
- OBJS	+= $(PTHREAD_OBJS)
-endif
-
-depend:
-	$(QUIET)$(DELETE) $(LIBODIR)/.depend
-	$(QUIET)$(DELETE) $(EXEODIR)/.depend
-	$(QUIET)$(MAKE) BUILD_DEPENDS=FORCE
-
-FORCE:
-
--include $(LIBODIR)/.depend
--include $(EXEODIR)/.depend
--include $(LIBODIR)/*.d
--include $(EXEODIR)/*.d
diff --git a/src/xpdev/Makefile b/src/xpdev/Makefile
index 99a75aec32c97c0b6b4855cbee4f83f5023ede9b..dc233e152efc43facc4dc3d74298d8d91f09b625 100644
--- a/src/xpdev/Makefile
+++ b/src/xpdev/Makefile
@@ -1,77 +1,12 @@
-# Makefile
-
-#########################################################################
-# Makefile for cross-platform development "wrappers" test				#
-# For use with Borland or Microsoft C++ Compilers for Win32				#
-# @format.tab-size 4													#
-#																		#
-# usage: make [msc=1]													#
-#########################################################################
-
-# $Id$
-
-# Macros
-DEBUG	=	1				# Comment out for release (non-debug) version
-
-# OS-specific
-SLASH	=	\	# This comment is necessary
-OFILE	=	obj
-LIBFILE	=	.dll
-EXEFILE	=	.exe
-DELETE	=	echo y | del 
-
-# Compiler-specific
-!ifdef msc	# Microsoft Visual C++
-CC		=	cl
-LD		=	link
-LIBODIR	=	msvc.Win32
-OUTPUT	=	-Fo
-LOUTPUT	=	-Fe
-CFLAGS  =	-nologo -MTd
-LFLAGS	=	$(CFLAGS)
-!ifdef DEBUG
-CFLAGS	=	$(CFLAGS) -Yd
-!endif
-
-!else		# Borland C++
-
-CC		=	bcc32
-LD		=	ilink32
-LIBODIR	=	bcc.Win32		# Output directory
-OUTPUT	=	-o
-LOUTPUT	=	$(OUTPUT)
-CFLAGS	=	-n$(LIBODIR) -WM -q 
-LFLAGS	=	$(CFLAGS)
-CFLAGS  =	$(CFLAGS) -M -WD -WM -X-
-!ifdef DEBUG
-CFLAGS	=	$(CFLAGS) -v
-!endif
-!endif
-
-# Common compiler flags
-!ifdef DEBUG
-CFLAGS	=	$(CFLAGS) -Od -D_DEBUG 
-!endif
-
-# Debug or release build?
-!ifdef DEBUG
-LIBODIR	=	$(LIBODIR).debug
-!else
-LIBODIR	=	$(LIBODIR).release
-!endif
-
-!include objects.mk		# defines $(OBJS)
-!include targets.mk
-
-# Implicit C Compile Rule
-{.}.c.$(OFILE):
-	@$(CC) $(CFLAGS) -c $< $(OUTPUT)$@
-
-# Create output directories if they don't exist
-$(LIBODIR):
-	@if not exist $(LIBODIR) mkdir $(LIBODIR)
-
-# Executable Build Rule
-$(WRAPTEST): $(LIBODIR)\wraptest.obj $(OBJS)
-	@echo Linking $@
-	@$(CC) $(LFLAGS) $** $(LOUTPUT)$@
+SRC_ROOT	=	..
+!include $(SRC_ROOT)/build/Common.bmake
+
+$(XPDEV_LIB): $(OBJODIR) $(OBJS)
+	@echo Creating $< ...
+	-$(QUIET)$(DELETE) $@
+	&$(QUIET)tlib $@ +$**
+
+$(XPDEV-MT_LIB): $(MTOBJODIR) $(MTOBJS)
+	@echo Creating $< ...
+	-$(QUIET)$(DELETE) $@
+	&$(QUIET)tlib $@ +$**