Improve Windows Build System By Using MT-safe Versions of Libraries
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 14 Jul 2009 01:24:58 +0000 (21:24 -0400)
committerJeffrey Altman <jaltman@openafs.org>
Wed, 15 Jul 2009 03:46:56 +0000 (21:46 -0600)
For many years the Windows Build System has incorrectly mixed
some Pthread and LWP code.  One of the side effects of this
mixing was the need for the EXT2 extern macro definition in
src/rx/rx_globals.h which permitted the LWP compiled routines
to link with the Pthreaded afsrpc library.

This commit creates or modifies multi-threaded versions of various
libraries including mtafsubik.lib, mtafsutil.lib, mtafsvldb.lib,
and mtafsvol.lib.

All of the threaded servers now make use of these libraries.
This reduces the number of times that many source files were
recompiled for each server directory.

util_GetInt32 was defined in both src/util/volparse.c and
src/WINNT/afsd/fs_utils.c.  Now that mtafsutil.lib is being
used within src/WINNT/afsd there is no need to maintain the
duplicate copy.

The export list for afsauthent.def now includes all of the
ubik_PR_xxxx function variants and afsrpc.def now include
rxi_CallError as it is linked to outside the rx library.

The top-level NTMakefile has been modified to permit the
tree to build with the new header and library dependencies.

The threaded volserver which never built before now does.

LICENSE MIT

Reviewed-on: http://gerrit.openafs.org/77
Verified-by: Russ Allbery <rra@stanford.edu>
Reviewed-by: Russ Allbery <rra@stanford.edu>
Verified-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Asanka Herath <asanka@secure-endpoints.com>
Verified-by: Asanka Herath <asanka@secure-endpoints.com>
Verified-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

13 files changed:
src/NTMakefile
src/WINNT/afsd/NTMakefile
src/WINNT/afsd/fs_utils.c
src/config/NTMakefile
src/libafsauthent/afsauthent.def
src/libafsrpc/afsrpc.def
src/rx/rx_globals.h
src/tbutc/NTMakefile
src/tviced/NTMakefile
src/tvolser/NTMakefile
src/ubik/NTMakefile
src/util/NTMakefile
src/vol/NTMakefile

index 59c640e..1e8bd86 100644 (file)
@@ -81,7 +81,21 @@ rx_headers:
        $(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)\$@
@@ -186,14 +200,7 @@ rxkad: rxstat
        $(NTMAKE)
        $(CD) ..\..
 
-pthread: rxkad
-     @echo ***** $@
-       $(DOCD) $(SRC)\WINNT\$@
-       $(CD) $(SRC)\WINNT\$@
-       $(NTMAKE)
-       $(CD) ..\..\..
-
-procmgmt: pthread
+procmgmt: rxkad
      @echo ***** $@
        $(DOCD) $(SRC)\$@
        $(CD) $(SRC)\$@
@@ -423,7 +430,14 @@ tviced: libafsauthent
        $(NTMAKE)
        $(CD) ..\..
 
-tbutc:  tviced
+tvolser: tviced
+     @echo ***** $@
+       $(DOCD) $(SRC)\$@
+       $(CD) $(SRC)\$@
+       $(NTMAKE)
+       $(CD) ..\..
+
+tbutc:  tvolser
      @echo ***** $@
      $(DOCD) $(SRC)\$@
      $(CD) $(SRC)\$@
