krb5 commit: Update Windows build instructions

Greg Hudson ghudson at mit.edu
Sun May 13 01:13:47 EDT 2018


https://github.com/krb5/krb5/commit/ba250f7264f5ac03e98946d32c9c8b707b3a6b47
commit ba250f7264f5ac03e98946d32c9c8b707b3a6b47
Author: Greg Hudson <ghudson at mit.edu>
Date:   Wed May 9 12:37:44 2018 -0400

    Update Windows build instructions
    
    Modify windows/README for Visual Studio 2017, which has separate
    32-bit and 64-bit command prompts (and which seems to omit uicc from
    the 64-bit path).  Mention the need for MFC if building leash, and
    describe how to build without leash.
    
    ticket: 8662

 src/windows/README |  165 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 98 insertions(+), 67 deletions(-)

diff --git a/src/windows/README b/src/windows/README
index 02f149c..c79a178 100644
--- a/src/windows/README
+++ b/src/windows/README
@@ -6,61 +6,70 @@ The MIT Kerberos for Windows distribution contains additional components
 not present in the Unix krb5 distribution, most notably the
 MIT Kerberos Ticket Manager application.
 
-To build Kerberos 5 on Windows, you will need the Windows SDK (XP SP3
-or later), VisualStudio (2010 Professional SP1), a version of Perl, and some
-common Unix utilities such as sed/awk/cp/cat installed in the
-command-line path.  To build an MSI installer, you will additionally
-need the Windows Installer XML (WiX) toolkit, and to ensure that
-the HTML Help Compiler (hhc.exe) and the WiX tools are in your command-line
-path.  WiX version 3.5 is verified to work with this codebase; WiX 3.7
-and newer are incompatible with this codebase.  Visual Studio 2012 and
-the Windows SDK 8 introduce some changes which alter the Kerberos build
-procedure slightly (noted where appropriate).
-
-The Unix utilities can be obtained via the Utilities and SDK for UNIX-based
-Aplications, which may be enabled as a Windows feature and then the
-components installed.  Note that the Windows nmake will not find the
-SUA awk utility in the path unless it is named awk.exe; the permissions
-on the utility may need correcting if awk.exe is created as a copy of
-the original awk.
-
-There is a version of perl available through the SUA, but it is not
-sufficient to build krb5.  An external perl such as Strawberry Perl
-or ActiveState Perl is necessary.
+To build Kerberos 5 on Windows, you will need the following:
+
+* A version of Visual Studio which includes the Microsoft Foundation
+  Classes libraries.  These instructions will work for Visual Studio
+  2017 Community or Professional, both of which include the MFC
+  libraries if the "Visual C++ MFC" checkbox is selected after
+  enabling the "Desktop development with C++" workload.  If you do not
+  plan to build the graphical ticket manager application, the MFC
+  libraries are not required.
+
+* A version of Perl.
+
+* Some common Unix utilities such as sed/awk/cp/cat installed in the
+  command-line path.
+
+* To build an MSI installer, the Windows Installer XML (WiX) toolkit,
+  and to ensure that the HTML Help Compiler (hhc.exe) and the WiX
+  tools are in your command-line path.  WiX version 3.11.1 is verified
+  to work with this codebase.
+
+A simple way to get the necessary Unix utilities is to install Git
+BASH from https://gitforwindows.org and configure it to add the Unix
+utilities to the command-line path.  In some versions of Windows (not
+the most current versions), the Unix utilities can alternatively be
+obtained via the Utilities and SDK for UNIX-based Aplications, which
+may be enabled as a Windows feature and then the components installed.
+Note that the Windows nmake will not find the SUA awk utility in the
+path unless it is named awk.exe; the permissions on the utility may
+need correcting if awk.exe is created as a copy of the original awk.
+
+Git BASH contains a version of Perl, which will work to build krb5 if
+the newlines in the source tree are not translated to native newlines.
+Strawberry Perl will work regardless of whether newlines are
+translated.  If both Git BASH and Strawberry Perl are installed, you
+may need to adjust the command line path to ensure that the preferred
+Perl appears first.
 
 The krb5 source tree may be obtained either directly on the Windows
-machine with a native git client cloning the krb5 public mirror
-at https://github.com/krb5/krb5.git or on a separate (Unix) machine
-and copied over, such as from a VM host onto a Windows VM.
-The kerbsrc.zip method is no longer supported.
-
-After the Windows SDK is installed, you should be able to invoke an
-SDK command prompt via the start menu (All Programs -> Microsoft
-Windows SDK vX.Y -> Windows SDK X.Y Command Prompt).  Within this
-window, you can change the build target using the setenv command; run
-"setenv /?" or see the Windows SDK documentation for details.  At the
-current time, Kerberos 5 can only be built for the x64 target if the
-host platform is also 64-bit, because it compiles and runs programs
-during the build.  The Windows SDK version 8 does not provide an SDK
-command prompt; the "Developer Command Prompt for VS2012" or "Visual Studio
-Command Prompt" must be used instead.  Accordingly, there is no setenv script
-to configure the build environment for different target architectures; the
-"vcvarsall.bat" script provided by Visual Studio serves this function.
+machine with a native git client cloning the krb5 public mirror at
+https://github.com/krb5/krb5.git or on a separate (Unix) machine and
+copied over, such as from a VM host onto a Windows VM.  If you are
+checking out the sources with git and are using the Git BASH Perl,
+make sure to set git's core.autocrlf variable to "input" or "false" to
+avoid translating newlines.
+
+After Visual Studio is installed, you should be able to invoke 32-bit
+and 64-bit command prompts via the start menu (Visual Studio 2017 ->
+x86 Native Tools Command Prompt and x64 Native Tools Command Prompt).
+At the current time, Kerberos 5 can only be built for the x64 target
+if the host platform is also 64-bit, because it compiles and runs
+programs during the build.
 
 IMPORTANT NOTE: By default, the sources are built with debug
 information and linked against the debug version of the Microsoft C
 Runtime library, which is not found on most Windows systems unless
