diff options
Diffstat (limited to 'windows')
| -rw-r--r-- | windows/NTMakefile.config | 3 | ||||
| -rw-r--r-- | windows/NTMakefile.sdk | 8 | ||||
| -rw-r--r-- | windows/NTMakefile.version | 12 | ||||
| -rw-r--r-- | windows/NTMakefile.w32 | 11 | ||||
| -rw-r--r-- | windows/README.md | 65 |
5 files changed, 70 insertions, 29 deletions
diff --git a/windows/NTMakefile.config b/windows/NTMakefile.config index 7fe373a94976..6227e5afea4e 100644 --- a/windows/NTMakefile.config +++ b/windows/NTMakefile.config @@ -105,9 +105,6 @@ HCRYPTO_FALLBACK=1 # Disable use of GSS LOCALNAME support NO_LOCALNAME=1 -# Windows CRT mkdir does not have the mode parameter -MKDIR_DOES_NOT_HAVE_MODE=1 - # Windows CRT rename does not unlink the target RENAME_DOES_NOT_UNLINK=1 diff --git a/windows/NTMakefile.sdk b/windows/NTMakefile.sdk index bb06c0866485..a9f2b30dfdf3 100644 --- a/windows/NTMakefile.sdk +++ b/windows/NTMakefile.sdk @@ -53,6 +53,8 @@ NMAKE_WINVER=0x0600 NMAKE_WINVER=0x0601 !elseif "$(APPVER)" == "10.0" NMAKE_WINVER=0x0A00 +!else +!error Unknown value for APPVER !endif cc = cl @@ -92,11 +94,11 @@ cdebug = -Zi -Od -DDEBUG cvarsmt = -D_MT cvarsdll = -D_MT -D_DLL !ifdef NODEBUG -cvarsmt = $(cvarsmt) -MTd -cvarsdll = $(cvarsdll) -MDd -!else cvarsmt = $(cvarsmt) -MT cvarsdll = $(cvarsdll) -MD +!else +cvarsmt = $(cvarsmt) -MTd +cvarsdll = $(cvarsdll) -MDd !endif cvars = $(cvarsmt) diff --git a/windows/NTMakefile.version b/windows/NTMakefile.version index 9d4ff0fa279e..51bed6e1265f 100644 --- a/windows/NTMakefile.version +++ b/windows/NTMakefile.version @@ -7,8 +7,8 @@ VER_PACKAGE_COPYRIGHT=Copyright (C) 1995-2016 Royal Institute of Technology, Sto VER_PACKAGE_COMPANY=www.h5l.org VER_PRODUCT_MAJOR=7 -VER_PRODUCT_MINOR=8 -VER_PRODUCT_AUX=0 +VER_PRODUCT_MINOR=99 +VER_PRODUCT_AUX=1 VER_PRODUCT_PATCH=0 # ------------------------------------------------------------ @@ -19,13 +19,13 @@ VER_PRODUCT_PATCH=0 # 1.5.99.65535. VER_OLD_BEGIN_MAJOR=7 -VER_OLD_BEGIN_MINOR=2 +VER_OLD_BEGIN_MINOR=99 VER_OLD_BEGIN_AUX=0 VER_OLD_BEGIN_PATCH=0 VER_OLD_END_MAJOR=7 -VER_OLD_END_MINOR=7 -VER_OLD_END_AUX=65535 +VER_OLD_END_MINOR=99 +VER_OLD_END_AUX=0 VER_OLD_END_PATCH=65535 VER_PACKAGE_VERSION=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX) @@ -36,7 +36,7 @@ VER_DEBUG=1 !endif # Define to 1 if this is a pre-release build. Undefine otherwise -# VER_PRERELEASE=1 +VER_PRERELEASE=1 # Define to a valid string if this build DOES NOT follow normal # release procedures. I.e. this is a private build whose version diff --git a/windows/NTMakefile.w32 b/windows/NTMakefile.w32 index be36d1fe8833..471e783912be 100644 --- a/windows/NTMakefile.w32 +++ b/windows/NTMakefile.w32 @@ -207,6 +207,8 @@ EXEGUILINK_C = $(LINK) $(ldebug) $(guilflags) $(guilibsdll) $(libmach) DLLCONLINK_C = $(LINK) $(ldebug) $(dlllflags) $(conlibsdll) $(libmach) DLLGUILINK_C = $(LINK) $(ldebug) $(dlllflags) $(guilibsdll) $(libmach) +C2OBJ_C_MT = $(CC) $(cdebug) $(cflags) $(cvarsmt) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn) + !else # STATICRUNTIME C2OBJ_C = $(CC) $(cdebug) $(cflags) $(cvarsmt) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn) @@ -440,7 +442,7 @@ clean:: -$(RM) $(OBJ)\*.* !endif -.SUFFIXES: .c .cpp .hin .h .x .hx +.SUFFIXES: .c .cpp .hin .h .hx #---------------------------------------------------------------------- # Manifest handling @@ -510,10 +512,10 @@ SIGNTOOL=signtool.exe !ifdef SIGNTOOL_C !ifndef SIGNTOOL_T -SIGNTOOL_T=http://timestamp.verisign.com/scripts/timstamp.dll +SIGNTOOL_T=http://timestamp.digicert.com !endif !ifndef SIGNTOOL_T_SHA256 -SIGNTOOL_T_SHA256=http://sha256timestamp.ws.symantec.com/sha256/timestamp +SIGNTOOL_T_SHA256=http://timestamp.digicert.com !endif _CODESIGN=( $(SIGNTOOL) sign /fd sha1 $(SIGNTOOL_O) /t $(SIGNTOOL_T) $(SIGNTOOL_C) /v $@ ) @@ -574,9 +576,11 @@ DLLPREP_MERGE=\ # LIBASN1 =$(LIBDIR)\libasn1.lib +LIBASN1_S =$(LIBDIR)\libasn1_s.lib LIBCOMERR =$(LIBDIR)\libcom_err.lib LIBEDITLINE =$(LIBDIR)\libeditline.lib LIBGSSAPI =$(LIBDIR)\libgssapi.lib +LIBGSS_PREAUTH=$(LIBDIR)\libgss_preauth.lib LIBHCRYPTO =$(LIBDIR)\libhcrypto.lib LIBHDB =$(LIBDIR)\libhdb.lib LIBHEIMBASE =$(LIBDIR)\libheimbase.lib @@ -596,6 +600,7 @@ LIBSL =$(LIBDIR)\libsl.lib LIBSQLITE =$(LIBDIR)\libsqlite.lib LIBVERS =$(LIBDIR)\libvers.lib LIBWIND =$(LIBDIR)\libwind.lib +LIBX25519 =$(LIBDIR)\libx25519.lib !ifdef VER_DEBUG ASM_DBG=.Debug diff --git a/windows/README.md b/windows/README.md index 75d6fd5adc41..f58dbf777938 100644 --- a/windows/README.md +++ b/windows/README.md @@ -1,14 +1,14 @@ Building Heimdal for Windows =================== -1. Introduction ---------------- +# 1. Introduction + Heimdal can be built and run on Windows XP or later. Older OSs may work, but have not been tested. -2. Prerequisites ----------------- +# 2. Prerequisites + * __Microsoft Visual C++ Compiler__: Heimdal has been tested with Microsoft Visual C/C++ compiler version 15.x. This corresponds to @@ -25,7 +25,8 @@ work, but have not been tested. * __Perl__: A recent version of Perl. Tested with ActiveState ActivePerl. -* __Python__: Tested with Python 2.5 and 2.6. +* __Python__: Tested with Python 2.5 and 2.6. Python 3.9 is known to not + work. * __WiX__: The Windows [Installer XML toolkit (WiX)][1] Version 3.x is used to build the installers. @@ -37,6 +38,8 @@ work, but have not been tested. However, a recent build of `makeinfo` is required for building the documentation. Cygwin makeinfo 4.7 is known to work. + - Native `makeinfo.exe` is no longer available from cygwin. + * __Certificate for code-signing__: The Heimdal build produces a number of Assemblies that should be signed if they are to be installed via Windows Installer. In addition, all executable @@ -48,14 +51,14 @@ work, but have not been tested. [1]: http://wix.sourceforge.net/ -3. Setting up the build environment ------------------------------------ +# 3. Setting up the build environment + -* Start with a Windows SDK or Visual Studio build environment. The +* Starting with a Windows SDK environment: The target platform, OS and build type (debug / release) is determined by the build environment. - E.g.: If you are using the Windows SDK, you can use the `SetEnv.Cmd` + E.g.: You can use the `SetEnv.Cmd` script to set up a build environment targetting 64-bit Windows XP or later with: @@ -67,6 +70,16 @@ work, but have not been tested. the build will produce release binaries. +* Starting with a Visual Studio build: The target platform and OS is determined + by the build environment. + + E.g.: You can use the `vcvarsall.bat` script to set up an environ,ent + script to set up a build environment targetting 64-bit Windows 10 with: + + vcvarsall.bat x64 10.0.19041.0 -vcvars_ver=14.29 -vcvars_spectre_libs=spectre + + The choice of Debug or Release is made on the `nmake` command line. + * Add any directories to `PATH` as necessary for tools required by the build to be found. The build scripts will check for build tools at the start of the build and will indicate which ones are @@ -94,10 +107,10 @@ work, but have not been tested. set SIGNTOOL_O=/du http://example.com/myheimdal - `SIGNTOOL_T`: SHA1 Timestamp URL for `signtool`. If not specified, - defaults to `http://timestamp.verisign.com/scripts/timstamp.dll`. + defaults to `http://timestamp.digicert.com`. - `SIGNTOOL_T_SHA256`: SHA256 Timestamp URL for `signtool`. If not - specified, defaults to `http://timestamp.geotrust.com/tsa`. + specified, defaults to `http://timestamp.digicert.com`. - `CODESIGN`: SHA1 Code signer command. This environment variable, if defined, overrides the `SIGNTOOL_*` variables. It should be @@ -114,6 +127,11 @@ work, but have not been tested. set CODESIGN=c:\scripts\mycodesigner.cmd set CODESIGN_SHA256=c:\scripts\mycodesigner256.cmd + - 'APPVER'. This environment variable controls the version passed to + the `-subsystem` qualifier for linker. Additionally it helps + locate the runtime library (or otherwise) associated with the + compiler (Not sure how to build for XP with VC2017) + * Define the code sign public key token. This is contained in the environment variable `CODESIGN_PKT` and is needed to build the Heimdal assemblies. If you are not using a code-sign certificate, @@ -133,15 +151,21 @@ work, but have not been tested. set CODESIGN_PKT=abcdef0123456789 -4. Running the build --------------------- +# 4. Running the build + +_If you checkout from git, you should ensure that and `awk` input files +retain unix (LF only) line endings._ Change the current directory to the root of the Heimdal source tree and run: nmake /f NTMakefile -This should build the binaries, assemblies and the installers. +This should build the binaries, assemblies and the installers. If you are +building with the Visual Studio tools you can build the release versions +by setting the NODEBUG variable + + nmake /f NTMakefile NODEBUG=TRUE The build can also be invoked from any subdirectory that contains an `NTMakefile` using the same command. Keep in mind that there are @@ -163,3 +187,16 @@ be built. First build for X86 and then build AMD64 nmake /f NTMakefile MULTIPLATFORM_INSTALLER=1 The build must be executed under cmd.exe. + +# 5. Makeinfo + +Makeinfo is no longer available from cygwin (see +[this mail thread][2]).The following appears to work +(added to NTMakefile.w32) + + MAKEINFO=$(PERL) C:\cygwin64\bin\texi2any + +You should expect a certain amount of debugging to ensure that all the required +Perl libraries are installed. + +[2]: https://sourceware.org/legacy-ml/cygwin/2015-03/msg00503.html
\ No newline at end of file |
