diff --git a/src/sbbs3/Common.gmake b/src/sbbs3/Common.gmake
index 2d74bf7522fdea6b5c40f7979a7c7e2d1bfe425c..d09bb0d72cb915e59107d3b19d61580ba489d383 100644
--- a/src/sbbs3/Common.gmake
+++ b/src/sbbs3/Common.gmake
@@ -22,5 +22,5 @@ endif
 export LD_RUN_PATH
 
 $(SBBS):
-	$(MAKE) -C $(SBBS_SRC) $(LIBODIR)$(DIRSEP)$(LIBPREFIX)sbbs$(SOFILE)
+	$(MAKE) -C $(SBBS_SRC) $(LIBODIR)/$(LIBPREFIX)sbbs$(SOFILE)
 
diff --git a/src/sbbs3/Common.make b/src/sbbs3/Common.make
index 2291d17d4254effc2e2489fcde69e1d818759478..4321f04d4755543f7a90fdcfd728f5c12bf947e4 100644
--- a/src/sbbs3/Common.make
+++ b/src/sbbs3/Common.make
@@ -1,3 +1,3 @@
 # Available Options:
 
-SBBS		=	$(SBBS_SRC)$(DIRSEP)$(LIBODIR)$(DIRSEP)$(LIBPREFIX)sbbs$(SOFILE)
+SBBS		=	$(SBBS_SRC)/$(LIBODIR)/$(LIBPREFIX)sbbs$(SOFILE)
diff --git a/src/sbbs3/GNUmakefile b/src/sbbs3/GNUmakefile
index c93cd0b06b6315b844f308dd076391a8f6bf5c2f..f4cb120c36878d9ddccf6197c41a52adaff29401 100644
--- a/src/sbbs3/GNUmakefile
+++ b/src/sbbs3/GNUmakefile
@@ -49,8 +49,8 @@ endif
 ifdef BUILD_JSDOCS
  CFLAGS += -DBUILD_JSDOCS
  SBBS_LIBS += ${UIFC-MT_LDFLAGS} ${UIFC-MT_LIBS} $(CIOLIB-MT_LDFLAGS) ${CIOLIB-MT_LIBS}
- OBJS += $(MTOBJODIR)$(DIRSEP)js_uifc$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_conio$(OFILE)
+ OBJS += $(MTOBJODIR)/js_uifc$(OFILE) \
+			$(MTOBJODIR)/js_conio$(OFILE)
  EXTRA_SBBS_DEPENDS += $(CIOLIB-MT) $(UIFCLIB-MT)
 endif
 
@@ -107,11 +107,11 @@ CFLAGS	+=	$(JS_CFLAGS) $(CRYPT_CFLAGS) $(UIFC-MT_CFLAGS) $(XPDEV-MT_CFLAGS) $(SM
 CFLAGS	+=	-I../comio
 vpath %.c ../comio
 ifeq ($(os), win32)
-OBJS	+= $(MTOBJODIR)$(DIRSEP)comio_win32$(OFILE)
-JSDOOR_OBJS	+= $(MTOBJODIR)$(DIRSEP)comio_win32$(OFILE)
+OBJS	+= $(MTOBJODIR)/comio_win32$(OFILE)
+JSDOOR_OBJS	+= $(MTOBJODIR)/comio_win32$(OFILE)
 else
-OBJS	+= $(MTOBJODIR)$(DIRSEP)comio_nix$(OFILE)
-JSDOOR_OBJS	+= $(MTOBJODIR)$(DIRSEP)comio_nix$(OFILE)
+OBJS	+= $(MTOBJODIR)/comio_nix$(OFILE)
+JSDOOR_OBJS	+= $(MTOBJODIR)/comio_nix$(OFILE)
 endif
 LDFLAGS +=	$(UIFC-MT_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(SMBLIB_LDFLAGS) $(ENCODE_LDFLAGS) $(HASH_LDFLAGS) $(CIOLIB-MT_LDFLAGS) $(JS_LDFLAGS) $(CRYPT_LDFLAGS)
 
diff --git a/src/sbbs3/extdeps.mk b/src/sbbs3/extdeps.mk
index 56057242ee5e36b1380ff8805c3d2cf062bd3788..8d16bc80934cd7508947a968a73f7c12081e4996 100644
--- a/src/sbbs3/extdeps.mk
+++ b/src/sbbs3/extdeps.mk
@@ -1,105 +1,105 @@
 # These C objects include sbbs.h, jsapi.h, or cryptlib.h so need JS_DEPS and/or CRYPT_DEPS filled before they can build.
-$(MTOBJODIR)$(DIRSEP)ftpsrvr$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)ident$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_client$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_com$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_conio$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_cryptcert$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_cryptcon$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_cryptkeyset$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_file$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_file_area$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_global$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_internal$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_msg_area$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_msgbase$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_queue$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_request$(OFILE): $(JS_LIB)
-$(MTOBJODIR)$(DIRSEP)js_rtpool$(OFILE): $(JS_LIB)
-$(MTOBJODIR)$(DIRSEP)js_server$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_socket$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_sprintf$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_system$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_uifc$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_user$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_xtrn_area$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)jsdebug$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)jsdoor$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)jsexec$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)load_cfg$(OFILE): $(CRYPT_LIB)
-$(OBJODIR)$(DIRSEP)load_cfg$(OFILE): $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)mailsrvr$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)mime$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)sbbs_status$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)sbbscon$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)services$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)sockopts$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)ssl$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)websrvr$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/ftpsrvr$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/ident$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_client$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_com$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_conio$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_cryptcert$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_cryptcon$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_cryptkeyset$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_file$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_file_area$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_global$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_internal$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_msg_area$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_msgbase$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_queue$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_request$(OFILE): $(JS_LIB)
+$(MTOBJODIR)/js_rtpool$(OFILE): $(JS_LIB)
+$(MTOBJODIR)/js_server$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_socket$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_sprintf$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_system$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_uifc$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_user$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_xtrn_area$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/jsdebug$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/jsdoor$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/jsexec$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/load_cfg$(OFILE): $(CRYPT_LIB)
+$(OBJODIR)/load_cfg$(OFILE): $(CRYPT_LIB)
+$(MTOBJODIR)/mailsrvr$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/mime$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/sbbs_status$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/sbbscon$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/services$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/sockopts$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/ssl$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/websrvr$(OFILE): $(JS_LIB) $(CRYPT_LIB)
 
 # C++
-$(MTOBJODIR)$(DIRSEP)ansiterm$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)answer$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)atcodes$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)bat_xfer$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)bulkmail$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)chat$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)chk_ar$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)con_hi$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)con_out$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)data$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)data_ovl$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)download$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)email$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)exec$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)execfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)execfunc$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)execmisc$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)execmsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)execnet$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)fido$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)file$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)getkey$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)getmsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)getnode$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)getstr$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)inkey$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_bbs$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)js_console$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)listfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)logfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)login$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)logon$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)logout$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)mail$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)main$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)msgtoqwk$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)netmail$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)newuser$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)pack_qwk$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)pack_rep$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)postmsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)prntfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)putmsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)putnode$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)qwk$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)qwktomsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)readmail$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)readmsgs$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)scandirs$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)scansubs$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)sortdir$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)str$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)telgate$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)text_sec$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)tmp_xfer$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)un_qwk$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)un_rep$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)upload$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)useredit$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)ver$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)viewfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)writemsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)xtrn$(OFILE): $(JS_LIB) $(CRYPT_LIB)
-$(MTOBJODIR)$(DIRSEP)xtrn_sec$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/ansiterm$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/answer$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/atcodes$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/bat_xfer$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/bulkmail$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/chat$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/chk_ar$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/con_hi$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/con_out$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/data$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/data_ovl$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/download$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/email$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/exec$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/execfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/execfunc$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/execmisc$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/execmsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/execnet$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/fido$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/file$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/getkey$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/getmsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/getnode$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/getstr$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/inkey$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_bbs$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/js_console$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/listfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/logfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/login$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/logon$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/logout$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/mail$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/main$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/msgtoqwk$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/netmail$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/newuser$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/pack_qwk$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/pack_rep$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/postmsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/prntfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/putmsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/putnode$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/qwk$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/qwktomsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/readmail$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/readmsgs$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/scandirs$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/scansubs$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/sortdir$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/str$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/telgate$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/text_sec$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/tmp_xfer$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/un_qwk$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/un_rep$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/upload$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/useredit$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/ver$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/viewfile$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/writemsg$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/xtrn$(OFILE): $(JS_LIB) $(CRYPT_LIB)
+$(MTOBJODIR)/xtrn_sec$(OFILE): $(JS_LIB) $(CRYPT_LIB)
 
diff --git a/src/sbbs3/objects.mk b/src/sbbs3/objects.mk
index 3b589ba87c26b88440a27c4d7dc8683a6cddd09e..bec733f89024e4c124bd2a8d40ccec0d78c504e4 100644
--- a/src/sbbs3/objects.mk
+++ b/src/sbbs3/objects.mk
@@ -1,319 +1,315 @@
 # objects.mk
 
-# Make 'include file' listing object files for SBBS.DLL
-
-# $Id: objects.mk,v 1.76 2020/04/03 19:54:31 rswindell Exp $(DIRSEP)09$(DIRSEP)08 07:23:54 deuce Exp $
-
-# OBJODIR, SLASH, and OFILE must be pre-defined
+# [MT]OBJODIR and OFILE must be pre-defined
 
 OBJS	=		$(LOAD_CFG_OBJS) \
