Windows: Direct IO Support for Service
[openafs.git] / src / WINNT / afsd / NTMakefile
index e45f16c..a234022 100644 (file)
@@ -1,11 +1,14 @@
 # Copyright 2000, International Business Machines Corporation and others.
 # All Rights Reserved.
-# 
+#
 # This software has been released under the terms of the IBM Public
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) /D"_AFXDLL"  -I..\kfw\inc\loadfuncs -I..\kfw\inc\krb5 -I..\kfw\inc\leash
+AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) /D"_AFXDLL" /DSMB_UNICODE \
+       -I$(DESTDIR)\include\afs -I$(DESTDIR)\include\rx \
+        -I..\afsrdr\common -I..\afsrdr\user -I$(HEIMINC)
+
 AFSDEV_NETGUI = 1
 RELDIR=WINNT\afsd
 !INCLUDE ..\..\config\NTMakefile.$(SYS_NAME)
@@ -27,12 +30,14 @@ INCFILES =\
        $(INCFILEDIR)\cm_cell.h \
        $(INCFILEDIR)\cm_config.h \
        $(INCFILEDIR)\cm_conn.h \
+       $(INCFILEDIR)\cm_error.h \
        $(INCFILEDIR)\cm_ioctl.h \
        $(INCFILEDIR)\cm_scache.h \
        $(INCFILEDIR)\cm_server.h \
        $(INCFILEDIR)\cm_user.h \
        $(INCFILEDIR)\cm_dns.h \
        $(INCFILEDIR)\cm_utils.h \
+        $(INCFILEDIR)\fs_acl.h \
        $(INCFILEDIR)\fs_utils.h \
        $(INCFILEDIR)\krb.h \
        $(INCFILEDIR)\krb_prot.h \
@@ -41,6 +46,7 @@ INCFILES =\
        $(INCFILEDIR)\smb3.h \
        $(INCFILEDIR)\smb_iocons.h \
        $(INCFILEDIR)\smb_ioctl.h \
+       $(INCFILEDIR)\smb_rpc.h \
        $(INCFILEDIR)\afsrpc.h \
 !IFDEF OSICRASH
        $(INCFILEDIR)\afsdcrash.h \
@@ -54,6 +60,7 @@ INCFILES =\
         $(INCFILEDIR)\cm_volstat.h \
        $(INCFILEDIR)\cm_dcache.h \
        $(INCFILEDIR)\cm_access.h \
+       $(INCFILEDIR)\cm_eacces.h \
        $(INCFILEDIR)\cm_vnodeops.h \
        $(INCFILEDIR)\cm_dir.h \
        $(INCFILEDIR)\cm_utils.h \
@@ -63,16 +70,24 @@ INCFILES =\
        $(INCFILEDIR)\cm_buf.h \
        $(INCFILEDIR)\cm_freelance.h \
         $(INCFILEDIR)\cm_memmap.h \
+       $(INCFILEDIR)\cm_performance.h \
+        $(INCFILEDIR)\cm_nls.h \
         $(INCFILEDIR)\afsd_eventlog.h \
         $(INCFILEDIR)\afsd_eventmessages.h \
         $(INCFILEDIR)\afskfw.h \
-        $(INCFILEDIR)\afsicf.h
+        $(INCFILEDIR)\afsicf.h \
+#      $(INCFILEDIR)\krbcompat_delayload.h
+
+
+$(INCFILEDIR)\krbcompat_delayload.h: $(HEIMINC)\krbcompat_delayload.h
+        $(COPY) $< $@
 
 IDLFILES =\
        afsrpc.h $(OUT)\afsrpc_c.obj
 
 CONFOBJS=$(OUT)\cm_config.obj \
-         $(OUT)\cm_dns.obj
+         $(OUT)\cm_dns.obj \
+         $(OUT)\cm_nls.obj
 
 $(CONFOBJS):
 
@@ -88,15 +103,20 @@ $(RXOBJS): $(RX)\$$(@B).c
 $(IDLFILES):afsrpc.idl
        midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) /app_config $?
 
-RPCOBJS = $(OUT)\ifs_rpc.obj
+ms-srvsvc.h ms-srvsvc_s.c: ms-srvsvc.idl
+       midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) /Os ms-srvsvc.idl
+
+ms-wkssvc.h ms-wkssvc_s.c: ms-wkssvc.idl
+       midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) /Os ms-wkssvc.idl
 
-$(RPCOBJS):..\afsrdr\ifs_rpc.c
-       $(C2OBJ) ..\afsrdr\ifs_rpc.c
+$(OUT)\ms-srvsvc_s.obj: ms-srvsvc_s.c
+       $(C2OBJ) /FImsrpc.h /Fo$@ $**
+
+$(OUT)\ms-wkssvc_s.obj: ms-wkssvc_s.c
+       $(C2OBJ) /FImsrpc.h /Fo$@ $**
 
 AFSDOBJS=\
-        $(OUT)\ifs_rpc.obj \
         $(OUT)\rawops.obj \
-        $(OUT)\afsdifs.obj \
        $(OUT)\afsd_init.obj \
         $(OUT)\cm_btree.obj \
        $(OUT)\cm_cell.obj \
@@ -109,7 +129,9 @@ AFSDOBJS=\
        $(OUT)\cm_buf.obj \
        $(OUT)\cm_scache.obj \
        $(OUT)\cm_dcache.obj \
+        $(OUT)\cm_direct.obj \
        $(OUT)\cm_access.obj \
+       $(OUT)\cm_eacces.obj \
        $(OUT)\cm_callback.obj \
        $(OUT)\cm_vnodeops.obj \
        $(OUT)\cm_dir.obj \
@@ -118,12 +140,16 @@ AFSDOBJS=\
        $(OUT)\smb.obj \
        $(OUT)\smb3.obj \
        $(OUT)\smb_ioctl.obj \
+       $(OUT)\smb_rpc.obj \
+       $(OUT)\msrpc.obj \
        $(OUT)\cm_ioctl.obj \
        $(OUT)\cm_daemon.obj \
        $(OUT)\cm_aclent.obj \
        $(OUT)\cm_dnlc.obj \
        $(OUT)\cm_rpc.obj \
         $(OUT)\cm_memmap.obj \
+        $(OUT)\cm_performance.obj \
+        $(OUT)\cm_nls.obj \
        $(OUT)\afsrpc_s.obj \
 !IFDEF OSICRASH
        $(OUT)\afsdcrash.obj \
@@ -131,30 +157,62 @@ AFSDOBJS=\
         $(OUT)\cm_freelance.obj \
         $(OUT)\afsd_eventlog.obj \
         $(OUT)\afsd_flushvol.obj \
-        $(OUT)\afsicf.obj
+        $(OUT)\afsicf.obj \
+       $(OUT)\ms-srvsvc_s.obj \
+       $(OUT)\ms-wkssvc_s.obj \
+       $(OUT)\rpc_wkssvc.obj \
+       $(OUT)\rpc_srvsvc.obj \
+        $(OUT)\AFS_component_version_number.obj \
+       $(OUT)\RDRInit.obj \
+       $(OUT)\RDRFunction.obj \
+        $(OUT)\RDRIoctl.obj \
+        $(OUT)\RDRPipe.obj
 
 $(AFSDOBJS):
 
+$(OUT)\RDRInit.obj: ..\afsrdr\user\RDRInit.cpp ..\afsrdr\user\RDRPrototypes.h ..\afsrdr\user\RDRIoctl.h
+       $(CPP2OBJ) ..\afsrdr\user\RDRInit.cpp
+
+$(OUT)\RDRFunction.obj: ..\afsrdr\user\RDRFunction.c ..\afsrdr\user\RDRPrototypes.h ..\afsrdr\user\RDRIoctl.h
+       $(C2OBJ)  ..\afsrdr\user\RDRFunction.c
+
+$(OUT)\RDRIoctl.obj: ..\afsrdr\user\RDRIoctl.c ..\afsrdr\user\RDRIoctl.h
+       $(C2OBJ)  ..\afsrdr\user\RDRIoctl.c
+
+$(OUT)\RDRPipe.obj: ..\afsrdr\user\RDRPipe.c ..\afsrdr\user\RDRPipe.h
+       $(C2OBJ)  ..\afsrdr\user\RDRPipe.c
+
 $(OUT)\cm_conn.obj: cm_conn.c
        $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
 
-FSOBJS=$(OUT)\fs.obj $(OUT)\fs_utils.obj
+FSOBJS=$(OUT)\fs.obj \
+       $(OUT)\fs_acl.obj \
+       $(OUT)\fs_utils.obj \
+       $(OUT)\cm_nls.obj \
+       $(OUT)\parsemode.obj
 
 CMDBGOBJS=$(OUT)\cmdebug.obj
 
 $(CMDBGOBJS): $(AFSROOT)\src\venus\cmdebug.c
        $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
 
-SLOBJS=$(OUT)\symlink.obj $(OUT)\fs_utils.obj
+AFSIOOBJS=$(OUT)\afsio.obj
+
+$(AFSIOOBJS): $(AFSROOT)\src\venus\afsio.c
+       $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
+
+SLOBJS= $(OUT)\symlink.obj \
+        $(OUT)\fs_utils.obj \
+        $(OUT)\cm_nls.obj
 
 ILIBDIR = $(DESTDIR)\lib
 
-#                                                    
-# Rules for message compiler info for logging events 
-#                                                    
-$(INCFILEDIR)\afsd_eventmessages.h:  afsd_eventmessages.mc         
-       mc afsd_eventmessages.mc                           
-                                                     
+#
+# Rules for message compiler info for logging events
+#
+$(INCFILEDIR)\afsd_eventmessages.h:  afsd_eventmessages.mc
+       mc afsd_eventmessages.mc
+
 ############################################################################
 #
 # Flags for linking LOGON DLL'S
@@ -179,21 +237,49 @@ MIDL_FLAGS=/app_config \
 .idl.h:
        midl $(MIDL_FLAGS) $(AFSDEV_AUXMIDLFLAGS) $<
 
+
+AFSD_SDKLIBS =\
+        netapi32.lib \
+        dnsapi.lib \
+        mpr.lib \
+        rpcrt4.lib \
+        user32.lib \
+        Dbghelp.lib \
+        strsafe.lib \
+        mpr.lib \
+        secur32.lib \
+        ole32.lib \
+        oleaut32.lib \
+        iphlpapi.lib \
+        shell32.lib \
+        shlwapi.lib
+
+############################################################################
+# krbcompat_delayload.obj
+
+KCOMPAT_OBJ = $(DESTDIR)\lib\krbcompat_delayload.obj
+
+$(KCOMPAT_OBJ): $(OUT)\krbcompat_delayload.obj
+       copy /y $** $@
+
 ############################################################################
 # libafsconf.dll
 
-CONF_DLLFILE = $(DESTDIR)\root.client\usr\vice\etc\libafsconf.dll
+CONF_DLLFILE = $(DESTDIR)\lib\libafsconf.dll
 
 CONF_DLLLIBS = \
     $(DESTDIR)\lib\afs\afsutil.lib \
-    $(DESTDIR)\lib\afs\afsreg.lib
+    $(DESTDIR)\lib\afs\afsreg.lib \
+    $(DESTDIR)\lib\afsroken.lib
 
 $(CONF_DLLFILE): $(CONFOBJS) $(OUT)\libafsconf.res $(CONF_DLLLIBS)
-       $(DLLGUILINK) -def:libafsconf.def dnsapi.lib mpr.lib shell32.lib
+       $(DLLGUILINK) -def:libafsconf.def  $(AFSD_SDKLIBS)
         $(_VC_MANIFEST_EMBED_DLL)
        $(DLLPREP)
-       $(COPY) $*.lib $(ILIBDIR)
-       $(DEL) $*.lib $*.exp
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
+       $(MAKECYGLIB) --input-def libafsconf.def
+       $(DEL) $*.exp
 
 ############################################################################
 # lanahelper.lib
@@ -213,12 +299,21 @@ $(LANAHELPERLIB): $(LANAHELPERLIB_OBJS)
 
 AFSKFWLIB = $(DESTDIR)\lib\afskfw.lib
 
-AFSKFWLIB_OBJS =\
-      $(OUT)\afskfw.obj
+PTERROBJS=$(OUT)\pterror.obj
+
+$(PTERROBJS): $(AFSROOT)\src\ptserver\pterror.c
+       $(C2OBJ) /Fo$@ $**
+
+KTCERROBJS=$(OUT)\ktc_errors.obj
+
+$(KTCERROBJS): $(AFSROOT)\src\auth\ktc_errors.c
+       $(C2OBJ) /Fo$@ $**
+
+AFSKFWLIB_OBJS = $(OUT)\afskfw.obj
 
 $(AFSKFWLIB_OBJS):
 
-$(AFSKFWLIB): $(AFSKFWLIB_OBJS)
+$(AFSKFWLIB): $(AFSKFWLIB_OBJS) $(PTERROBJS) $(KTCERROBJS)
       $(LIBARCH)
 
 ############################################################################
@@ -229,11 +324,17 @@ LOGON_DLLFILE = $(DESTDIR)\root.client\usr\vice\etc\afslogon.dll
 LOGON_DLLOBJS =\
     $(OUT)\afslogon.obj \
     $(OUT)\logon_ad.obj \
-    $(OUT)\afslogon.res
+    $(OUT)\afslogon.res \
+    $(OUT)\cm_nls.obj  \
+    $(KRBCOMPATRES)
 
 LOGON_DLLLIBS =\
     $(DESTDIR)\lib\afsauthent.lib \
     $(DESTDIR)\lib\libafsconf.lib \
+    $(DESTDIR)\lib\afs\afscom_err.lib \
+    $(DESTDIR)\lib\afs\afsutil.lib \
+    $(DESTDIR)\lib\opr.lib \
+    $(DESTDIR)\lib\afsroken.lib \
     $(LANAHELPERLIB) \
     $(AFSKFWLIB)
 
@@ -248,26 +349,29 @@ LOGON_DLLSDKLIBS =\
        ole32.lib \
        adsiid.lib \
        activeds.lib \
+        rpcrt4.lib \
        user32.lib \
         userenv.lib \
-        shell32.lib
+        shell32.lib \
+       delayimp.lib
 
-$(LOGON_DLLFILE): $(LOGON_DLLOBJS) $(LOGON_DLLLIBS)
-       $(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslogon.def $(LOGON_DLLSDKLIBS)
+$(LOGON_DLLFILE): $(LOGON_DLLOBJS) $(LOGON_DLLLIBS) $(HEIMDEPS)
+       $(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslogon.def $(LOGON_DLLSDKLIBS) $(HEIMLINKOPTS)
         $(_VC_MANIFEST_EMBED_DLL)
        $(DLLPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
        $(COPY) $*.lib $(DESTDIR)\lib
        $(DEL) $*.lib $*.exp
 
 ############################################################################
 # Install target; primary makefile target
 
-install_objs: $(OUT)\cm_dns.obj $(OUT)\cm_config.obj $(LANAHELPERLIB) $(OUT)\afsicf.obj
-     $(COPY) $(OUT)\cm_dns.obj $(DESTDIR)\lib
-     $(COPY) $(OUT)\cm_config.obj $(DESTDIR)\lib
+install_objs: $(CONF_DLLFILE) $(LANAHELPERLIB) $(OUT)\afsicf.obj $(OUT)\krbcompat_delayload.obj
      $(COPY) $(OUT)\afsicf.obj $(DESTDIR)\lib
+     $(COPY) $(OUT)\krbcompat_delayload.obj $(DESTDIR)\lib
 
-install_headers: $(IDLFILES) $(INCFILES)
+install_headers: $(IDLFILES) $(INCFILES) ms-wkssvc.h ms-srvsvc.h
 
 install: install_headers install_objs $(CONF_DLLFILE) \
        $(EXEDIR)\klog.exe \
@@ -279,7 +383,10 @@ install: install_headers install_objs $(CONF_DLLFILE) \
         $(EXEDIR)\afsdacl.exe \
        $(LOGON_DLLFILE) \
        $(EXEDIR)\afsshare.exe \
-       $(DESTDIR)\bin\kpasswd.exe $(EXEDIR)\cmdebug.exe $(EXEDIR)\afscpcc.exe
+       $(DESTDIR)\bin\kpasswd.exe \
+        $(EXEDIR)\cmdebug.exe \
+        $(EXEDIR)\afscpcc.exe \
+        $(EXEDIR)\afsio.exe
 
 install_libutils: install_headers $(CONF_DLLFILE) \
        $(EXEDIR)\klog.exe \
@@ -308,11 +415,13 @@ EXELIBS = \
        $(DESTDIR)\lib\afs\afsvldb.lib \
        $(DESTDIR)\lib\afsubik.lib \
        $(DESTDIR)\lib\afsrxkad.lib \
-       $(DESTDIR)\lib\afsdes.lib \
        $(DESTDIR)\lib\afsrx.lib \
        $(DESTDIR)\lib\afslwp.lib \
        $(DESTDIR)\lib\libosi.lib \
-       $(DESTDIR)\lib\libafsconf.lib
+       $(DESTDIR)\lib\libafsconf.lib \
+       $(DESTDIR)\lib\opr.lib \
+       $(DESTDIR)\lib\afshcrypto.lib \
+       $(DESTDIR)\lib\afsroken.lib
 
 EXELIBS2 = \
         $(DESTDIR)\lib\afsrpc.lib \
@@ -323,105 +432,151 @@ EXELIBS2 = \
        $(DESTDIR)\lib\afs\afsutil.lib \
        $(DESTDIR)\lib\afsubik.lib \
        $(DESTDIR)\lib\afsrxkad.lib \
-       $(DESTDIR)\lib\afsdes.lib \
        $(DESTDIR)\lib\afslwp.lib \
        $(DESTDIR)\lib\libosi.lib \
-       $(DESTDIR)\lib\libafsconf.lib
+       $(DESTDIR)\lib\libafsconf.lib \
+       $(DESTDIR)\lib\opr.lib \
+       $(DESTDIR)\lib\afshcrypto.lib \
+       $(DESTDIR)\lib\afsroken.lib
+
+EXELIBS3 = \
+       $(DESTDIR)\lib\afs\afscmd.lib \
+       $(DESTDIR)\lib\afsrxkad.lib \
+       $(DESTDIR)\lib\opr.lib \
+       $(DESTDIR)\lib\afshcrypto.lib \
+       $(DESTDIR)\lib\afsroken.lib
 
 # klog.exe
-$(EXEDIR)\klog.exe: $(OUT)\cklog.obj $(OUT)\klog.res $(EXELIBS)
-       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
+$(EXEDIR)\klog.exe: $(OUT)\cklog.obj $(OUT)\klog.res $(DESTDIR)\lib\krbcompat_delayload.obj $(EXELIBS) $(HEIMDEPS)
+       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib $(HEIMLINKOPTS)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # tokens.exe
-$(EXEDIR)\tokens.exe: $(OUT)\ctokens.obj $(OUT)\tokens.res $(EXELIBS)
-       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
+$(EXEDIR)\tokens.exe: $(OUT)\ctokens.obj $(OUT)\tokens.res $(DESTDIR)\lib\krbcompat_delayload.obj $(EXELIBS) $(HEIMDEPS)
+       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib $(HEIMLINKOPTS)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # unlog.exe
-$(EXEDIR)\unlog.exe: $(OUT)\cunlog.obj $(OUT)\unlog.res $(EXELIBS)
-       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
+$(EXEDIR)\unlog.exe: $(OUT)\cunlog.obj $(OUT)\unlog.res $(DESTDIR)\lib\krbcompat_delayload.obj $(EXELIBS) $(HEIMDEPS)
+       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib $(HEIMLINKOPTS)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # afscpcc.exe
-$(EXEDIR)\afscpcc.exe: $(OUT)\afscpcc.obj $(OUT)\afscpcc.res $(LOGON_DLLLIBS)
-       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib userenv.lib
+$(EXEDIR)\afscpcc.exe: $(OUT)\afscpcc.obj $(OUT)\afscpcc.res $(DESTDIR)\lib\krbcompat_delayload.obj $(LOGON_DLLLIBS) $(HEIMDEPS)
+       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib userenv.lib $(HEIMLINKOPTS)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 
 # afsd.exe
 AFSD_EXEFILE = $(EXEDIR)\afsd.exe
 
-AFSD_SDKLIBS =\
-       netapi32.lib \
-        dnsapi.lib \
-        mpr.lib \
-       rpcrt4.lib \
-       user32.lib \
-        Dbghelp.lib \
-        strsafe.lib \
-        mpr.lib \
-        secur32.lib \
-        ole32.lib \
-        oleaut32.lib \
-        iphlpapi.lib shell32.lib
-
 AFSD_EXELIBS =\
        $(DESTDIR)\lib\libosi.lib \
-       $(DESTDIR)\lib\afsrpc.lib \
-       $(DESTDIR)\lib\afsauthent.lib \
        $(DESTDIR)\lib\afs\mtafsvldb.lib \
        $(DESTDIR)\lib\afs\mtafsint.lib \
+       $(DESTDIR)\lib\afsrpc.lib \
+        $(DESTDIR)\lib\afsrxkad.lib \
+       $(DESTDIR)\lib\afs\mtafsutil.lib \
+       $(DESTDIR)\lib\afsauthent.lib \
        $(DESTDIR)\lib\libafsconf.lib \
        $(DESTDIR)\lib\afs\afsreg.lib \
-       $(DESTDIR)\lib\afs\afsutil.lib \
        $(DESTDIR)\lib\afspthread.lib \
+       $(DESTDIR)\lib\opr.lib \
+       $(DESTDIR)\lib\afsroken.lib \
+        $(DESTDIR)\lib\afshcrypto.lib \
         $(LANAHELPERLIB)
 
 $(AFSD_EXEFILE): $(OUT)\afsd.obj $(AFSDOBJS) $(OUT)\afsd.res  $(RXOBJS) $(AFSD_EXELIBS)
        $(EXEGUILINK) $(AFSD_SDKLIBS)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # afsd_service.exe
 $(EXEDIR)\afsd_service.exe: $(OUT)\afsd_service.obj $(AFSDOBJS) $(OUT)\afsd_service.res  $(RXOBJS) $(AFSD_EXELIBS)
        $(EXECONLINK) $(AFSD_SDKLIBS) /MAP /LARGEADDRESSAWARE
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # fs.exe
-$(EXEDIR)\fs.exe: $(FSOBJS) $(OUT)\fs.res $(EXELIBS)
-       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
+$(EXEDIR)\fs.exe: $(FSOBJS) $(OUT)\fs.res $(EXELIBS) $(HEIMDEPS)
+       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib $(HEIMLINKOPTS)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # cmdebug.exe
-$(EXEDIR)\cmdebug.exe: $(CMDBGOBJS) $(OUT)\cmdebug.res $(EXELIBS2)
+$(EXEDIR)\cmdebug.exe: $(CMDBGOBJS) $(OUT)\cmdebug.res
        $(EXECONLINK) $(EXELIBS2) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib rpcrt4.lib
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
+
+# afsio.exe
+AFSCPLIB = \
+        $(DESTDIR)\lib\afs\afscp.lib
+
+!IF "$(CPU)" == "IA64" || "$(CPU)" == "AMD64" || "$(CPU)" == "ALPHA64"
+KFWLIBS = \
+    ..\kfw\lib\$(CPU)\krb5_64.lib \
+    ..\kfw\lib\$(CPU)\comerr64.lib \
+    dnsapi.lib mpr.lib delayimp.lib
+LINKOPTS = /DELAYLOAD:krb5_64.dll /DELAYLOAD:comerr64.dll
+!else
+KFWLIBS = \
+    ..\kfw\lib\$(CPU)\krb5_32.lib \
+    ..\kfw\lib\$(CPU)\comerr32.lib \
+    dnsapi.lib mpr.lib delayimp.lib
+LINKOPTS = /DELAYLOAD:krbv4w32.dll /DELAYLOAD:krb5_32.dll /DELAYLOAD:comerr32.dll
+!endif
+
+$(EXEDIR)\afsio.exe: $(AFSIOOBJS) $(OUT)\afsio.res $(RXOBJS) $(AFSD_EXELIBS) $(EXELIBS3) $(AFSCPLIB)
+       $(EXECONLINK) $(KFWLIBS) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib rpcrt4.lib
+        $(_VC_MANIFEST_EMBED_EXE)
+       $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # symlink.exe
-$(EXEDIR)\symlink.exe: $(SLOBJS) $(OUT)\symlink.res  $(EXELIBS)
-       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
+$(EXEDIR)\symlink.exe: $(SLOBJS) $(OUT)\symlink.res  $(EXELIBS) $(HEIMDEPS)
+       $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib $(HEIMLINKOPTS)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # afsshare.exe
-$(EXEDIR)\afsshare.exe: $(OUT)\afsshare.obj $(OUT)\afsshare.res
+$(EXEDIR)\afsshare.exe: $(OUT)\afsshare.obj $(OUT)\afsshare.res $(EXELIBS)
        $(EXECONLINK)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # afsdacl.exe
 $(EXEDIR)\afsdacl.exe: $(OUT)\afsdacl.obj $(OUT)\afsdacl.res
        $(EXECONLINK)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
 # kpasswd.exe - built in kauth, but rebuild here to make pthread-based,
 #    which is required for Windows 95.  At some point it would be nice
@@ -441,10 +596,11 @@ KPASSWD_OBJS =\
 KPASSWD_LIBS =\
        $(DESTDIR)\lib\afsauthent.lib \
        $(DESTDIR)\lib\afsrpc.lib \
-        $(DESTDIR)\lib\afsrx.lib \
        $(DESTDIR)\lib\afs\afscmd.lib \
-       $(DESTDIR)\lib\afsdes.lib \
-       $(DESTDIR)\lib\afs\afsutil.lib
+       $(DESTDIR)\lib\afs\mtafsutil.lib \
+       $(DESTDIR)\lib\opr.lib \
+       $(DESTDIR)\lib\afshcrypto.lib \
+       $(DESTDIR)\lib\afsroken.lib
 
 $(OUT)\kpasswd.obj: $(KAUTH)/kpasswd.c
        $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
@@ -463,7 +619,14 @@ $(DESTDIR)\bin\kpasswd.exe: $(KPASSWD_OBJS) $(KPASSWD_LIBS)
        $(EXECONLINK)
         $(_VC_MANIFEST_EMBED_EXE)
        $(EXEPREP)
+        $(CODESIGN_USERLAND)
+        $(SYMSTORE_IMPORT)
 
+{$(HEIMDALSDKDIR)\src\}.c{$(OUT)}.obj:
+       $(C2OBJ) /Fo$@ $**
+
+{$(HEIMDALSDKDIR)\inc\}.h{$(INCFILEDIR)}.h:
+       copy /y $< $@
 
 ############################################################################
 # generate versioninfo resources
@@ -495,6 +658,10 @@ clean::
        $(DEL) $(OUT)\*.res
        $(DEL) afsrpc.h
        $(DEL) afsrpc_?.*
+       $(DEL) ms-srvsvc.h
+       $(DEL) ms-srvsvc_?.*
+       $(DEL) ms-wkssvc.h
+       $(DEL) ms-wkssvc_?.*
         $(DEL) afsd_eventmessages.h
         $(DEL) afsd_eventmessages.rc
         $(DEL) MSG?????.bin
@@ -502,3 +669,26 @@ clean::
        $(DEL) $(LOGON_DLLFILE)
 
 mkdir:
+
+############################################################################
+# Tests
+
+{test}.c{$(OUT)\}.obj:
+       $(C2OBJ) $<
+
+test::
+
+test:: btreetest
+
+btreetest: "$(OUT)\btreetest.exe"
+       "$(OUT)\btreetest.exe"
+
+$(OUT)\btreetest.exe: \
+               $(OUT)\btreetest.obj \
+               $(OUT)\cm_btree.obj \
+               $(OUT)\cm_nls.obj \
+               $(OUT)\cm_utils.obj \
+               $(DESTDIR)\lib\libosi.lib
+       $(EXECONLINK)
+       $(_VC_MANIFEST_EMBED_EXE)
+       $(EXEPREP)