windows-makefile-20050509
[openafs.git] / src / NTMakefile
index 9252dbe..af94461 100644 (file)
 # appropriately; if the new directory is the last in the chain, then
 # update the 'finale' dependency to be the new directory.
 
+# These three macros define the source, object, and destination folders
+SRC=$(AFSROOT)\src
+#If AFS_OBJDIR is not defined then use obj as relative obj folder
+!IFNDEF AFS_OBJDIR
+AFS_OBJDIR=$(AFSROOT)\obj
+!ENDIF
+!IFNDEF DESTDIR
+DESTDIR=$(AFSROOT)\dest
+!ENDIF
 
 CD = cd
 NTMAKE = nmake /nologo /f ntmakefile install
-NTMAKELANG = nmake /nologo /f ntmakefile en_US
-NTMAKE_HEADERS = nmake /nologo /f ntmakefile install_headers
+NTMAKELANG = nmake /nologo  /f ntmakefile en_US
+NTMAKE_HEADERS = nmake /nologo  /f ntmakefile install_headers
 NTMAKE_OBJS = nmake /nologo /f ntmakefile install_objs
 MKDIR = mkdir
-OBJ = src
-
-# Standard install directory.
-!IFDEF AFSDEV_DESTDIR
-DESTDIR = $(AFSDEV_DESTDIR)
-!ELSE
-DESTDIR = $(AFSROOT)\DEST
-!ENDIF
 
-
-start:
-!      IF (!EXIST(src))
-!      ERROR Execute nmake from directory above src, e.g., afs\3.5.
-!      ENDIF
-!      IF (!EXIST($(DESTDIR)))
-    $(MKDIR) $(DESTDIR)
-!      ENDIF
+#debug statement support jumping to last know error
+DOCD=$(SRC)\DOLASTCMP.BAT
 
 config:
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\config
+       $(CD) $(SRC)\config
        $(NTMAKE)
        $(CD) ..\..
 
-procmgmt_headers: config
+procmgmt_headers:config
      echo ***** $@
-       $(CD) $(OBJ)\procmgmt
+       $(DOCD) $(SRC)\procmgmt
+       $(CD) $(SRC)\procmgmt
        $(NTMAKE_HEADERS)
        $(CD) ..\..
 
-afsreg_headers: config
+afsreg_headers:
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\afsreg
+       $(DOCD) $(SRC)\WINNT\afsreg
+       $(CD) $(SRC)\WINNT\afsreg
        $(NTMAKE_HEADERS)
        $(CD) ..\..\..
 
 util: procmgmt_headers afsreg_headers
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 comerr: util
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
-cmd: comerr
+afs: comerr
+      echo ***** $@
+      $(DOCD) $(SRC)\afs
+      $(CD) $(SRC)\afs
+      $(NTMAKE)
+      $(CD) ..\..
+
+cmd: afs
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 afsreg: cmd
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 eventlog: afsreg
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 lwp: eventlog
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 rxgen: lwp
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 des: rxgen
      echo ***** $@
-!      IF (EXIST($(OBJ)\des\NTMakefile))
-               $(CD) $(OBJ)\des
+!      IF (EXIST($(SRC)\des\NTMakefile))
+               $(DOCD) $(SRC)\des
+               $(CD) $(SRC)\des
                $(NTMAKE)
                $(CD) ..\..
 !      ELSE
-               $(CD) $(OBJ)\des_stub
+               $(DOCD) $(SRC)\des_stub
+               $(CD) $(SRC)\des_stub
                $(NTMAKE)
                $(CD) ..\..
 !      ENDIF
 
 rx: des
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 rxstat: rx
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 rxkad: rxstat
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 pthread: rxkad
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 procmgmt: pthread
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 fsint: procmgmt
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 audit: fsint
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 osi_headers: audit
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\client_osi
+       $(DOCD) $(SRC)\WINNT\client_osi
+       $(CD) $(SRC)\WINNT\client_osi
        $(NTMAKE_HEADERS)
        $(CD) ..\..\..
 
 libacl_headers: osi_headers
      echo ***** $@
-       $(CD) $(OBJ)\libacl
+       $(DOCD) $(SRC)\libacl
+       $(CD) $(SRC)\libacl
        $(NTMAKE_HEADERS)
        $(CD) ..\..
 
 cm_headers: libacl_headers
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\afsd
+       $(DOCD) $(SRC)\WINNT\afsd
+       $(CD) $(SRC)\WINNT\afsd
        $(NTMAKE_HEADERS)
        $(CD) ..\..\..
 
-sys: cm_headers
+auth_headers: cm_headers
      echo ***** $@
-       $(CD) $(OBJ)\$@
-       $(NTMAKE)
+       $(DOCD) $(SRC)\auth
+       $(CD) $(SRC)\auth
+       $(NTMAKE_HEADERS)
        $(CD) ..\..
 
-afsdobjs: sys
+vlserver_headers: auth_headers
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\afsd
+       $(DOCD) $(SRC)\vlserver
+       $(CD) $(SRC)\vlserver
+       $(NTMAKE_HEADERS)
+       $(CD) ..\..
+
+afsdobjs: vlserver_headers
+     echo ***** $@
+       $(DOCD) $(SRC)\WINNT\afsd
+       $(CD) $(SRC)\WINNT\afsd
        $(NTMAKE_OBJS)
        $(CD) ..\..\..
 
-auth: afsdobjs
+sys: afsdobjs
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
+auth: sys
+     echo ***** $@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
+       $(NTMAKE)
+       $(CD) ..\..     
+
 ubik: auth
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..     
 
 ptserver: ubik
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..     
 
 libacl: ptserver
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 kauth: libacl
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 vlserver: kauth
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 usd: vlserver
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 bubasics: usd
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 budb:  bubasics
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 butm:  budb
      echo ***** $@
-        $(CD) $(OBJ)\$@
-        $(NTMAKE)
-        $(CD) ..\..
+     $(DOCD) $(SRC)\$@
+     $(CD) $(SRC)\$@
+     $(NTMAKE)
+     $(CD) ..\..
 
 dir: butm
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 vol: dir
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 volser: vol
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 viced: volser
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 update: viced
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 bucoord: update
      echo ***** $@
-        $(CD) $(OBJ)\$@
-        $(NTMAKE)
-        $(CD) ..\..
+     $(DOCD) $(SRC)\$@
+     $(CD) $(SRC)\$@
+     $(NTMAKE)
+     $(CD) ..\..
 
 butc:   bucoord
      echo ***** $@
-        $(CD) $(OBJ)\$@
-        $(NTMAKE)
-        $(CD) ..\..
+     $(DOCD) $(SRC)\$@
+     $(CD) $(SRC)\$@
+     $(NTMAKE)
+     $(CD) ..\..
 
 bozo: butc
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 bosctlsvc: bozo
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 bu_utils: bosctlsvc
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 libafsrpc: bu_utils
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 libafsauthent: libafsrpc
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 tviced: libafsauthent
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 tbutc:  tviced
      echo ***** $@
-        $(CD) $(OBJ)\$@
-        $(NTMAKE)
-        $(CD) ..\..
+     $(DOCD) $(SRC)\$@
+     $(CD) $(SRC)\$@
+     $(NTMAKE)
+     $(CD) ..\..
 
 libadmin: tbutc
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..
 
 adminutil: libadmin
      echo ***** $@
-       $(CD) $(OBJ)\libadmin\$@
+       $(DOCD) $(SRC)\libadmin\$@
+       $(CD) $(SRC)\libadmin\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 vos: adminutil
      echo ***** $@
-       $(CD) $(OBJ)\libadmin\$@
+       $(DOCD) $(SRC)\libadmin\$@
+       $(CD) $(SRC)\libadmin\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 client: vos
      echo ***** $@
-       $(CD) $(OBJ)\libadmin\$@
+       $(DOCD) $(SRC)\libadmin\$@
+       $(CD) $(SRC)\libadmin\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 kas: client
      echo ***** $@
-       $(CD) $(OBJ)\libadmin\$@
+       $(DOCD) $(SRC)\libadmin\$@
+       $(CD) $(SRC)\libadmin\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 pts: kas
      echo ***** $@
-       $(CD) $(OBJ)\libadmin\$@
+       $(DOCD) $(SRC)\libadmin\$@
+       $(CD) $(SRC)\libadmin\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 bos: pts
      echo ***** $@
-       $(CD) $(OBJ)\libadmin\$@
+       $(DOCD) $(SRC)\libadmin\$@
+       $(CD) $(SRC)\libadmin\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 cfg: bos
      echo ***** $@
-       $(CD) $(OBJ)\libadmin\$@
+       $(DOCD) $(SRC)\libadmin\$@
+       $(CD) $(SRC)\libadmin\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 admintest: cfg
      echo ***** $@
-       $(CD) $(OBJ)\libadmin\test
+       $(DOCD) $(SRC)\libadmin\test
+       $(CD) $(SRC)\libadmin\test
        $(NTMAKE)
        $(CD) ..\..\..
 
 talocale: admintest
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 license: talocale
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
+       $(NTMAKE)
+       $(CD) ..\..\..
+
+client_osi: license
+     echo ***** $@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
+       $(NTMAKE)
+       $(CD) ..\..\..
+
+afsd: client_osi
+     echo ***** $@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
-afsadmsvr: license
+afsadmsvr: afsd
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 afsusrmgr: afsadmsvr
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 afssvrmgr: afsusrmgr
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 afssvrcfg: afssvrmgr
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 afssvrcpa: afssvrcfg
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
 client_talocale: afssvrcpa
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\talocale
+       $(DOCD) $(SRC)\WINNT\talocale
+       $(CD) $(SRC)\WINNT\talocale
        $(NTMAKE)
        $(CD) ..\..\..
 