-			$(MTOBJODIR)$(DIRSEP)ansiterm$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)answer$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)atcodes$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)bat_xfer$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)bulkmail$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)chat$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)chk_ar$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)comio$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)con_hi$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)con_out$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)dat_rec$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)data$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)data_ovl$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)date_str$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)download$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)email$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)exec$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)execfile$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)execfunc$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)execmisc$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)execmsg$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)execnet$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)fido$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)file$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)filedat$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)getkey$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)getmail$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)getmsg$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)getnode$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)getstats$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)getstr$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)inkey$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)ident$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)jsdebug$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_archive$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_bbs$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_client$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_com$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_console$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_cryptcert$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_cryptcon$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_cryptkeyset$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_file$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_file_area$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_global$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_internal$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_msg_area$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_msgbase$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_filebase$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_queue$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_request$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_rtpool$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_server$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_socket$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_sprintf$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_system$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_user$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_xtrn_area$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)listfile$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)logfile$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)login$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)logon$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)logout$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)mail$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)main$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)msg_id$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)msgdate$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)msgtoqwk$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)netmail$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)newuser$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)pack_qwk$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)pack_rep$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)postmsg$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)prntfile$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)putmsg$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)putnode$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)qwk$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)qwktomsg$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)readmail$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)readmsgs$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)ringbuf$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)sauce$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scandirs$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scansubs$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgsave$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)sockopts$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)str$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)telgate$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)telnet$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)text_sec$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)tmp_xfer$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)un_qwk$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)un_rep$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)upload$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)userdat$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)useredit$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)viewfile$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)wordwrap$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)writemsg$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)xtrn$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)xtrn_sec$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)ver$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)ssl$(OFILE)
+			$(MTOBJODIR)/ansiterm$(OFILE) \
+			$(MTOBJODIR)/answer$(OFILE)\
+			$(MTOBJODIR)/atcodes$(OFILE)\
+			$(MTOBJODIR)/bat_xfer$(OFILE)\
+			$(MTOBJODIR)/bulkmail$(OFILE)\
+			$(MTOBJODIR)/chat$(OFILE)\
+			$(MTOBJODIR)/chk_ar$(OFILE)\
+			$(MTOBJODIR)/comio$(OFILE)\
+			$(MTOBJODIR)/con_hi$(OFILE)\
+			$(MTOBJODIR)/con_out$(OFILE)\
+			$(MTOBJODIR)/dat_rec$(OFILE)\
+			$(MTOBJODIR)/data$(OFILE)\
+			$(MTOBJODIR)/data_ovl$(OFILE)\
+			$(MTOBJODIR)/date_str$(OFILE)\
+			$(MTOBJODIR)/download$(OFILE)\
+			$(MTOBJODIR)/email$(OFILE)\
+			$(MTOBJODIR)/exec$(OFILE)\
+			$(MTOBJODIR)/execfile$(OFILE)\
+			$(MTOBJODIR)/execfunc$(OFILE)\
+			$(MTOBJODIR)/execmisc$(OFILE)\
+			$(MTOBJODIR)/execmsg$(OFILE)\
+			$(MTOBJODIR)/execnet$(OFILE)\
+			$(MTOBJODIR)/fido$(OFILE)\
+			$(MTOBJODIR)/file$(OFILE)\
+			$(MTOBJODIR)/filedat$(OFILE)\
+			$(MTOBJODIR)/getkey$(OFILE)\
+			$(MTOBJODIR)/getmail$(OFILE)\
+			$(MTOBJODIR)/getmsg$(OFILE)\
+			$(MTOBJODIR)/getnode$(OFILE)\
+			$(MTOBJODIR)/getstats$(OFILE)\
+			$(MTOBJODIR)/getstr$(OFILE)\
+			$(MTOBJODIR)/inkey$(OFILE)\
+			$(MTOBJODIR)/ident$(OFILE)\
+			$(MTOBJODIR)/jsdebug$(OFILE)\
+			$(MTOBJODIR)/js_archive$(OFILE)\
+			$(MTOBJODIR)/js_bbs$(OFILE)\
+			$(MTOBJODIR)/js_client$(OFILE)\
+			$(MTOBJODIR)/js_com$(OFILE)\
+			$(MTOBJODIR)/js_console$(OFILE)\
+			$(MTOBJODIR)/js_cryptcert$(OFILE)\
+			$(MTOBJODIR)/js_cryptcon$(OFILE)\
+			$(MTOBJODIR)/js_cryptkeyset$(OFILE)\
+			$(MTOBJODIR)/js_file$(OFILE)\
+			$(MTOBJODIR)/js_file_area$(OFILE)\
+			$(MTOBJODIR)/js_global$(OFILE)\
+			$(MTOBJODIR)/js_internal$(OFILE)\
+			$(MTOBJODIR)/js_msg_area$(OFILE)\
+			$(MTOBJODIR)/js_msgbase$(OFILE)\
+			$(MTOBJODIR)/js_filebase$(OFILE)\
+			$(MTOBJODIR)/js_queue$(OFILE)\
+			$(MTOBJODIR)/js_request$(OFILE)\
+			$(MTOBJODIR)/js_rtpool$(OFILE)\
+			$(MTOBJODIR)/js_server$(OFILE)\
+			$(MTOBJODIR)/js_socket$(OFILE)\
+			$(MTOBJODIR)/js_sprintf$(OFILE)\
+			$(MTOBJODIR)/js_system$(OFILE)\
+			$(MTOBJODIR)/js_user$(OFILE)\
+			$(MTOBJODIR)/js_xtrn_area$(OFILE)\
+			$(MTOBJODIR)/listfile$(OFILE)\
+			$(MTOBJODIR)/logfile$(OFILE)\
+			$(MTOBJODIR)/login$(OFILE)\
+			$(MTOBJODIR)/logon$(OFILE)\
+			$(MTOBJODIR)/logout$(OFILE)\
+			$(MTOBJODIR)/mail$(OFILE)\
+			$(MTOBJODIR)/main$(OFILE)\
+			$(MTOBJODIR)/msg_id$(OFILE)\
+			$(MTOBJODIR)/msgdate$(OFILE)\
+			$(MTOBJODIR)/msgtoqwk$(OFILE)\
+			$(MTOBJODIR)/netmail$(OFILE)\
+			$(MTOBJODIR)/newuser$(OFILE)\
+			$(MTOBJODIR)/pack_qwk$(OFILE)\
+			$(MTOBJODIR)/pack_rep$(OFILE)\
+			$(MTOBJODIR)/postmsg$(OFILE)\
+			$(MTOBJODIR)/prntfile$(OFILE)\
+			$(MTOBJODIR)/putmsg$(OFILE)\
+			$(MTOBJODIR)/putnode$(OFILE)\
+			$(MTOBJODIR)/qwk$(OFILE)\
+			$(MTOBJODIR)/qwktomsg$(OFILE)\
+			$(MTOBJODIR)/readmail$(OFILE)\
+			$(MTOBJODIR)/readmsgs$(OFILE)\
+			$(MTOBJODIR)/ringbuf$(OFILE)\
+			$(MTOBJODIR)/sauce$(OFILE)\
+			$(MTOBJODIR)/scandirs$(OFILE)\
+			$(MTOBJODIR)/scansubs$(OFILE)\
+			$(MTOBJODIR)/scfgsave$(OFILE)\
+			$(MTOBJODIR)/sockopts$(OFILE)\
+			$(MTOBJODIR)/str$(OFILE)\
+			$(MTOBJODIR)/telgate$(OFILE)\
+			$(MTOBJODIR)/telnet$(OFILE)\
+			$(MTOBJODIR)/text_sec$(OFILE)\
+			$(MTOBJODIR)/tmp_xfer$(OFILE)\
+			$(MTOBJODIR)/un_qwk$(OFILE)\
+			$(MTOBJODIR)/un_rep$(OFILE)\
+			$(MTOBJODIR)/upload$(OFILE)\
+			$(MTOBJODIR)/userdat$(OFILE)\
+			$(MTOBJODIR)/useredit$(OFILE)\
+			$(MTOBJODIR)/viewfile$(OFILE)\
+			$(MTOBJODIR)/wordwrap$(OFILE)\
+			$(MTOBJODIR)/writemsg$(OFILE)\
+			$(MTOBJODIR)/xtrn$(OFILE)\
+			$(MTOBJODIR)/xtrn_sec$(OFILE)\
+			$(MTOBJODIR)/ver$(OFILE)\
+			$(MTOBJODIR)/ssl$(OFILE)
 
 # Must add new additions to MONO_OBJS too!
-CON_OBJS	= $(MTOBJODIR)$(DIRSEP)sbbscon$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)sbbs_status$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)sbbs_ini$(OFILE)
+CON_OBJS	= $(MTOBJODIR)/sbbscon$(OFILE) \
+			$(MTOBJODIR)/sbbs_status$(OFILE) \
+			$(MTOBJODIR)/sbbs_ini$(OFILE)
 
 # Must add new additions to MONO_OBJS too!
