$(NTMAKE_HEADERS)
$(CD) ..\..
-util: procmgmt_headers afsreg_headers lwp_headers rx_headers
+util_headers:
+ @echo ***** $@
+ $(DOCD) $(SRC)\util
+ $(CD) $(SRC)\util
+ $(NTMAKE_HEADERS)
+ $(CD) ..\..
+
+pthread: util_headers
+ @echo ***** $@
+ $(DOCD) $(SRC)\WINNT\$@
+ $(CD) $(SRC)\WINNT\$@
+ $(NTMAKE)
+ $(CD) ..\..\..
+
+util: procmgmt_headers afsreg_headers lwp_headers rx_headers pthread
@echo ***** $@
$(DOCD) $(SRC)\$@
$(CD) $(SRC)\$@
$(NTMAKE)
$(CD) ..\..
-pthread: rxkad
- @echo ***** $@
- $(DOCD) $(SRC)\WINNT\$@
- $(CD) $(SRC)\WINNT\$@
- $(NTMAKE)
- $(CD) ..\..\..
-
-procmgmt: pthread
+procmgmt: rxkad
@echo ***** $@
$(DOCD) $(SRC)\$@
$(CD) $(SRC)\$@
$(NTMAKE)
$(CD) ..\..
-tbutc: tviced
+tvolser: tviced
+ @echo ***** $@
+ $(DOCD) $(SRC)\$@
+ $(CD) $(SRC)\$@
+ $(NTMAKE)
+ $(CD) ..\..
+
+tbutc: tvolser
@echo ***** $@
$(DOCD) $(SRC)\$@
$(CD) $(SRC)\$@
$(DESTDIR)\lib\afs\mtafsvldb.lib \
$(DESTDIR)\lib\afs\mtafsint.lib \
$(DESTDIR)\lib\afsrpc.lib \
- $(DESTDIR)\lib\afs\afsutil.lib \
+ $(DESTDIR)\lib\afs\mtafsutil.lib \
$(DESTDIR)\lib\afsauthent.lib \
$(DESTDIR)\lib\libafsconf.lib \
$(DESTDIR)\lib\afs\afsreg.lib \
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
$(OUT)\kpasswd.obj: $(KAUTH)/kpasswd.c
$(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
return 0;
}
-afs_int32 util_GetInt32 (char *as, afs_int32 *aval)
-{
- register long total;
- register int tc;
- int base;
- int negative;
-
- total = 0; /* initialize things */
- negative = 0;
-
- /* skip over leading spaces */
- while (tc = *as) {
- if (tc != ' ' && tc != '\t') break;
- }
-
- /* compute sign */
- if (*as == '-') {
- negative = 1;
- as++; /* skip over character */
- }
-
- /* compute the base */
- if (*as == '0') {
- as++;
- if (*as == 'x' || *as == 'X') {
- base = 16;
- as++;
- }
- else base = 8;
- }
- else base = 10;
-
- /* compute the # itself */
- while(tc = *as) {
- if (!ismeta(base, tc)) return -1;
- total *= base;
- total += getmeta(tc);
- as++;
- }
-
- if (negative) *aval = -total;
- else *aval = total;
- return 0;
-}
-
char *cm_mount_root="afs";
char *cm_slash_mount_root="/afs";
char *cm_back_slash_mount_root="\\afs";
! IF (!EXIST($(OJT)\tviced))
$(MKDIR) $(OJT)\tviced
! ENDIF
+! IF (!EXIST($(OJT)\tvolser))
+ $(MKDIR) $(OJT)\tvolser
+! ENDIF
! IF (!EXIST($(OJT)\ubik))
$(MKDIR) $(OJT)\ubik
! ENDIF
pthread_recursive_mutex_unlock @53
grmutex @54 DATA
initAFSDirPath @55
- renamefile @56
+; renamefile @56
opendir @57
readdir @58
closedir @59
ubik_RefreshConn @114
rx_SetSecurityConfiguration @115
pioctl_utf8 @116
+ ubik_PR_INewEntry @117
+ ubik_PR_WhereIsIt @118
+ ubik_PR_DumpEntry @119
+ ubik_PR_AddToGroup @120
+ ubik_PR_NameToID @121
+ ubik_PR_IDToName @122
+ ubik_PR_Delete @123
+ ubik_PR_RemoveFromGroup @124
+ ubik_PR_GetCPS @125
+ ubik_PR_NewEntry @126
+ ubik_PR_ListMax @127
+ ubik_PR_SetMax @128
+ ubik_PR_ListEntry @129
+ ubik_PR_ChangeEntry @130
+ ubik_PR_ListElements @131
+ ubik_PR_IsAMemberOf @132
+ ubik_PR_SetFieldsEntry @133
+ ubik_PR_ListOwned @134
+ ubik_PR_GetCPS2 @135
+ ubik_PR_GetHostCPS @136
+ ubik_PR_UpdateEntry @137
+ ubik_PR_ListEntries @138
+ ubik_PR_ListSuperGroups @139
rx_WriteProc32 @251
xdr_free @252
RXAFS_FsCmd @253
+ rxi_CallError @254
; for performance testing
rx_TSFPQGlobSize @2001 DATA
#define RX_STATS_INTERLOCKED 1
#if defined(AFS_PTHREAD_ENV)
#define EXT __declspec(dllimport) extern
-#else
+#else /* AFS_PTHREAD_ENV */
#define EXT extern
-#endif
-#define EXT2 __declspec(dllimport) extern
-#else
-#define EXT2 extern
+#endif /* AFS_PTHREAD_ENV */
+#else /* AFS_NT40_ENV */
#define EXT extern
-#endif
+#endif /* AFS_NT40_ENV */
#endif /* !GLOBALSINIT */
/* Basic socket for client requests; other sockets (for receiving server requests) are in the service structures */
EXT afs_kmutex_t rx_packets_mutex; /* used to protect packet counters */
#endif
-EXT2 int rx_enable_stats GLOBALSINIT(0);
+EXT int rx_enable_stats GLOBALSINIT(0);
/*
* Set this flag to enable the listener thread to trade places with an idle
BUTM =..\butm
BUTC =..\butc
BUCOORD = ..\bucoord
-VOLSER = ..\volser
+VOLSER = ..\tvolser
BUCOORDOBJS = $(OUT)\ubik_db_if.obj \
$(OUT)\$(BUCOORD)\volstub.obj \
$(OUT)\$(BUCOORD)\status.obj \
$(OUT)\$(BUCOORD)\bucoord_errs.obj
-VOLSERLIBOBJ = $(OUT)\$(VOLSER)\volint.cs.obj \
- $(OUT)\vsprocs.obj \
- $(OUT)\$(VOLSER)\vsutils.obj \
- $(OUT)\$(VOLSER)\lockprocs.obj \
- $(OUT)\$(VOLSER)\volint.xdr.obj \
- $(OUT)\$(VOLSER)\volerr.obj \
- $(OUT)\$(VOLSER)\volint.ss.obj \
- $(OUT)\AFS_component_version_number.obj
-VOLSERLIBS = $(OUT)\afstvolser.lib
-
LWPOBJS = $(OUT)\lock.obj
BUTMOBJS = $(OUT)\file_tm.obj \
BUTCINCLUDE= -I. -I$(DESTDIR)\include -I$(XBSADIR)
BUTCLIBS=$(DESTDIR)\lib\afs\afsbudb.lib \
$(DESTDIR)\lib\afs\afsbubasics.lib \
- $(VOLSERLIBS) \
+ $(DESTDIR)\lib\afs\afstvolser.lib \
$(BUTMLIBS) \
- $(DESTDIR)\lib\afs\afsvldb.lib \
+ $(DESTDIR)\lib\afs\mtafsvldb.lib \
$(DESTDIR)\lib\afs\afskauth.lib \
$(DESTDIR)\lib\afs\afsauth.lib \
$(DESTDIR)\lib\afsrpc.lib \
$(DESTDIR)\lib\afsrxkad.lib \
- $(DESTDIR)\lib\afsubik.lib \
+ $(DESTDIR)\lib\afs\mtafsubik.lib \
$(DESTDIR)\lib\afs\afsutil.lib \
$(DESTDIR)\lib\afs\afsusd.lib \
$(DESTDIR)\lib\afs\afspioctl.lib \
$(OUT)\ubik_db_if.obj: $(BUCOORD)/ubik_db_if.c
$(C2OBJ) -I$(BUCOORD) $**
-#----------------------------------------------- VOLSER
-# Build the afstvolser.lib library here. The file compiled
-# for is is vsprocs.c. The rest are from the VOLSER dir.
-
-$(OUT)\afstvolser.lib: $(VOLSERLIBOBJ)
- $(LIBARCH)
-
-$(OUT)\vsprocs.obj: $(VOLSER)/vsprocs.c
- $(C2OBJ) $**
-
#----------------------------------------------- LWP
$(OUT)\lock.obj: $(LWP)/lock.c
VICED = ..\viced
TVICED = .
-VLSERVER = ..\vlserver
LWP = ..\lwp
LIBACL = ..\libacl
-UTIL = ..\util
DIR = ..\dir
-VOL = ..\vol
FSINT = ..\fsint
RX = ..\rx
$(OUT)\xdr_int32.obj
VICEDOBJS = $(OUT)\viced.obj $(OUT)\afsfileprocs.obj $(OUT)\host.obj $(OUT)\physio.obj $(OUT)\callback.obj
+
TVICEDRES = $(OUT)\fileserver.res
TVICEDOBJS = $(OUT)\serialize_state.obj
-VLSERVEROBJS = $(OUT)\vldbint.cs.obj $(OUT)\vldbint.xdr.obj
-
LWPOBJS = $(OUT)\lock.obj $(OUT)\fasttime.obj $(OUT)\threadname.obj
LIBACLOBJS = $(OUT)\aclprocs.obj $(OUT)\netprocs.obj
-UTILOBJS = $(OUT)\assert.obj $(OUT)\uuid.obj $(OUT)\serverLog.obj $(OUT)\fileutil.obj
-
DIROBJS = $(OUT)\buffer.obj $(OUT)\dir.obj $(OUT)\salvage.obj
-VOLOBJS = $(OUT)\vnode.obj $(OUT)\volume.obj $(OUT)\vutil.obj $(OUT)\partition.obj \
- $(OUT)\clone.obj $(OUT)\common.obj $(OUT)\ihandle.obj $(OUT)\ntops.obj \
- $(OUT)\fssync-server.obj $(OUT)\fssync-client.obj $(OUT)\daemon_com.obj
-
FSINTOBJS = $(OUT)\afsaux.obj $(OUT)\afscbint.cs.obj $(OUT)\afsint.ss.obj $(OUT)\afsint.xdr.obj
-EXEOBJS = $(VICEDOBJS) $(TVICEDRES) $(VLSERVEROBJS) $(LWPOBJS) $(LIBACLOBJS) \
- $(UTILOBJS) $(DIROBJS) $(VOLOBJS) $(FSINTOBJS) $(RXOBJS) #$(TVICEDOBJS)
+EXEOBJS = $(VICEDOBJS) $(TVICEDRES) $(LWPOBJS) $(LIBACLOBJS) \
+ $(DIROBJS) $(FSINTOBJS) $(RXOBJS) #$(TVICEDOBJS)
noversion: install
$(C2OBJ) -I$(RX) $**
$(VICEDOBJS): $(VICED)\$$(@B).c
- $(C2OBJ) -I$(VICED) -I$(UTIL) $**
+ $(C2OBJ) -I$(VICED) $**
$(TVICEDRES): $(VICED)\fileserver.rc AFS_component_version_number.h
$(RC) /fo $(TVICEDRES) $(VICED)\fileserver.rc
$(TVICEDOBJS): $(TVICED)\$$(@B).c
- $(C2OBJ) -I$(TVICED) -I$(UTIL) $**
-
-$(UTILOBJS): $(UTIL)\$$(@B).c
- $(C2OBJ) -I$(UTIL) $**
+ $(C2OBJ) -I$(TVICED) $**
$(LWPOBJS): $(LWP)\$$(@B).C
$(C2OBJ) -I$(LWP) $**
$(LIBACLOBJS): $(LIBACL)\$$(@B).C
$(C2OBJ) -I$(LIBACL) $**
-$(VLSERVEROBJS): $(VLSERVER)\$$(@B).C
- $(C2OBJ) -I$(VLSERVER) $**
-
$(DIROBJS): $(DIR)\$$(@B).C
$(C2OBJ) -I$(DIR) $**
-$(VOLOBJS): $(VOL)\$$(@B).C
- $(C2OBJ) -I$(VOL) $**
-
$(FSINTOBJS): $(FSINT)\$$(@B).C
$(C2OBJ) -I$(FSINT) $**
EXELIBS = \
$(DESTDIR)\lib\afsauthent.lib \
- $(DESTDIR)\lib\afs\afsprot.lib \
$(DESTDIR)\lib\afsrpc.lib \
$(DESTDIR)\lib\afs\afscmd.lib \
$(DESTDIR)\lib\afs\afsaudit.lib \
$(DESTDIR)\lib\afs\afsreg.lib \
$(DESTDIR)\lib\afs\afsprocmgmt.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
- $(DESTDIR)\lib\afs\afsutil.lib \
+ $(DESTDIR)\lib\afs\mtafsutil.lib \
+ $(DESTDIR)\lib\afs\mtafsvol.lib \
+ $(DESTDIR)\lib\afs\mtafsvldb.lib \
$(DESTDIR)\lib\afspthread.lib
$(EXEFILE): $(EXEOBJS) $(EXELIBS)
RELDIR=tvolser
!INCLUDE ..\config\NTMakefile.$(SYS_NAME)
!INCLUDE ..\config\NTMakefile.version
+
SRC_DIR = ..\volser
-VICED = ..\viced
+VOLSER = ..\volser
+TVOLSER = .
VLSERVER = ..\vlserver
LWP = ..\lwp
LIBACL = ..\libacl
UTIL = ..\util
DIR = ..\dir
-VOLSER = ..\volser
VOL = ..\vol
FSINT = ..\fsint
RX = ..\rx
$(INCFILEDIR)\volser.h \
$(INCFILEDIR)\volint.h
-
LOCAL_INCFILES = \
volser.h \
volint.h
############################################################################
+# Build afstvolser.lib
+
+LIBFILE = $(DESTDIR)\lib\afs\afstvolser.lib
+
+LIBOBJS = $(OUT)\volint.cs.obj \
+ $(OUT)\vsprocs.obj \
+ $(OUT)\vsutils.obj \
+ $(OUT)\lockprocs.obj \
+ $(OUT)\volint.xdr.obj \
+ $(OUT)\volerr.obj \
+ $(OUT)\volint.ss.obj \
+ $(OUT)\AFS_component_version_number.obj
+
+$(LIBOBJS): $(VOLSER)\$$(@B).c
+ $(C2OBJ) -I$(TVOLSER) -I$(UTIL) $**
+
+$(LIBFILE): $(LIBOBJS)
+ $(LIBARCH)
+
+
+############################################################################
# Build volserver
VOLSERVER_EXEFILE = $(DESTDIR)\root.server\usr\afs\bin\volserver.exe
-VOLSEROBJS=$(OUT)\volmain.obj $(OUT)\volprocs.obj $(OUT)\physio.obj $(OUT)\voltrans.obj $(OUT)\volerr.obj $(OUT)\volint.cs.obj $(OUT)\dumpstuff.obj $(OUT)\volint.ss.obj $(OUT)\volint.xdr.obj $(OUT)\vscommon.obj
+VOLSEROBJS=$(OUT)\volmain.obj $(OUT)\volprocs.obj $(OUT)\physio.obj $(OUT)\voltrans.obj $(OUT)\dumpstuff.obj
-LWPOBJS=$(OUT)\lock.obj $(OUT)\threadname.obj
+LWPOBJS=$(OUT)\lock.obj $(OUT)\threadname.obj $(OUT)\fasttime.obj
LIBACLOBJS=$(OUT)\aclprocs.obj $(OUT)\netprocs.obj
-UTILOBJS=$(OUT)\assert.obj $(OUT)\uuid.obj $(OUT)\serverLog.obj $(OUT)\fileutil.obj $(OUT)\netutils.obj $(OUT)\dirpath.obj $(OUT)\volparse.obj $(OUT)\flipbase64.obj $(OUT)\softsig.obj
-
DIROBJS=$(OUT)\buffer.obj $(OUT)\dir.obj $(OUT)\salvage.obj
-VOLOBJS= $(OUT)\vnode.obj $(OUT)\volume.obj $(OUT)\vutil.obj $(OUT)\partition.obj $(OUT)\fssync-client.obj $(OUT)\purge.obj $(OUT)\clone.obj $(OUT)\devname.obj $(OUT)\common.obj $(OUT)\ihandle.obj $(OUT)\listinodes.obj $(OUT)\namei_ops.obj $(OUT)\nuke.obj $(OUT)\salvsync-client.obj $(OUT)\daemon_com.obj
-
-
-VOLSERVER_EXEOBJS = $(VOLSEROBJS) $(VLSERVEROBJS) $(LWPOBJS) $(LIBACLOBJS) $(UTILOBJS) $(DIROBJS) $(VOLOBJS) $(FSINTOBJS)
+VOLSERVER_EXEOBJS = $(VOLSEROBJS) $(VLSERVEROBJS) $(LWPOBJS) $(LIBACLOBJS) $(DIROBJS) $(FSINTOBJS) $(OUT)\vscommon.obj
VOLSERVER_EXELIBS = \
$(DESTDIR)\lib\afsauthent.lib \
$(DESTDIR)\lib\afsrpc.lib \
+ $(DESTDIR)\lib\afs\afstvolser.lib \
+ $(DESTDIR)\lib\afs\mtafsvol.lib \
$(DESTDIR)\lib\afs\afscmd.lib \
$(DESTDIR)\lib\afs\afsaudit.lib \
$(DESTDIR)\lib/afs/afscom_err.lib \
$(DESTDIR)\lib\afs\afsreg.lib \
$(DESTDIR)\lib\afs\afsprocmgmt.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
- $(DESTDIR)\lib\afs\afsutil.lib \
+ $(DESTDIR)\lib\afs\mtafsutil.lib \
$(DESTDIR)\lib\afspthread.lib
$(VOLSERVER_EXEFILE): $(VOLSERVER_EXEOBJS) $(VOLSERVER_EXELIBS)
- $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib
+ $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib
$(_VC_MANIFEST_EMBED_EXE)
$(EXEPREP)
$(CODESIGN_USERLAND)
+$(OUT)\vscommon.obj: $(VOLSER)\common.c
+ $(C2OBJ) /Fo$(OUT)\vscommon.obj -I$(VOLSER) -I$(UTIL) $**
+
$(VOLSEROBJS): $(VOLSER)\$$(@B).c
$(C2OBJ) -I$(VOLSER) -I$(UTIL) $**
-$(VICEDOBJS): $(VICED)\$$(@B).c
- $(C2OBJ) -I$(VICED) -I$(UTIL) $**
-
-$(UTILOBJS): $(UTIL)\$$(@B).c
- $(C2OBJ) -I$(UTIL) $**
-
$(LWPOBJS): $(LWP)\$$(@B).C
$(C2OBJ) -I$(LWP) $**
$(LIBACLOBJS): $(LIBACL)\$$(@B).C
$(C2OBJ) -I$(LIBACL) $**
-$(UTILOBJS): $(UTILACL)\$$(@B).C
- $(C2OBJ) -I$(UTILACL) $**
-
-$(VLSERVEROBJS): $(VLSERVER)\$$(@B).C
- $(C2OBJ) -I$(VLSERVER) $**
-
$(DIROBJS): $(DIR)\$$(@B).C
$(C2OBJ) -I$(DIR) $**
-$(VOLOBJS): $(VOL)\$$(@B).C
- $(C2OBJ) -I$(VOL) $**
-
-$(FSINTOBJS): $(FSINT)\$$(@B).C
- $(C2OBJ) -I$(FSINT) $**
-
############################################################################
# Generate versioninfo resources
$(OUT)\volserver.res: AFS_component_version_number.h
############################################################################
+# Definitions for generating files via RXGEN
+
+volint.cs.c: $(VOLSER)\volint.xg volint.h
+ $(RXGEN) -x -C -o $@ $(VOLSER)\volint.xg
+
+volint.ss.c: $(VOLSER)\volint.xg volint.h
+ $(RXGEN) -x -S -o $@ $(VOLSER)\volint.xg
+
+volint.xdr.c: $(VOLSER)\volint.xg volint.h
+ $(RXGEN) -x -c -o $@ $(VOLSER)\volint.xg
+
+volint.h: $(VOLSER)\volint.xg
+ $(RXGEN) -x -h -o $@ $(VOLSER)\volint.xg
+
+############################################################################
+# Definitions for generating files via COMPILE_ET
+
+volser.h volerr.c: $(VOLSER)\volerr.et $(VOLSER)\volser.p.h
+ $(DEL) volerr.c volser.h
+ $(COPY) $(VOLSER)\volerr.et .
+ $(COPY) $(VOLSER)\volser.p.h .
+ $(COMPILE_ET) volerr -h volser
+
+############################################################################
# Install target; primary makefile target
-install: $(LOCAL_INCFILES) $(LIBFILE) $(VOLSERVER_EXEFILE) $(CL_VOS_EXEFILE) \
+install_lib: $(LIBFILE)
+
+install: install_lib $(VOLSERVER_EXEFILE) $(CL_VOS_EXEFILE) \
$(INCFILES)
# Local clean target; augments predefined clean target
clean::
- $(DEL) volerr.c volser.h $(INCFILES)
- $(DEL) volint.cs.c volint.h volint.ss.c volint.xdr.c volser.h
+ $(DEL) volerr.c volser.h volerr.et volser.p.h $(INCFILES)
+ $(DEL) volint.cs.c volint.h volint.ss.c volint.xdr.c
mkdir:
$(LIBARCH)
############################################################################
+# build mtafsubik.lib
+
+MT_LIBFILE = $(DESTDIR)\lib\afs\mtafsubik.lib
+
+MT_LIBOBJS =\
+ $(OUT)\disk.obj \
+ $(OUT)\remote.obj \
+ $(OUT)\beacon.obj \
+ $(OUT)\recovery.obj \
+ $(OUT)\ubik.obj \
+ $(OUT)\uinit.obj \
+ $(OUT)\vote.obj \
+ $(OUT)\lock.obj \
+ $(OUT)\phys.obj \
+ $(OUT)\ubik_int_mt.cs.obj \
+ $(OUT)\ubik_int_mt.ss.obj \
+ $(OUT)\ubik_int_mt.xdr.obj \
+ $(OUT)\ubikcmd.obj \
+ $(OUT)\ubikclient.obj \
+ $(OUT)\uerrors_mt.obj \
+ $(OUT)\AFS_component_version_number.obj
+
+$(OUT)\uerrors_mt.obj:uerrors.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\ubik_int_mt.cs.obj:ubik_int.cs.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\ubik_int_mt.ss.obj:ubik_int.ss.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\ubik_int_mt.xdr.obj:ubik_int.xdr.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(MT_LIBFILE): $(MT_LIBOBJS)
+ $(LIBARCH)
+
+############################################################################
# Definitions for building a EXE.
RS_UDBG_EXEFILE = $(DESTDIR)\root.server\usr\afs\bin\udebug.exe
install9X: $(INCFILES) $(LIBFILE)
-install: $(INCFILES) $(LIBFILE) $(CL_UDBG_EXEFILE)
+install: $(INCFILES) $(LIBFILE) $(MT_LIBFILE) $(CL_UDBG_EXEFILE)
clean::
$(INCFILEDIR)\ktime.h \
$(INCFILEDIR)\fileutil.h \
$(INCFILEDIR)\afsutil_prototypes.h \
- $(INCFILEDIR)\secutil_nt.h
+ $(INCFILEDIR)\secutil_nt.h \
+ $(INCFILEDIR)\softsig.h
$(DESTDIR)\include\afs\dirent.h: dirent_nt.h
$(COPY) $** $@
LIBFILE = $(DESTDIR)\lib\afs\afsutil.lib
+MT_LIBFILE = $(DESTDIR)\lib\afs\mtafsutil.lib
+
LIBOBJS = \
$(OUT)\assert.obj \
$(OUT)\base32.obj \
$(OUT)\fileutil.obj \
$(OUT)\secutil_nt.obj
+MT_LIBOBJS = \
+ $(OUT)\assert.obj \
+ $(OUT)\base32.obj \
+ $(OUT)\casestrcpy.obj \
+ $(OUT)\get_krbrlm.obj \
+ $(OUT)\hostparse.obj \
+ $(OUT)\isathing.obj \
+ $(OUT)\kreltime.obj \
+ $(OUT)\ktime.obj \
+ $(OUT)\netutils.obj \
+ $(OUT)\regex.obj \
+ $(OUT)\readdir_nt.obj \
+ $(OUT)\serverLog_mt.obj \
+ $(OUT)\snprintf.obj \
+ $(OUT)\strlcat.obj \
+ $(OUT)\uuid.obj \
+ $(OUT)\volparse.obj \
+ $(OUT)\winsock_nt.obj \
+ $(OUT)\errmap_nt.obj \
+ $(OUT)\dirpath_mt.obj \
+ $(OUT)\strnlen.obj \
+ $(OUT)\strlcpy.obj \
+ $(OUT)\fileutil.obj \
+ $(OUT)\secutil_nt.obj
+
$(LIBOBJS): $$(@B).c
$(C2OBJ) $**
+$(OUT)\dirpath_mt.obj:dirpath.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\serverLog_mt.obj:serverLog.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
$(LIBFILE): $(LIBOBJS)
$(LIBARCH)
-install: $(INCFILES) $(LIBOBJS) $(LIBFILE)
+$(MT_LIBFILE): $(MT_LIBOBJS)
+ $(LIBARCH)
+
+install_headers: $(INCFILES)
+
+install: install_headers $(LIBOBJS) $(LIBFILE) $(MT_LIBFILE)
install9x: install
LIBFILE = $(DESTDIR)\lib\afs\afsvol.lib
+MT_LIBFILE = $(DESTDIR)\lib\afs\mtafsvol.lib
+
LIBOBJS =\
$(OUT)\common.obj \
$(OUT)\clone.obj \
$(OUT)\ihandle.obj \
$(OUT)\AFS_component_version_number.obj
+MT_LIBOBJS =\
+ $(OUT)\common.obj \
+ $(OUT)\clone_mt.obj \
+ $(OUT)\fssync-client_mt.obj \
+ $(OUT)\fssync-server_mt.obj \
+ $(OUT)\daemon_com_mt.obj \
+ $(OUT)\ntops.obj \
+ $(OUT)\nuke_mt.obj \
+ $(OUT)\partition_mt.obj \
+ $(OUT)\purge.obj \
+ $(OUT)\vnode_mt.obj \
+ $(OUT)\volume_mt.obj \
+ $(OUT)\vutil_mt.obj \
+ $(OUT)\ihandle_mt.obj \
+ $(OUT)\AFS_component_version_number.obj
+
+$(OUT)\clone_mt.obj:clone.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\daemon_com_mt.obj:daemon_com.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\fssync-client_mt.obj:fssync-client.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\fssync-server_mt.obj:fssync-server.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\ihandle_mt.obj:ihandle.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\nuke_mt.obj:nuke.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\partition_mt.obj:partition.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\vnode_mt.obj:vnode.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\volume_mt.obj:volume.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
+$(OUT)\vutil_mt.obj:vutil.c
+ $(C2OBJ) $** -DAFS_PTHREAD_ENV
+
$(LIBFILE): $(LIBOBJS)
$(LIBARCH)
-
+$(MT_LIBFILE): $(MT_LIBOBJS)
+ $(LIBARCH)
############################################################################
# External libraries
############################################################################
# Install targets
-install: $(INCFILES) $(LIBFILE) $(SALVAGER) $(VOLINFO)
+install: $(INCFILES) $(LIBFILE) $(MT_LIBFILE) $(SALVAGER) $(VOLINFO)
mkdir: