[OpenAFS-devel] Build instructions for Windows NT/2000

James Peterson jimpeter@us.ibm.com
Thu, 6 Dec 2001 16:29:59 -0800


Here are patches(based on 1.2.2a) for a revised version of the
src/README_NT file.

The document now provides a step by step procedure that takes the user from
a basic Windows NT/2000 workstation to an OpenAFS development environment.
Details are provided so that a 'beginning' windows developer can build an
OpenAFS  installable package for Windows NT/2000.  Comments/questions are
welcome.

diff -Nur --exclude-from=exclude bas/README-NT upd/README-NT
--- bas/README-NT   Mon Sep 10 14:08:14 2001
+++ upd/README-NT   Thu Dec  6 16:24:40 2001
@@ -3,199 +3,510 @@

 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 on-line at http://www.openafs.org/dl/license10.html
+directory or on-line at http://www.OpenAFS.org/dl/license10.html

-Building OpenAFS on Windows NT
-------------------------------
+***********   Windows NT/2000 Build Process ****************

-There are several steps that must be performed before a successful
-build of AFS on Windows NT can be completed. These steps are as follows:
+Building Open AFS for Windows requires configuring a Windows
+development system by installing compilation tools and header files.
+Open AFS Software development can be done on Windows NT or 2000.  The
+target system, where Open AFS will be installed, should be either
+Windows NT or Windows 2000.  The building process is controlled by a
+nmake file that generates the necessary binaries and binds them into an
+install package.

-   A. Install a compiler
-   B. Add missing header files
-   C. Optional: Install Installshield 5.x
-   D. Optional: Install flex and bison
-   E. Configure the OpenAFS build environment
-   F. Begin the build
+The following steps describe how to configure Windows 2000/NT:

-Each step is explained in detail below:
+   A. Obtain a copy of the AFS Open Source Tree
+   B. Install Compiler and Development tools.
+   C. Set up drive mapping.
+   D. Install SDK header files
+   E. Configure Environment variables
+   F. Set program version Level
+   G. Build Win2000 binaries
+   H. Install InstallShield 5.x
+   I. Build Win2000 InstallShield Package
+   J. Build Win2000 InstallShield Package for the Web
+   K. Final Results
+   L. Optional Items
+   M. Required patches for 1.2.2a and earlier releases
+
+The Software development tools with InstallShield require 900 MB
+storage.

-A. Install a compiler
+The Software development tools (with out InstallShield) require 660 MB
+storage.

-   You must install a copy of Microsoft Visual C++ 5.0 or 6.0. The
-   "Typical" install setting is sufficient. It may be possible to use
-   other compilers, but the source code as provided will work with MS
-   VC++ 5.0/6.0.
+The Open AFS Source directory requires about 200 MB storage. The Source
+directory size includes additional space for files that will be
+generated during the build process.

-B. Add missing header files
+The following CDs' are used in this example:
+    Microsoft SDK and Tools Jan 2001
+    Microsoft Visual Studio Version 6.0
+    InstallShield 5.5

-   Files from Microsoft's Device Driver Development kits for NT and
-   Windows 9x are required to complete a build on NT. They are
-   copyrighted by Microsoft and so cannot be included with the OpenAFS
-   source tree. These files are:
+Different versions of above CDs' can be used; however, building an
+install package for Windows NT/2000 requires InstallShield
+version 5.0 to 5.5 (version 6.0 or better will not work).

-   netmpr.h
-   netspi.h
-   npapi.h
+You can build all the necessary binaries without out the InstallShield
+software. InstallShield is only needed to build an install package.

-   These files come from Microsoft DDKs as follows:
+STEP A. Obtain a copy of the Open AFS Source Tree.

-   January 1997 Windows NT Workstation DDK - /ddk/frc/network/inc/npapi.h
-   July 1998 Windows 95 DDK - net/inc/netmpr.h and net/inc/netspi.h
+Transfer Open AFS source tree onto your hardrive.  The source can be
+downloaded from the Open AFS web site:
+    http://www.OpenAFS.org/release/snapindex.html.

-   The may also be available on more recent releases of the DDKs.
-   These files must live on the include path.
+For this example, download source for version 1.2.2a using the
+following URL:
+http://www.openafs.org/dl/openafs/1.2.2a/openafs-1.2.2a-src.tar

-C. Optional: Install Installshield 5.x
+HINT: DailySnapShots are pre-release source trees and much more
+likely to have compilation errors. If this is your first attempt, do
+your build based on a release version of the source, e.g. 1.2.2.a. Once
+you have completed a build process successfully, you can experiment with
+other source trees.

-   There are two ways to build OpenAFS on NT:
-      1. Build of the product, or
-      2. build of the product plus an installer package
+You will need an unzip utility that can expand compressed tar files.
+For example "Pkzip for Windows" from Pkware will uncompress tar files.
+(http://www.pkware.com/)

-   In order to do the build that includes the installer package, a
-   copy of Installshield 5.x must be installed. NOTE: Installshield
-   versions 6 and higher WILL NOT WORK.
+Expand the downloaded tar file (openafs-1.2.2a-src.tar) into target
+directory (c:\OpenAFS), the unzip routine will expand the source into a
+subdirectory tree:
+         c:\OpenAFS\OpenAFS-1.2.2a\src

-   Optional DLL's missing for Install Script
-   Two Microsoft DLL's must be included at DEST\WinInstall\Config\.
-    SHLWAPI.DLL
-    WININET.DLL
+Copy files NTMAKEFILE from 'src' to the AFS base directory:

-    These files are only used for the Install, they will not be left
-    on the target machine.
+From a DOS command prompt window, enter the following copy commands:

-D. Optional: Install flex and bison
+copy c:\OpenAFS\OpenAFS-1.2.2a\src\NTMAKEFILE c:\OpenAFS\OpenAFS-1.2.2a\.

-   There are two files in the source tree that are processed with lex
-   and yacc on UNIX systems, src/comerr/et_lex.lex.l and
-   src/comerr/error_table.y, that when processed produce the files
-   et_lex.lex_nt.c, error_table_nt.c, and error_table_nt.h.
+The AFS base directory should look something like the following:

-   Since NT does not include lex and yacc or any equivalent tools, we
-   have provided the output files that lex and yacc produce (using
-   Win32 ports of flex and bison). This will allow builds to work for
-   anyone who does not need to change the .l and .y files.
+c:\OpenAFS\OpenAFS-1.2.2a\
+  NTMakefile
+  src
+
+STEP B. Install compiler and development tools.

-   If you do need to change et_lex.lex.l, then you will need to
-   install Win32 port of flex on your system. Put flex.exe in a
-   directory on the path and rebuild.
+Install a copy of Microsoft Visual C++ 5.0 or 6.0. The "Typical" install
+setting is sufficient.

-   If you do need to change error_table.y, then you will need to
-   install a Win32 port of bison on your system. Put bison.exe in a
-   directory on the path, configure bison as explained in step 5, and
-   rebuild.
+(1) You can reduce the installation size by selecting "Custom" install
+and remove all but the following Options:

-   You can also attempt to use other replacements for lex and yacc.
-   This will require modifying the LEX and YACC settings in
-   src/config/NTMakefile.i386_nt40. If the replacements require
-   different command line options than flex and bison, then you may
-   also need to change src/comerr/NTMakefile.
+    Microsoft Visual C++
+    Data Access

-E. Configure the OpenAFS build environment
+(2) When asked, Select to Register Environment Variables.

-   A set of environment variables used by the OpenAFS makefiles must
-   be properly set for a build to successfully complete. The file
-   src/ntbuild.bat is a DOS-style batch file that will configure these
-   settings for you. Within this file there are the following lines
-   that must be set to match your system settings:
+(3) After rebooting you have to choice to install additional software
+packages. It is not necessary to install these packages.

-   * set SYS_NAME=<sys type>
+STEP C. Map development drive letters.

-   * set MSVCDIR=<path to vc directory of MS Visual C++>
-   Ex: set MSVCDIR=c:\progra~1\DevStudio\vc
+The following documentation will assume you are mapping the Y: drive to
+the Open AFS source directory and your are mapping X: drive to your
+development tools directory. Other configurations will work, including
+not mapping any drives, as long as the path assignments are consistent
+and you don't exceed the maximum environment variable length.

-      This is the path to the compiler directory of the Microsoft Visual
-      C++ installation.
+Y: drive mapping provides a consistent directory location to build from.
+Building Open AFS will require you to open up a command DOS prompt,
+navigate to drive Y: and execute the nmake file.  The source is based
+from Y: drive and the generated files are based from Y:\DEST.  If Open
+AFS source tree is at a different location, you only need to re-map the
+Y: drive.

-   * set AFSDEV_INCLUDE=<default include directories>
-   Ex: set AFSDEV_INCLUDE=%MSVCDIR%\include;%MSVCDIR%\mfc\include
+X: drive mapping shortens the length of several Environment variables
+by mapping it to a directory where Visual Studio is installed. Although
+this step is not important when using Windows NT or 2000 as a
+development computer, it does reduce the chance of typing errors during
+the configuration phase.

-      This contains a semicolon separated list of directories that
-      contain compiler provided include files. You should not need to
-      edit this other than to point to the DDK includes not provided
-      with the distribution
+From a DOS command window enter the following commands:

-   * set AFSROOT=<Root directory of OpenAFS - parent of the src directory>
-   Ex: set AFSROOT=d:\OpenAFS
+SUBST  y: c:\OpenAFS\OpenAFS-1.2.2a
+SUBST  x: "c:\Program Files\Microsoft Visual Studio\VC98"

-      This is the root directory of OpenAFS, which is the parent
-      directory of the src directory.
+SUBST is persistent across DOS command prompts; that is, if you open up
+another DOS command prompt the mapped drives are still defined.
+However, if you reboot the mapped drives using SUBST will be lost.

-   * set IS5ROOT=<root directory of the Installshield5 program files>
-   Ex: set IS5ROOT=d:\progra~1\instal~1\instal~1.1pr
+If you need to remove Y: drive mapping, execute the following command
+from a DOS command prompt window:

-      This is the path to the Installshield5 program directory. You
-      should only define this if you have Installshield installed on
-      your computer and want to create the install script as part of
-      the build.
+SUBST  y: /d

-   NOTES: There are other settings in ntbuild.bat, but the ones listed
-         above must be set correctly for the build to succeed.
+STEP D. Install SDK header files.

-          As can be seen in the examples above, all paths in
-          ntbuild.bat must be in the old MSDOS 8.3 format.
+Files from Microsoft's Platform SDK for NT or 98 are required to
+complete a build on NT/2000.

-F. Set version and installation options
+The header files that are required are found from a Microsoft SDK are:

-    Modify .\src\config\NTMakefile.i386_nt40
-         AFSPRODUCT_VERSION  - Product version
-         CELLNAME_DEFAULT - The default AFS cell name
-         CELLSERVDB_INSTALL - The default name for the CellServDB included
in the install script
-         CELLSERVDB_WEB  - The default web address to obtain CellServDB
+   netspi.h
+   npapi.h

-For Example:
+To Install Platform SDK from CDROM
+
+    Run "setup.exe default.htm" from CDROM:
+    Select Microsoft Core SDK
+    Select Sample and Source
+    Select installation path x:\SDK
+
+To Install Windows SDK from WEB:
+    http://www.microsoft.com/sdk
+
+STEP E. Configure the OpenAFS build environment.
+
+The following environment variables should be set:
+
+SET AFSDEV_LIB=%LIB%
+SET AFSROOT=Y:
+SET SYS_NAME=i386_nt40
+SET _WIN32_IE=0x400
+SET MSSDK=X:\Sdk
+SET MSTOOLS=X:\Sdk
+SET MSVCDIR=X:
+SET AFSDEV_BIN=X:\BIN
+SET AFSDEV_BUILDTYPE=FREE
+SET AFSDEV_INCLUDE=X:\Sdk\samples\winbase\security\winnt\logonNP;X:
\Sdk\Include\ATL30;X:\Sdk\Include;%INCLUDE%
+
+Please do not include unnecessary spaces in AFSDEV_INLCUDE.
+
+Create a batch file (SETAFS.BAT) that can be executed when you bring up
+a DOS command prompt window.  Environment variables are not persistent,
+if you close the DOS command window or reboot, the environment variables
+are lost and they must be recreated when you open a new DOS command
+prompt window.
+
+HINT: SET AFSDEV_BUILDTYPE=CHECKED if you want debug information
+included in your binaries.
+
+HINT: Adding drive mapping commands to the batch file makes it easy to
+establish your development environment even if you logoff.  I suggest
+adding the following lines to the beginning of the batch file:
+
+SUBST  y: /d
+SUBST  x: /d
+SUBST  y: c:\OpenAfs\OpenAFS-1.2.2a
+SUBST  x: "c:\Program Files\Microsoft Visual Studio\VC98"
+
+HINT: Windows 2000/NT provides an alternate way to set environment
+variables in System Proprieties.  These can be accessed from the system
+control panel, advanced tab, Environment Variables.  These are
+persistent and will be reset every time a DOS command prompt window is
+opened.
+
+STEP F. Set version and installation options
+
+Add a CellServDB file to install area. CellServDB contains the entries
+for the various cell names.  You can download a general purpose one
+from:
+    http://grand.central.org/dl/cellservdb/CellServDB
+then copy it to Y:\DEST\Wininstall\Config\CellServDB.GrandCentral
+
+Note: Create directory Y:\DEST\Wininstall\Config\ if it doesn't exist.
+
+Edit file Y:\src\config\NTMakefile.i386_nt40
+    AFSPRODUCT_VERSION  - Product version
+    CELLSERVDB_INSTALL - The default file name for the CellServDB
+    included in the install Package.
+    CELLNAME_DEFAULT -  The default home cell name.
+    CELLSERVDB_WEB  - The default web address to obtain CellServDB

- .\src\config\NTMakefile.i386_nt40
+For Example: in the file Y:\src\config\NTMakefile.i386_nt40 you would
+see the following:

-   AFSPRODUCT_VERSION=1.1.1a
-   CELLNAME_DEFAULT=openafs.org
+   AFSPRODUCT_VERSION=1.2.2a
+   CELLNAME_DEFAULT=home.cell.com
    CELLSERVDB_INSTALL=CellServDB.GrandCentral
    CELLSERVDB_WEB=http://grand.central.org/dl/cellservdb/CellServDB

-NOTE: If CELLNAME_DEFAULT has a '.' in cell name, then the name is assumed
to be
-a valid cell name and when the user installs AFS the AFS Control Center
-will default to NOT installed!
-
-Version level may be specified in different formats, for example the
following
-forms all have the same version level; however will be displayed
differently:
-
-AFSPRODUCT_VERSION=1.1.1a
-AFSPRODUCT_VERSION=1.1.1 a
-AFSPRODUCT_VERSION=1.1.1.1
-AFSPRODUCT_VERSION=1.1.101
-
-Add CellServDB file to install area.
-     For the previous example you would add file:
-          DEST\Winistall\Config\CellServDB.GrandCentral
-
-G. Begin the build
-
- 1. Make sure you are running the default NT command shell, cmd.exe.
-    Other shells may work, but many do not.
-
- 2. Run the ntbuild.bat file that was configured in step 5. You can
-    include the word "checked" on the command line to create binaries
-    that include debug information, or the word "free" to create
-    binaries that do not include debug information.
-
-    For a debug build, run:
-       ntbuild checked
-
-    For a release build, run:
-       ntbuild free
-
- 3. Copy the file src/NTMakefile to the parent of the src directory.
-    You only need to do this once.
-
- 4. If you have not created a separate object build directory, edit
NTMakefile and
-    OBJ=obj to OBJ=src.
-
- 5. Begin the build. You can choose to build just the product bits,
-    or, if Installshield is installed, the product bits and the
-    install package.
-
-    To build just the product bits, run:
-       nmake /f NTMakefile install
-
-    To build the product bits and the install package, run:
-       nmake /f NTMakefile media
+During the Open AFS installation process the user will be presented
+with two choices for the CellServDB: Local copy (CELLSERVDB_INSTALL) and
+one that can be downloaded from the web (CELLSERVDB_WEB).
+
+HINT: The product version number (AFSPRODUCT_VERSION) can be changed to
+create a new version number.  For example if you have added source
+changes to OpenAFS-1.2.2a and you wanted to create a new version level,
+you may want to use the following: AFSPRODUCT_VERSION=1.2.2b
+
+STEP G. Begin the build
+
+(1) From Windows 2000 open up a DOS prompt window.
+
+(2) Clean the work area.
+
+    nmake /f NTMakefile clean
+
+(3) Build the complete Windows NT/2000 development environment.
+
+    nmake /f NTMakefile install
+
+While the build is running you will see many compile warnings. This
+behavior is normal; the build process is successful as long as the build
+process doesn't terminate with an error ("nmake.exe return code 0x2")
+and it displays 'Build Finished Successfully'.
+
+STEP H. Install InstallShield (optional).
+
+In order to build an install package for OpenAFS, InstallShield 5.5
+must be installed along with InstallShield East and West
+multi-Language packs.
+
+(1) Install InstallShield 5.0 upto InstallShield 5.5
+
+For minimum installation choose "compact".
+
+(2) Install West Language Pack (5.5)
+
+(3) Install East Language Pack (5.5)
+
+NOTE: InstallShield's versions 6 and higher WILL NOT WORK for
+Windows NT/2000 build process.
+
+(4) Add necessary DLL's to work with the InstallShield package.
+
+Two Microsoft DLL's are missing from the InstallShield package. These
+DLL's must be copied to Y:\DEST\WinInstall\Config\:
+    SHLWAPI.DLL
+    WININET.DLL
+
+These files are only used during the installation, they will not be left
+on the target machine.  They can located at %SystemRoot%\SYSTEM32
+
+From a DOS command prompt window enter the following commands:
+
+copy %systemRoot%\System32\SHLWAPI.DLL y:\dest\wininstall\config\.
+copy %systemRoot%\System32\WININET.DLL y:\dest\wininstall\config\.
+
+(5) Add two Environment variables to the bottom of the batch file,
+SETAFS.BAT (see STEP E:).
+
+SET IS5ROOT="C:\Program Files\InstallShield\InstallShield 5.5 Professional
Edition"
+SET AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;X:\InstallShield\Include
+
+STEP I.  Build Win2000 InstallShield package
+
+From the DOS command prompt window run:
+
+    Y:
+    nmake /f NTMakefile media
+
+While the build is running you will see a few compile warnings. This
+behavior is normal; the build process is successful as long as the build
+process doesn't terminate with an error ("nmake.exe return code 0x2")
+and it displays 'Install Script Finished Successfully'.
+
+STEP J.  Build Win2000 InstallShield package for the Web
+
+InstallShield's PackageForTheWeb combines the installation files into a
+single application file that will expand on execution and lead you
+through the Open AFS installation.
+
+Install PackForTheWeb 3 from InstallShield
+
+Add Environment variables to the bottom of the batch file, SETAFS.BAT
+(see STEP E:).
+
+SET ISWEB="C:\Program Files\InstallShield\PackageForTheWeb 3"
+
+From the DOS command prompt window run:
+
+    Y:
+    nmake /f NTMakefile media
+
+While the build is running you will see a few compile warnings. This
+behavior is normal; the build process is successful as long as the build
+process doesn't terminate with an error ("nmake.exe return code 0x2") and
+it displays 'Install Script Finished Successfully'.
+
+HINT:  It is only necessary to run "nmake /f NTMakefile media" once,
combine
+STEPs I & J.
+
+STEP K. Final Results
+
+The build process generates its binaries in Y:\DEST. The subdirectory
+would look like the following:
+
+Y:\DEST
+    bin
+    etc
+    include
+    lib
+    root.client
+    root.server
+    WinInstall
+
+Y:\DEST\Bin - contains build utilities.
+Y:\DEST\root.client - contains Open AFS binaries
+Y:\DEST\root.server - contain Open AFS Server binaries
+Y:\DEST\WinInstall\PackageWeb\AFSforWindows.exe - is the Web install
+package for Open AFS.
+Y:\DEST\WinInstall\ - are the install package files for Open AFS
+
+STEP L. Optional Items
+
+The build process has an error table that is compiled for many OpenAFS
+applications.  This table is generated by Unix based tools.  It is not
+normally necessary to modify this table so pre-generated source files
+are included in the Open AFS source.  If you need to make modifications
+in these areas the Unix base tools that run on Windows can be found on
+the web. For example:
+
+    http://cygwin.com/
+
+Below is a short explanation how to update the error table.
+
+(1) Install flex and bison from a Unix based tool provider.
+
+(2) Make changes to the source files.
+
+There are two files in the source tree that are processed with lex
+and yacc on UNIX systems, src/comerr/et_lex.lex.l and
+src/comerr/error_table.y, that when processed produce the files
+et_lex.lex_nt.c, error_table_nt.c, and error_table_nt.h.
+
+Since NT does not include lex and yacc or any equivalent tools, we
+have provided the output files that lex and yacc produce (using Win32
+ports of flex and bison). This will allow builds to work for anyone
+who does not need to change the .l and .y files.
+
+If you do need to change et_lex.lex.l, then you will need to install
+Win32 port of flex on your system. Put flex.exe in a directory on the
+path and rebuild.
+
+If you do need to change error_table.y, then you will need to install
+a Win32 port of bison on your system. Put bison.exe in a directory on
+the path, configure bison as explained in step 5, and rebuild.
+
+You can also attempt to use other replacements for lex and yacc. This
+will require modifying the LEX and YACC settings in
+/config/NTMakefile.i386_nt40. If the replacements require different
+command line options than flex and bison, then you may also need to
+change src/comerr/NTMakefile.
+
+(3) Generate new OpenAFS binaries
+
+
+STEP M. Required patches for 1.2.2a and earlier releases
+
+There are two set of patches must be applied to 1.2.2a source to
+successfully build the binaries:
+
+(1)  Patches applied to 1.2.2a to build binaries, excluding install
+package.
+
+diff -Nur --exclude-from=exclude bas/src/NTMakefile upd/src/NTMakefile
+--- bas/src/NTMakefile  Wed Nov 14 19:38:06 2001
++++ upd/src/NTMakefile  Mon Dec  3 14:41:12 2001
+@@ -471,6 +471,7 @@
+    $(CD) $(OBJ)\$@
+    $(NTMAKE)
+    $(CD) ..\..
++   echo Build Finished Successfully
+
+ install: start finale
+
+@@ -487,6 +488,7 @@
+    $(CD) ..\..\..\..
+
+ media: InstallShield5
++   echo Install Script Finished Successfully
+
+
+(2)  Patches applied to 1.2.2a to build install package.
+
+diff -Nur --exclude-from=exclude bas/src/WINNT/afsd/NTMakefile
upd/src/WINNT/afsd/NTMakefile
+--- bas/src/WINNT/afsd/NTMakefile Tue Nov 20 22:45:40 2001
++++ upd/src/WINNT/afsd/NTMakefile Wed Dec  5 11:42:46 2001
+@@ -169,8 +169,8 @@
+    $(EXEDIR)\tokens.exe \
+    $(EXEDIR)\unlog.exe $(EXEDIR)\afsd.exe $(EXEDIR)\afsd_service.exe \
+    $(EXEDIR)\fs.exe $(EXEDIR)\symlink.exe \
+-   $(LOGON_DLLFILE) $(LOG95_DLLFILE) \
+-   $(EXEDIR)\afsshare.exe \
++   $(LOGON_DLLFILE) \
++   $(EXEDIR)\afsshare.exe \
+    $(DESTDIR)\bin\kpasswd.exe
+
+ install9X: install_headers $(CONF_DLLFILE) \
+
+diff -Nur --exclude-from=exclude
bas/src/WINNT/install/InstallShield5/NTMakefile
upd/src/WINNT/install/InstallShield5/NTMakefile
+--- bas/src/WINNT/install/InstallShield5/NTMakefile    Wed Nov 14 19:38:50
2001
++++ upd/src/WINNT/install/InstallShield5/NTMakefile    Mon Dec  3 16:43:08
2001
+@@ -60,7 +60,7 @@
+         $(MKDIR) $(DESTDIR)\Wininstall\PackageWeb
+ !  ENDIF
+    $(DEL) /q $(DESTDIR)\Wininstall\PackageWeb\*.*
+-   $(ISWEB)\Pftwwiz.exe $(AFSROOT)
\src\winnt\install\InstallShield5\PackageWeb.pfw -s -a
++   "$(ISWEB)\Pftwwiz.exe" $(AFSROOT)
\src\winnt\install\InstallShield5\PackageWeb.pfw -s -a
+ !ENDIF
+    xcopy /s/e/y "Media\OpenAFS\Disk Images\disk1\*.*" $(DESTDIR)
\WinInstall
+    copy AFS_component_version_number.txt $(DESTDIR)
\WinInstall\Version.txt
+diff -Nur --exclude-from=exclude
bas/src/WINNT/afs_setup_utils/_isuser/_IsUser.RC
upd/src/WINNT/afs_setup_utils/_isuser/_IsUser.RC
+--- bas/src/WINNT/afs_setup_utils/_isuser/_IsUser.RC   Thu Sep  6 20:54:58
2001
++++ upd/src/WINNT/afs_setup_utils/_isuser/_IsUser.RC   Mon Dec  3 15:11:46
2001
+@@ -10,7 +10,7 @@
+ #define APSTUDIO_HIDDEN_SYMBOLS
+ #include "windows.h"
+ #undef APSTUDIO_HIDDEN_SYMBOLS
+-#include <.\sdrc.h>
++#include <sdrc.h>
+
+
/////////////////////////////////////////////////////////////////////////////
+ #undef APSTUDIO_READONLY_SYMBOLS
+diff -Nur --exclude-from=exclude
bas/src/WINNT/afs_setup_utils/_isuser/_IsUser.dep
upd/src/WINNT/afs_setup_utils/_isuser/_IsUser.dep
+--- bas/src/WINNT/afs_setup_utils/_isuser/_IsUser.dep  Thu Sep  6 20:54:58
2001
++++ upd/src/WINNT/afs_setup_utils/_isuser/_IsUser.dep  Wed Dec 31 16:00:00
1969
+@@ -1,5 +0,0 @@
+-# Microsoft Developer Studio Generated Dependency File, included by
_IsUser.mak
+-
+-.\_Isuser.RC : \
+-   ".\sdrc.h"\
+-
+diff -Nur --exclude-from=exclude
bas/src/WINNT/afs_setup_utils/_isuser/ntmakefile
upd/src/WINNT/afs_setup_utils/_isuser/ntmakefile
+--- bas/src/WINNT/afs_setup_utils/_isuser/ntmakefile   Mon Sep 10 09:39:50
2001
++++ upd/src/WINNT/afs_setup_utils/_isuser/ntmakefile   Mon Dec  3 15:16:04
2001
+@@ -30,14 +30,6 @@
+ "$(OUTDIR)" ::
+     if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+-HEADERS = ".\sdrc.h"
+-
+-".\sdrc.h" : $(IS5ROOT)\INCLUDE\sdrc.h
+-    $(COPY) $(IS5ROOT)\INCLUDE\sdrc.h .
+-!   IF EXIST($(IS5ROOT)\Script\ISRT\Include\sdrc.h)
+-    $(COPY) $(IS5ROOT)\Script\ISRT\Include\sdrc.h .
+-!      ENDIF
+-
+ CPP=cl.exe
+ CPP_PROJ=/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D
"_MBCS" /D "_USRDLL" /D "_ISUSER_EXPORTS" /YX /Fo"$(INTDIR)\\" /Fd"
$(INTDIR)\\" /FD /c
+
+@@ -85,20 +77,10 @@
+    "$(INTDIR)\_isuser.obj" \
+    "$(INTDIR)\_Isuser.res"
+
+-"$(OUTDIR)\_IsUser.dll" : "$(OUTDIR)" $(HEADERS) $(DEF_FILE)
$(LINK32_OBJS)
++"$(OUTDIR)\_IsUser.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+     $(LINK32) @<<
+   $(LINK32_FLAGS) $(LINK32_OBJS)
+ <<
+-
+-
+-!IF "$(NO_EXTERNAL_DEPS)" != "1"
+-!IF EXISTS("_IsUser.dep")
+-!INCLUDE "_IsUser.dep"
+-!ELSE
+-!MESSAGE Warning: cannot find "_IsUser.dep"
+-!ENDIF
+-!ENDIF
+-
+
+ SOURCE=.\_isuser.c
+