-FTP_OBJS	= $(MTOBJODIR)$(DIRSEP)ftpsrvr$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)nopen$(OFILE)
+FTP_OBJS	= $(MTOBJODIR)/ftpsrvr$(OFILE) \
+			$(MTOBJODIR)/nopen$(OFILE)
 
 # Must add new additions to MONO_OBJS too!
-MAIL_OBJS	= $(MTOBJODIR)$(DIRSEP)mailsrvr$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)mxlookup$(OFILE) \
- 		  	$(MTOBJODIR)$(DIRSEP)mime$(OFILE) \
- 		  	$(MTOBJODIR)$(DIRSEP)nopen$(OFILE) \
- 		  	$(MTOBJODIR)$(DIRSEP)ars$(OFILE)
+MAIL_OBJS	= $(MTOBJODIR)/mailsrvr$(OFILE) \
+			$(MTOBJODIR)/mxlookup$(OFILE) \
+ 		  	$(MTOBJODIR)/mime$(OFILE) \
+ 		  	$(MTOBJODIR)/nopen$(OFILE) \
+ 		  	$(MTOBJODIR)/ars$(OFILE)
 
 # Must add new additions to MONO_OBJS too!
-WEB_OBJS	= $(MTOBJODIR)$(DIRSEP)websrvr$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)ars$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)ringbuf$(OFILE)
+WEB_OBJS	= $(MTOBJODIR)/websrvr$(OFILE) \
+			$(MTOBJODIR)/ars$(OFILE) \
+			$(MTOBJODIR)/ringbuf$(OFILE)
 
 # Must add new additions to MONO_OBJS too!
-SERVICE_OBJS	= $(MTOBJODIR)$(DIRSEP)services$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)sbbs_ini$(OFILE)
+SERVICE_OBJS	= $(MTOBJODIR)/services$(OFILE) \
+			$(MTOBJODIR)/sbbs_ini$(OFILE)
 
 MONO_OBJS	= \
-			$(MTOBJODIR)$(DIRSEP)ftpsrvr$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)mailsrvr$(OFILE) \
- 		  	$(MTOBJODIR)$(DIRSEP)mime$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)mxlookup$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)sbbs_ini$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)sbbscon$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)services$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)websrvr$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)ssl$(OFILE)
+			$(MTOBJODIR)/ftpsrvr$(OFILE) \
+			$(MTOBJODIR)/mailsrvr$(OFILE) \
+ 		  	$(MTOBJODIR)/mime$(OFILE) \
+			$(MTOBJODIR)/mxlookup$(OFILE) \
+			$(MTOBJODIR)/sbbs_ini$(OFILE) \
+			$(MTOBJODIR)/sbbscon$(OFILE) \
+			$(MTOBJODIR)/services$(OFILE) \
+			$(MTOBJODIR)/websrvr$(OFILE) \
+			$(MTOBJODIR)/ssl$(OFILE)
 
 BAJA_OBJS = \
-			$(OBJODIR)$(DIRSEP)baja$(OFILE) \
-			$(OBJODIR)$(DIRSEP)ars$(OFILE)
+			$(OBJODIR)/baja$(OFILE) \
+			$(OBJODIR)/ars$(OFILE)
 
 UNBAJA_OBJS = \
-			$(OBJODIR)$(DIRSEP)unbaja$(OFILE)
+			$(OBJODIR)/unbaja$(OFILE)
 
-NODE_OBJS = $(OBJODIR)$(DIRSEP)node$(OFILE)
+NODE_OBJS = $(OBJODIR)/node$(OFILE)
 
 FIXSMB_OBJS = \
-			$(OBJODIR)$(DIRSEP)fixsmb$(OFILE) \
-			$(OBJODIR)$(DIRSEP)str_util$(OFILE)
+			$(OBJODIR)/fixsmb$(OFILE) \
+			$(OBJODIR)/str_util$(OFILE)
 
 CHKSMB_OBJS = \
-			$(OBJODIR)$(DIRSEP)chksmb$(OFILE)
+			$(OBJODIR)/chksmb$(OFILE)
 
 SMBUTIL_OBJS = \
-			$(OBJODIR)$(DIRSEP)smbutil$(OFILE) \
-			$(OBJODIR)$(DIRSEP)str_util$(OFILE)
+			$(OBJODIR)/smbutil$(OFILE) \
+			$(OBJODIR)/str_util$(OFILE)
 
 SBBSECHO_OBJS = 	$(LOAD_CFG_OBJS) \
-			$(OBJODIR)$(DIRSEP)sbbsecho$(OFILE) \
-			$(OBJODIR)$(DIRSEP)date_str$(OFILE) \
-			$(OBJODIR)$(DIRSEP)scfgsave$(OFILE) \
-			$(OBJODIR)$(DIRSEP)dat_rec$(OFILE) \
-			$(OBJODIR)$(DIRSEP)filedat$(OFILE) \
-			$(OBJODIR)$(DIRSEP)userdat$(OFILE) \
-			$(OBJODIR)$(DIRSEP)rechocfg$(OFILE) \
-			$(OBJODIR)$(DIRSEP)msg_id$(OFILE) \
-			$(OBJODIR)$(DIRSEP)msgdate$(OFILE) \
-			$(OBJODIR)$(DIRSEP)getmail$(OFILE) \
-			$(OBJODIR)$(DIRSEP)sauce$(OFILE) \
+			$(OBJODIR)/sbbsecho$(OFILE) \
+			$(OBJODIR)/date_str$(OFILE) \
+			$(OBJODIR)/scfgsave$(OFILE) \
+			$(OBJODIR)/dat_rec$(OFILE) \
+			$(OBJODIR)/filedat$(OFILE) \
+			$(OBJODIR)/userdat$(OFILE) \
+			$(OBJODIR)/rechocfg$(OFILE) \
+			$(OBJODIR)/msg_id$(OFILE) \
+			$(OBJODIR)/msgdate$(OFILE) \
+			$(OBJODIR)/getmail$(OFILE) \
+			$(OBJODIR)/sauce$(OFILE) \
 			$(SMB_OBJS)
 
 ECHOCFG_OBJS = \
-			$(MTOBJODIR)$(DIRSEP)echocfg$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)rechocfg$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)str_util$(OFILE) \
+			$(MTOBJODIR)/echocfg$(OFILE) \
+			$(MTOBJODIR)/rechocfg$(OFILE) \
+			$(MTOBJODIR)/str_util$(OFILE) \
 			$(UIFC_OBJS) \
-			$(MTOBJODIR)$(DIRSEP)nopen$(OFILE)
+			$(MTOBJODIR)/nopen$(OFILE)
 
 ADDFILES_OBJS = 	$(LOAD_CFG_OBJS) \
-			$(OBJODIR)$(DIRSEP)addfiles$(OFILE) \
-			$(OBJODIR)$(DIRSEP)date_str$(OFILE) \
-			$(OBJODIR)$(DIRSEP)dat_rec$(OFILE) \
-			$(OBJODIR)$(DIRSEP)userdat$(OFILE) \
-			$(OBJODIR)$(DIRSEP)msgdate$(OFILE) \
-			$(OBJODIR)$(DIRSEP)filedat$(OFILE) \
-			$(OBJODIR)$(DIRSEP)sauce$(OFILE)
+			$(OBJODIR)/addfiles$(OFILE) \
+			$(OBJODIR)/date_str$(OFILE) \
+			$(OBJODIR)/dat_rec$(OFILE) \
+			$(OBJODIR)/userdat$(OFILE) \
+			$(OBJODIR)/msgdate$(OFILE) \
+			$(OBJODIR)/filedat$(OFILE) \
+			$(OBJODIR)/sauce$(OFILE)
 
 FILELIST_OBJS = 	$(LOAD_CFG_OBJS) \
-			$(OBJODIR)$(DIRSEP)filelist$(OFILE) \
-			$(OBJODIR)$(DIRSEP)date_str$(OFILE) \
-			$(OBJODIR)$(DIRSEP)dat_rec$(OFILE) \
-			$(OBJODIR)$(DIRSEP)filedat$(OFILE) \
-			$(OBJODIR)$(DIRSEP)sauce$(OFILE) \
-			$(OBJODIR)$(DIRSEP)userdat$(OFILE)
+			$(OBJODIR)/filelist$(OFILE) \
+			$(OBJODIR)/date_str$(OFILE) \
+			$(OBJODIR)/dat_rec$(OFILE) \
+			$(OBJODIR)/filedat$(OFILE) \
+			$(OBJODIR)/sauce$(OFILE) \
+			$(OBJODIR)/userdat$(OFILE)
 
 MAKEUSER_OBJS = 	$(LOAD_CFG_OBJS) \
-			$(OBJODIR)$(DIRSEP)makeuser$(OFILE) \
-			$(OBJODIR)$(DIRSEP)date_str$(OFILE) \
-			$(OBJODIR)$(DIRSEP)dat_rec$(OFILE) \
-			$(OBJODIR)$(DIRSEP)userdat$(OFILE) \
-			$(OBJODIR)$(DIRSEP)msgdate$(OFILE)
+			$(OBJODIR)/makeuser$(OFILE) \
+			$(OBJODIR)/date_str$(OFILE) \
+			$(OBJODIR)/dat_rec$(OFILE) \
+			$(OBJODIR)/userdat$(OFILE) \
+			$(OBJODIR)/msgdate$(OFILE)
 
 JSEXEC_OBJS = \
-			$(MTOBJODIR)$(DIRSEP)jsexec$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_uifc$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_conio$(OFILE)
+			$(MTOBJODIR)/jsexec$(OFILE) \
+			$(MTOBJODIR)/js_uifc$(OFILE) \
+			$(MTOBJODIR)/js_conio$(OFILE)
 
 JSDOOR_OBJS = 		$(LOAD_CFG_OBJS) \
-			$(MTOBJODIR)$(DIRSEP)date_str$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)dat_rec$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)jsdoor$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)jsdebug$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_archive$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_uifc$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_conio$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_request$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_socket$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)comio$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)js_client$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_com$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_cryptcon$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_cryptcert$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_cryptkeyset$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_global$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_rtpool$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_sprintf$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_file$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_internal$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_queue$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)js_server$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)sockopts$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)ssl$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgsave$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)wordwrap$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)userdat$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)msgdate$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)filedat$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)sauce$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)getstats$(OFILE)\
+			$(MTOBJODIR)/date_str$(OFILE) \
+			$(MTOBJODIR)/dat_rec$(OFILE) \
+			$(MTOBJODIR)/jsdoor$(OFILE) \
+			$(MTOBJODIR)/jsdebug$(OFILE) \
+			$(MTOBJODIR)/js_archive$(OFILE) \
+			$(MTOBJODIR)/js_uifc$(OFILE) \
+			$(MTOBJODIR)/js_conio$(OFILE) \
+			$(MTOBJODIR)/js_request$(OFILE) \
+			$(MTOBJODIR)/js_socket$(OFILE) \
+			$(MTOBJODIR)/comio$(OFILE)\
+			$(MTOBJODIR)/js_client$(OFILE) \
+			$(MTOBJODIR)/js_com$(OFILE) \
+			$(MTOBJODIR)/js_cryptcon$(OFILE) \
+			$(MTOBJODIR)/js_cryptcert$(OFILE) \
+			$(MTOBJODIR)/js_cryptkeyset$(OFILE) \
+			$(MTOBJODIR)/js_global$(OFILE) \
+			$(MTOBJODIR)/js_rtpool$(OFILE) \
+			$(MTOBJODIR)/js_sprintf$(OFILE) \
+			$(MTOBJODIR)/js_file$(OFILE) \
+			$(MTOBJODIR)/js_internal$(OFILE) \
+			$(MTOBJODIR)/js_queue$(OFILE) \
+			$(MTOBJODIR)/js_server$(OFILE) \
+			$(MTOBJODIR)/sockopts$(OFILE)\
+			$(MTOBJODIR)/ssl$(OFILE)\
+			$(MTOBJODIR)/scfgsave$(OFILE)\
+			$(MTOBJODIR)/wordwrap$(OFILE)\
+			$(MTOBJODIR)/userdat$(OFILE)\
+			$(MTOBJODIR)/msgdate$(OFILE)\
+			$(MTOBJODIR)/filedat$(OFILE)\
+			$(MTOBJODIR)/sauce$(OFILE)\
+			$(MTOBJODIR)/getstats$(OFILE)\
 
 SEXYZ_OBJS = \
-			$(MTOBJODIR)$(DIRSEP)sexyz$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)xmodem$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)zmodem$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)ringbuf$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)nopen$(OFILE) \
-			$(MTOBJODIR)$(DIRSEP)telnet$(OFILE)
+			$(MTOBJODIR)/sexyz$(OFILE) \
+			$(MTOBJODIR)/xmodem$(OFILE) \
+			$(MTOBJODIR)/zmodem$(OFILE) \
+			$(MTOBJODIR)/ringbuf$(OFILE) \
+			$(MTOBJODIR)/nopen$(OFILE) \
+			$(MTOBJODIR)/telnet$(OFILE)
 
 QWKNODES_OBJS = \
-			$(OBJODIR)$(DIRSEP)qwknodes$(OFILE) \
-			$(OBJODIR)$(DIRSEP)date_str$(OFILE)
+			$(OBJODIR)/qwknodes$(OFILE) \
+			$(OBJODIR)/date_str$(OFILE)
 
 SLOG_OBJS = \
-			$(OBJODIR)$(DIRSEP)slog$(OFILE) \
-			$(OBJODIR)$(DIRSEP)nopen$(OFILE)
+			$(OBJODIR)/slog$(OFILE) \
+			$(OBJODIR)/nopen$(OFILE)
 
 ALLUSERS_OBJS = \
-			$(OBJODIR)$(DIRSEP)allusers$(OFILE) \
-			$(OBJODIR)$(DIRSEP)str_util$(OFILE) \
-			$(OBJODIR)$(DIRSEP)ars$(OFILE)
+			$(OBJODIR)/allusers$(OFILE) \
+			$(OBJODIR)/str_util$(OFILE) \
+			$(OBJODIR)/ars$(OFILE)
 
 DELFILES_OBJS = 	$(LOAD_CFG_OBJS) \
-			$(OBJODIR)$(DIRSEP)delfiles$(OFILE) \
-			$(OBJODIR)$(DIRSEP)filedat$(OFILE) \
-			$(OBJODIR)$(DIRSEP)sauce$(OFILE) \
-			$(OBJODIR)$(DIRSEP)userdat$(OFILE) \
-			$(OBJODIR)$(DIRSEP)dat_rec$(OFILE)
+			$(OBJODIR)/delfiles$(OFILE) \
+			$(OBJODIR)/filedat$(OFILE) \
+			$(OBJODIR)/sauce$(OFILE) \
+			$(OBJODIR)/userdat$(OFILE) \
+			$(OBJODIR)/dat_rec$(OFILE)
 
 DUPEFIND_OBJS = 	$(LOAD_CFG_OBJS) \
-			$(OBJODIR)$(DIRSEP)dupefind$(OFILE)
+			$(OBJODIR)/dupefind$(OFILE)
 
 SMBACTIV_OBJS = 	$(LOAD_CFG_OBJS) \
-			$(OBJODIR)$(DIRSEP)smbactiv$(OFILE)
+			$(OBJODIR)/smbactiv$(OFILE)
 
 DSTSEDIT_OBJS = \
-			$(OBJODIR)$(DIRSEP)dstsedit$(OFILE)\
-			$(OBJODIR)$(DIRSEP)date_str$(OFILE) \
-			$(OBJODIR)$(DIRSEP)str_util$(OFILE) \
-			$(OBJODIR)$(DIRSEP)nopen$(OFILE)
+			$(OBJODIR)/dstsedit$(OFILE)\
+			$(OBJODIR)/date_str$(OFILE) \
+			$(OBJODIR)/str_util$(OFILE) \
+			$(OBJODIR)/nopen$(OFILE)
 
 READSAUCE_OBJS = \
-			$(OBJODIR)$(DIRSEP)readsauce$(OFILE)
+			$(OBJODIR)/readsauce$(OFILE)
 
 SHOWSTAT_OBJS = \
-			$(OBJODIR)$(DIRSEP)showstat$(OFILE)
+			$(OBJODIR)/showstat$(OFILE)
 
-PKTDUMP_OBJS =		$(OBJODIR)$(DIRSEP)pktdump$(OFILE)
+PKTDUMP_OBJS =		$(OBJODIR)/pktdump$(OFILE)
 
-FMSGDUMP_OBJS = 	$(OBJODIR)$(DIRSEP)fmsgdump$(OFILE)
+FMSGDUMP_OBJS = 	$(OBJODIR)/fmsgdump$(OFILE)
 
 UPGRADE_TO_V319_OBJS  =	$(LOAD_CFG_OBJS) \
-                        $(OBJODIR)$(DIRSEP)filedat$(OFILE) \
-                        $(OBJODIR)$(DIRSEP)sauce$(OFILE) \
-                        $(OBJODIR)$(DIRSEP)userdat$(OFILE) \
-                        $(OBJODIR)$(DIRSEP)dat_rec$(OFILE) \
+                        $(OBJODIR)/filedat$(OFILE) \
+                        $(OBJODIR)/sauce$(OFILE) \
+                        $(OBJODIR)/userdat$(OFILE) \
+                        $(OBJODIR)/dat_rec$(OFILE) \
 			$(OBJODIR)/upgrade_to_v319$(OFILE)
 
 LOAD_CFG_OBJS = \