-they have development tools, and requires a separate license to distribute.
-To build a release version, you need to define NODEBUG either in the
-environment or the nmake command-line and use setenv to enter a release
-build environment with "setenv /release" (when using Windows SDK versions
-lower than 8).  Debug information in the compiled binaries and libraries
-may be retained by defining DEBUG_SYMBOL in the environment or on the nmake
-command line.
+they have development tools, and requires a separate license to
+distribute.  To build a release version, you need to define NODEBUG
+either in the environment or the nmake command-line.  Debug
+information in the compiled binaries and libraries may be retained by
+defining DEBUG_SYMBOL in the environment or on the nmake command line.
 
 
-Building the code and installer
-------------------------
+Building the code and installer:
+-------------------------------
 
 First, make sure you have sed, (g)awk, cat, and cp.
 You must also define KRB_INSTALL_DIR either in the environment or
@@ -70,29 +79,51 @@ near your build tree.  The directory must exist before nmake install
 is run.  The 64-bit installer provides 32-bit libraries, so a 32-bit build
 and install must be performed before the 64-bit build.
 
- 1) set CPU=i386                        # Get 32-bit target in environment
- 2) set KRB_INSTALL_DIR=\path\to\dir    # Where bin/include/lib lives
- 3) setenv /x86 [/release]              # Tell nmake to target 32-bit
-    (with Visual Studio 2012, use "vcvarsall.bat x86")
- 4) cd xxx/src                          # Go to where the source lives
- 5) nmake -f Makefile.in prep-windows   # Create Makefile for Windows
- 6) nmake [NODEBUG=1]                   # Build the sources
- 7) nmake install [NODEBUG=1]           # Copy headers, libs, executables
- 8) cd windows\installer\wix            # Go to where the installer source is
- 9) nmake                               # Build the installer
-10) rename kfw.msi kfw32.msi            # Save the 32-bit installer
-11) set CPU=AMD64                       # Proceed to the 64-bit build
-12) setenv /x64 [/release]              # Must set both CPU and nmake env
-    ("vcvarsall.bat amd64" for Visual Studio 2012)
-13) cd ..\..\..                         # Back to the sources
-14) nmake clean                         # Clean up the 32-bit objects
-15) nmake [NODEBUG=1]                   # Build the sources for 64-bit
-16) nmake install [NODEBUG=1]           # Copy 64-bit lib/executables
-17) cd windows\installer\wix            # Back to the installer source
+To skip building the graphical ticket manager, run "set NO_LEASH=1"
+before building, and do not build the installers.
+
+In a 32-bit command shell:
+
+ 1) set KRB_INSTALL_DIR=\path\to\dir    # Where bin/include/lib lives
+ 2) cd xxx\src                          # Go to where source lives
+ 3) nmake -f Makefile.in prep-windows   # Create Makefile for Windows
+ 4) nmake [NODEBUG=1]                   # Build the sources
+ 5) nmake install [NODEBUG=1]           # Copy headers, libs, executables
+ 6) cd windows\installer\wix            # Go to where the installer source is
+ 7) set CPU=i386                        # Specify 32-bit target
+ 8) nmake [NODEBUG=1]                   # Build the installer
+ 9) rename kfw.msi kfw32.msi            # Save the 32-bit installer
+
+In a 64-bit command shell:
+
+10) set PATH=%PATH%;"%WindowsSdkVerBinPath%"\x86  # To get uicc.exe
+11) set KRB_INSTALL_DIR=\path\to\dir    # Where bin/include/lib lives
+12) cd xxx\src                          # Go to where source lives
+13) nmake clean                         # Clean up the 32-bit objects
+14) nmake [NODEBUG=1]                   # Build the sources for 64-bit
+15) nmake install [NODEBUG=1]           # Copy 64-bit lib/executables
+16) cd windows\installer\wix            # Back to the installer source
+17) set CPU=AMD64                       # Specify 64-bit target
 18) nmake clean                         # Remove 32-bit leavings
-19) nmake                               # Build the 64-bit installer
+19) nmake [NODEBUG=1]                   # Build the 64-bit installer
 20) rename kfw.msi kfw64.msi            # And name it usefully
 
+Step 10 may be skipped if uicc is already in your command-line path
+(try running "uicc" to see if you get a usage message or a not-found
+error), or if you are not building the graphical ticket manager.
+
+Visual Studio 2012 provides only a single command prompt.  Within this
+prompt, use "vcvarsall.bat x86" and "vcvarsall.bat amd64" to switch to
+32-bit and 64-bit mode.
+
+With Visual Studio 2010, it is necessary to separately install the
+Windows SDK version 7.1 and use the Microsoft Windows SDK -> Windows
+SDK X.Y Command Prompt menu item.  Within this command prompt, run
+"setenv /x86" and "setenv /x64" to switch to 32-bit and 64-bit mode.
+Also include the "/release" option if building with NODEBUG.  If you
+are building with NO_LEASH=1, Visual Studio 2010 itself is not
+necessary; Windows SDK version 7.1 alone is sufficient.
+
 
 Running Kerberos 5 Apps:
 -----------------------


More information about the cvs-krb5 mailing list