-client_osi: client_talocale
+client_cpa: client_talocale
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
-afsd: client_osi
+client_config: client_cpa
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
-client_cpa: afsd
+client_exp: client_config
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
-client_config: client_cpa
+client_creds: client_exp
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
-client_exp: client_config
+aklog: client_creds
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+       $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
 
-client_creds: client_exp
+extra: aklog
+!      IF EXIST($(SRC)\WINNT\extra) && EXIST($(SRC)\WINNT\extra\NTMakefile)
      echo ***** $@
-       $(CD) $(OBJ)\WINNT\$@
+    $(DOCD) $(SRC)\WINNT\$@
+       $(CD) $(SRC)\WINNT\$@
        $(NTMAKE)
        $(CD) ..\..\..
-
-finale: client_creds
+!      ELSE
+     echo ***** Skipping $@ ***** Not found.
+!      ENDIF
+                
+finale: extra
      echo ***** $@
-       $(CD) $(OBJ)\$@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
        $(NTMAKE)
        $(CD) ..\..     
+       echo Build Finished Successfully
 
-install: start finale
+install: finale
 
 # InstallShield dependencies
 
+# Clean target for obj tree
+clean:
+       nmake /nologo /f ntmakefile "NTMAKE = nmake /nologo /f ntmakefile clean" "NTMAKE_HEADERS = nmake /nologo /f ntmakefile clean" "NTMAKE_OBJS = nmake /nologo /f ntmakefile clean" install
+       nmake /nologo /f ntmakefile "NTMAKE = nmake /nologo /f ntmakefile clean" "NTMAKE_HEADERS = nmake /nologo /f ntmakefile clean" "NTMAKE_OBJS = nmake /nologo /f ntmakefile clean" media
+       $(CD) $(SRC)\config
+       nmake /nologo /f ntmakefile clean_version
+       $(CD) ..\..
+
+# Language-only build target
+lang:
+    nmake /nologo /f ntmakefile "NTMAKE = nmake /nologo /f ntmakefile lang" "NTMAKE_HEADERS = nmake /nologo /f ntmakefile lang" install
+
+mkdir:
+    -mkdir $(AFS_OBJDIR)
+    -mkdir $(DESTDIR)
+    -mkdir $(AFS_OBJDIR)\checked
+    -mkdir $(AFS_OBJDIR)\free
+       -xcopy /q /t /e $(SRC)\*.* $(AFS_OBJDIR)\checked\ 
+       -xcopy /q /t /e $(SRC)\*.* $(AFS_OBJDIR)\free\ 
+    -mkdir $(DESTDIR)\checked
+       -mkdir $(DESTDIR)\free
+    -mkdir $(DESTDIR)\checked\bin
+       -mkdir $(DESTDIR)\free\bin
+       -@copy $(SRC)\config\NTLANG.BAT .
+
+loopback:
+   echo ***** Making Loopback Adapter Utility DLL
+   $(DOCD) $(SRC)\WINNT\install\$@
+   $(CD) $(SRC)\WINNT\install\$@
+   $(NTMAKE)
+   $(CD) ..\..\..\..
+
+NSIS: loopback
+   echo ***** Making NSIS Installer
+   $(DOCD) $(SRC)\WINNT\install\$@
+   $(CD) $(SRC)\WINNT\install\$@
+   $(NTMAKE)
+   $(CD) ..\..\..\..
+
+wix: loopback
+   echo ***** Making Wix MSI Installer
+   $(DOCD) $(SRC)\WINNT\install\$@
+   $(CD) $(SRC)\WINNT\install\$@
+   $(NTMAKE)
+   $(CD) ..\..\..\..
+
 InstallShield5:
        echo ***** afs_setup_utils
-       $(CD) $(OBJ)\WINNT\afs_setup_utils
+       $(DOCD) $(SRC)\WINNT\afs_setup_utils
+       $(CD) $(SRC)\WINNT\afs_setup_utils
        $(NTMAKE)
        $(CD) ..\..\..
 
-       $(CD) $(OBJ)\WINNT\install\$@
+       $(DOCD) $(SRC)\WINNT\install\$@
+       $(CD) $(SRC)\WINNT\install\$@
        $(NTMAKE)
        $(CD) ..\..\..\..
 
-media: InstallShield5
+media: install InstallShield5 NSIS wix
 
+install-nsis: install NSIS
 
+install-wix: install wix
 
-# Clean target for obj tree
-clean: start
-        nmake /nologo /f ntmakefile "NTMAKE = nmake /nologo /f ntmakefile clean" "NTMAKE_HEADERS = nmake /nologo /f ntmakefile clean" install
-       $(CD) $(OBJ)\config
-       nmake /nologo /f ntmakefile clean_version
-       $(CD) ..\..
+install-is5: install InstallShield5
 
-
-# Language-only build target
-lang:
-        nmake /nologo /f ntmakefile "NTMAKE = nmake /nologo /f ntmakefile lang" "NTMAKE_HEADERS = nmake /nologo /f ntmakefile lang" install