-			$(OBJODIR)$(DIRSEP)load_cfg$(OFILE) \
-			$(OBJODIR)$(DIRSEP)readtext$(OFILE) \
-			$(OBJODIR)$(DIRSEP)text_defaults$(OFILE) \
-			$(OBJODIR)$(DIRSEP)scfglib1$(OFILE) \
-			$(OBJODIR)$(DIRSEP)scfglib2$(OFILE) \
-			$(OBJODIR)$(DIRSEP)str_util$(OFILE) \
-			$(OBJODIR)$(DIRSEP)ars$(OFILE) \
-			$(OBJODIR)$(DIRSEP)nopen$(OFILE)
+			$(OBJODIR)/load_cfg$(OFILE) \
+			$(OBJODIR)/readtext$(OFILE) \
+			$(OBJODIR)/text_defaults$(OFILE) \
+			$(OBJODIR)/scfglib1$(OFILE) \
+			$(OBJODIR)/scfglib2$(OFILE) \
+			$(OBJODIR)/str_util$(OFILE) \
+			$(OBJODIR)/ars$(OFILE) \
+			$(OBJODIR)/nopen$(OFILE)
 
diff --git a/src/sbbs3/scfg/objects.mk b/src/sbbs3/scfg/objects.mk
index 9f15efc62c4f9fb5af7772586f1409ddf0f042b9..23099b67a5637826e98c0aa90d400c7a9d3e5f0c 100644
--- a/src/sbbs3/scfg/objects.mk
+++ b/src/sbbs3/scfg/objects.mk
@@ -2,31 +2,28 @@
 
 # Make 'include file' listing object files for Synchronet SCFG
 
-# $Id: objects.mk,v 1.18 2020/05/14 17:57:42 rswindell Exp $
+# MTOBJODIR and OFILE must be pre-defined
 
-# MTLIBODIR, SBBSMTLIBODIR, DIRSEP, and OFILE must be pre-defined
-
-
-OBJS	=	$(MTOBJODIR)$(DIRSEP)scfg$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgxtrn$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgmsg$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgnet$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgnode$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgsub$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgsys$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgxfr1$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgxfr2$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)scfgchat$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)scfgsave$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)scfglib1$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)scfglib2$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)load_cfg$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)readtext$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)text_defaults$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)ars$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)nopen$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)dat_rec$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)userdat$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)msgdate$(OFILE)\
-            $(MTOBJODIR)$(DIRSEP)date_str$(OFILE)\
-			$(MTOBJODIR)$(DIRSEP)str_util$(OFILE)
+OBJS =	$(MTOBJODIR)/scfg$(OFILE)\
+	$(MTOBJODIR)/scfgxtrn$(OFILE)\
+	$(MTOBJODIR)/scfgmsg$(OFILE)\
+	$(MTOBJODIR)/scfgnet$(OFILE)\
+	$(MTOBJODIR)/scfgnode$(OFILE)\
+	$(MTOBJODIR)/scfgsub$(OFILE)\
+	$(MTOBJODIR)/scfgsys$(OFILE)\
+	$(MTOBJODIR)/scfgxfr1$(OFILE)\
+	$(MTOBJODIR)/scfgxfr2$(OFILE)\
+	$(MTOBJODIR)/scfgchat$(OFILE)\
+	$(MTOBJODIR)/scfgsave$(OFILE)\
+	$(MTOBJODIR)/scfglib1$(OFILE)\
+	$(MTOBJODIR)/scfglib2$(OFILE)\
+	$(MTOBJODIR)/load_cfg$(OFILE)\
+	$(MTOBJODIR)/readtext$(OFILE)\
+	$(MTOBJODIR)/text_defaults$(OFILE)\
+	$(MTOBJODIR)/ars$(OFILE)\
+	$(MTOBJODIR)/nopen$(OFILE)\
+	$(MTOBJODIR)/dat_rec$(OFILE)\
+	$(MTOBJODIR)/userdat$(OFILE)\
+	$(MTOBJODIR)/msgdate$(OFILE)\
+	$(MTOBJODIR)/date_str$(OFILE)\
+	$(MTOBJODIR)/str_util$(OFILE)
diff --git a/src/sbbs3/scfg/targets.mk b/src/sbbs3/scfg/targets.mk
index 6772f021a49978efccd09edf2df8facd059879ac..0a0d9995ded4548ccd64d0eef7eeba77b24e1d22 100644
--- a/src/sbbs3/scfg/targets.mk
+++ b/src/sbbs3/scfg/targets.mk
@@ -2,11 +2,7 @@
 
 # Make 'include file' defining targets for Synchronet SCFG project
 
-# $Id: targets.mk,v 1.11 2020/03/22 21:22:53 rswindell Exp $
-
-# LIBODIR, SLASH, LIBFILE, EXEFILE, and DELETE must be pre-defined
-
-SCFG	=	$(EXEODIR)$(DIRSEP)scfg$(EXEFILE) 
+SCFG	=	$(EXEODIR)/scfg$(EXEFILE)
 
 all:		xpdev-mt \
 		uifc-mt \
diff --git a/src/sbbs3/targets.mk b/src/sbbs3/targets.mk
index 27329c90ae5cdc6e3c1be685348db0479a739901..5af0a204de09ec1b27a0022139414a1c0fe80c6b 100644
--- a/src/sbbs3/targets.mk
+++ b/src/sbbs3/targets.mk
@@ -2,45 +2,43 @@
 
 # Make 'include file' defining targets for Synchronet project
 
-# $Id: targets.mk,v 1.54 2020/05/14 20:32:04 rswindell Exp $
-
-# LIBODIR, EXEODIR, DIRSEP, LIBFILE, EXEFILE, and DELETE must be pre-defined
-
-SBBS		= $(LIBODIR)$(DIRSEP)$(LIBPREFIX)sbbs$(SOFILE)
-FTPSRVR		= $(LIBODIR)$(DIRSEP)$(LIBPREFIX)ftpsrvr$(SOFILE)
-WEBSRVR		= $(LIBODIR)$(DIRSEP)$(LIBPREFIX)websrvr$(SOFILE)
-MAILSRVR	= $(LIBODIR)$(DIRSEP)$(LIBPREFIX)mailsrvr$(SOFILE)
-SERVICES	= $(LIBODIR)$(DIRSEP)$(LIBPREFIX)services$(SOFILE)
-SBBSCON		= $(EXEODIR)$(DIRSEP)sbbs$(EXEFILE)
-SBBSMONO	= $(EXEODIR)$(DIRSEP)sbbsmono$(EXEFILE)
-JSEXEC		= $(EXEODIR)$(DIRSEP)jsexec$(EXEFILE)
-JSDOOR		= $(EXEODIR)$(DIRSEP)jsdoor$(EXEFILE)
-NODE		= $(EXEODIR)$(DIRSEP)node$(EXEFILE)
-BAJA		= $(EXEODIR)$(DIRSEP)baja$(EXEFILE)
-UNBAJA		= $(EXEODIR)$(DIRSEP)unbaja$(EXEFILE)
-FIXSMB		= $(EXEODIR)$(DIRSEP)fixsmb$(EXEFILE)
-CHKSMB		= $(EXEODIR)$(DIRSEP)chksmb$(EXEFILE)
-SMBUTIL		= $(EXEODIR)$(DIRSEP)smbutil$(EXEFILE)
-SBBSECHO	= $(EXEODIR)$(DIRSEP)sbbsecho$(EXEFILE)
-ECHOCFG		= $(EXEODIR)$(DIRSEP)echocfg$(EXEFILE)
-ADDFILES	= $(EXEODIR)$(DIRSEP)addfiles$(EXEFILE)
-FILELIST	= $(EXEODIR)$(DIRSEP)filelist$(EXEFILE)
-MAKEUSER	= $(EXEODIR)$(DIRSEP)makeuser$(EXEFILE)
-ANS2ASC		= $(EXEODIR)$(DIRSEP)ans2asc$(EXEFILE)
-ASC2ANS		= $(EXEODIR)$(DIRSEP)asc2ans$(EXEFILE)
-SEXYZ		= $(EXEODIR)$(DIRSEP)sexyz$(EXEFILE)
-QWKNODES	= $(EXEODIR)$(DIRSEP)qwknodes$(EXEFILE)
-SLOG		= $(EXEODIR)$(DIRSEP)slog$(EXEFILE)
-ALLUSERS	= $(EXEODIR)$(DIRSEP)allusers$(EXEFILE)
-DELFILES	= $(EXEODIR)$(DIRSEP)delfiles$(EXEFILE)
-DUPEFIND	= $(EXEODIR)$(DIRSEP)dupefind$(EXEFILE)
-SMBACTIV	= $(EXEODIR)$(DIRSEP)smbactiv$(EXEFILE)
-DSTSEDIT	= $(EXEODIR)$(DIRSEP)dstsedit$(EXEFILE)
-READSAUCE	= $(EXEODIR)$(DIRSEP)readsauce$(EXEFILE)
-SHOWSTAT	= $(EXEODIR)$(DIRSEP)showstat$(EXEFILE)
-PKTDUMP		= $(EXEODIR)$(DIRSEP)pktdump$(EXEFILE)
-FMSGDUMP	= $(EXEODIR)$(DIRSEP)fmsgdump$(EXEFILE)
-UPGRADE_TO_V319 = $(EXEODIR)$(DIRSEP)upgrade_to_v319$(EXEFILE)
+# LIBODIR, EXEODIR, LIBFILE, EXEFILE, and DELETE must be pre-defined
+
+SBBS		= $(LIBODIR)/$(LIBPREFIX)sbbs$(SOFILE)
+FTPSRVR		= $(LIBODIR)/$(LIBPREFIX)ftpsrvr$(SOFILE)
+WEBSRVR		= $(LIBODIR)/$(LIBPREFIX)websrvr$(SOFILE)
+MAILSRVR	= $(LIBODIR)/$(LIBPREFIX)mailsrvr$(SOFILE)
+SERVICES	= $(LIBODIR)/$(LIBPREFIX)services$(SOFILE)
+SBBSCON		= $(EXEODIR)/sbbs$(EXEFILE)
+SBBSMONO	= $(EXEODIR)/sbbsmono$(EXEFILE)
+JSEXEC		= $(EXEODIR)/jsexec$(EXEFILE)
+JSDOOR		= $(EXEODIR)/jsdoor$(EXEFILE)
+NODE		= $(EXEODIR)/node$(EXEFILE)
+BAJA		= $(EXEODIR)/baja$(EXEFILE)
+UNBAJA		= $(EXEODIR)/unbaja$(EXEFILE)
+FIXSMB		= $(EXEODIR)/fixsmb$(EXEFILE)
+CHKSMB		= $(EXEODIR)/chksmb$(EXEFILE)
+SMBUTIL		= $(EXEODIR)/smbutil$(EXEFILE)
+SBBSECHO	= $(EXEODIR)/sbbsecho$(EXEFILE)
+ECHOCFG		= $(EXEODIR)/echocfg$(EXEFILE)
+ADDFILES	= $(EXEODIR)/addfiles$(EXEFILE)
+FILELIST	= $(EXEODIR)/filelist$(EXEFILE)
+MAKEUSER	= $(EXEODIR)/makeuser$(EXEFILE)
+ANS2ASC		= $(EXEODIR)/ans2asc$(EXEFILE)
+ASC2ANS		= $(EXEODIR)/asc2ans$(EXEFILE)
+SEXYZ		= $(EXEODIR)/sexyz$(EXEFILE)
+QWKNODES	= $(EXEODIR)/qwknodes$(EXEFILE)
+SLOG		= $(EXEODIR)/slog$(EXEFILE)
+ALLUSERS	= $(EXEODIR)/allusers$(EXEFILE)
+DELFILES	= $(EXEODIR)/delfiles$(EXEFILE)
+DUPEFIND	= $(EXEODIR)/dupefind$(EXEFILE)
+SMBACTIV	= $(EXEODIR)/smbactiv$(EXEFILE)
+DSTSEDIT	= $(EXEODIR)/dstsedit$(EXEFILE)
+READSAUCE	= $(EXEODIR)/readsauce$(EXEFILE)
+SHOWSTAT	= $(EXEODIR)/showstat$(EXEFILE)
+PKTDUMP		= $(EXEODIR)/pktdump$(EXEFILE)
+FMSGDUMP	= $(EXEODIR)/fmsgdump$(EXEFILE)
+UPGRADE_TO_V319 = $(EXEODIR)/upgrade_to_v319$(EXEFILE)
 
 UTILS		= $(FIXSMB) $(CHKSMB) \
 			  $(SMBUTIL) $(BAJA) $(NODE) \