index 3ff5122..5a59510 100644 (file)
@@ -380,7 +380,7 @@ AFSD_EXELIBS =\
        $(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 \
@@ -453,10 +453,9 @@ 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
 
 $(OUT)\kpasswd.obj: $(KAUTH)/kpasswd.c
        $(C2OBJ) -DAFS_PTHREAD_ENV /Fo$@ $**
index 84c990a..9f18f78 100644 (file)
@@ -140,51 +140,6 @@ static int getmeta(int ac) {
     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";
index 52b6a2a..8b9aa88 100644 (file)
@@ -200,6 +200,9 @@ idirs: doclink
 !      IF (!EXIST($(OJT)\tviced))
                $(MKDIR) $(OJT)\tviced
 !      ENDIF
+!      IF (!EXIST($(OJT)\tvolser))
+               $(MKDIR) $(OJT)\tvolser
+!      ENDIF
 !      IF (!EXIST($(OJT)\ubik))
                $(MKDIR) $(OJT)\ubik
 !      ENDIF
index 7cb09b0..cd33f9f 100644 (file)
@@ -54,7 +54,7 @@ EXPORTS
        pthread_recursive_mutex_unlock                  @53
        grmutex                                         @54 DATA
        initAFSDirPath                                  @55
-       renamefile                                      @56
+;      renamefile                                      @56
        opendir                                         @57
        readdir                                         @58
        closedir                                        @59
@@ -116,3 +116,26 @@ EXPORTS
        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
index f0e7d4e..e727d04 100644 (file)
@@ -246,6 +246,7 @@ EXPORTS
         rx_WriteProc32                          @251
         xdr_free                                @252
         RXAFS_FsCmd                             @253
+        rxi_CallError                           @254
 
 ; for performance testing
         rx_TSFPQGlobSize                        @2001 DATA
index 2ebeea3..94b544f 100644 (file)
 #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 */
@@ -617,7 +615,7 @@ EXT afs_kmutex_t rx_pthread_mutex;  /* used to protect pthread counters */
 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
index 11b4500..bd04c80 100644 (file)
@@ -29,7 +29,7 @@ FSINT   =..\fsint
 BUTM    =..\butm
 BUTC    =..\butc
 BUCOORD = ..\bucoord
-VOLSER  = ..\volser
+VOLSER  = ..\tvolser
 
 BUCOORDOBJS = $(OUT)\ubik_db_if.obj \
     $(OUT)\$(BUCOORD)\volstub.obj \
@@ -37,16 +37,6 @@ BUCOORDOBJS = $(OUT)\ubik_db_if.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 \
@@ -72,14 +62,14 @@ BUTCRES = $(OUT)\butc.res
 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 \
@@ -147,16 +137,6 @@ $(OUT)\butc_xbsa.obj: $(BUTC)/butc_xbsa.c
 $(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
index 5acfd10..0cf3ebe 100644 (file)
@@ -20,12 +20,9 @@ EXEFILE = $(DESTDIR)\root.server\usr\afs\bin\fileserver.exe
 
 VICED = ..\viced
 TVICED = .
-VLSERVER = ..\vlserver
 LWP = ..\lwp
 LIBACL = ..\libacl
-UTIL = ..\util
 DIR = ..\dir
-VOL = ..\vol
 FSINT = ..\fsint
 RX = ..\rx
 
@@ -33,28 +30,21 @@ RXOBJS = $(OUT)\xdr_int64.obj \
          $(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
 
@@ -64,16 +54,13 @@ $(RXOBJS): $(RX)\$$(@B).c
        $(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) $**
@@ -81,21 +68,14 @@ $(LWPOBJS): $(LWP)\$$(@B).C
 $(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 \
@@ -103,7 +83,9 @@ EXELIBS = \
        $(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)
index 64bcb2d..cad8a55 100644 (file)
@@ -10,15 +10,16 @@ AFSDEV_AUXCDEFINES = -DAFS_PTHREAD_ENV -DRXDEBUG -DFSSYNC_BUILD_CLIENT
 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
@@ -33,87 +34,115 @@ INCFILES = \
        $(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)
 
 
@@ -121,7 +150,7 @@ install: $(LOCAL_INCFILES) $(LIBFILE) $(VOLSERVER_EXEFILE) $(CL_VOS_EXEFILE) \
 # 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:
index ac1a40c..17118b3 100644 (file)
@@ -48,6 +48,44 @@ $(LIBFILE): $(LIBOBJS)
        $(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
@@ -112,7 +150,7 @@ uerrors.c ubik.h: uerrors.et ubik.p.h
 
 install9X: $(INCFILES) $(LIBFILE)
 
-install: $(INCFILES) $(LIBFILE)  $(CL_UDBG_EXEFILE)
+install: $(INCFILES) $(LIBFILE) $(MT_LIBFILE) $(CL_UDBG_EXEFILE)
 
 
 clean::
index cdcbf79..6cd9063 100644 (file)
@@ -27,7 +27,8 @@ INCFILES =\
        $(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) $** $@
@@ -37,6 +38,8 @@ $(DESTDIR)\include\afs\dirpath.h: dirpath_nt.h
 
 LIBFILE = $(DESTDIR)\lib\afs\afsutil.lib
 
+MT_LIBFILE = $(DESTDIR)\lib\afs\mtafsutil.lib
+
 LIBOBJS = \
        $(OUT)\assert.obj \
        $(OUT)\base32.obj \
@@ -62,13 +65,49 @@ LIBOBJS = \
        $(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
 
index 4141402..c48d7fd 100644 (file)
@@ -36,6 +36,8 @@ INCFILES =\
 
 LIBFILE = $(DESTDIR)\lib\afs\afsvol.lib
 
+MT_LIBFILE = $(DESTDIR)\lib\afs\mtafsvol.lib
+
 LIBOBJS =\
        $(OUT)\common.obj \
        $(OUT)\clone.obj \
@@ -52,10 +54,57 @@ LIBOBJS =\
        $(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
@@ -133,7 +182,7 @@ $(OUT)\volinfo.res: AFS_component_version_number.h
 
 ############################################################################
 # Install targets
-install: $(INCFILES) $(LIBFILE) $(SALVAGER) $(VOLINFO) 
+install: $(INCFILES) $(LIBFILE) $(MT_LIBFILE) $(SALVAGER) $(VOLINFO) 
 
 mkdir: