aboutsummaryrefslogtreecommitdiff
path: root/windows
diff options
context:
space:
mode:
Diffstat (limited to 'windows')
-rw-r--r--windows/NTMakefile.config3
-rw-r--r--windows/NTMakefile.sdk8
-rw-r--r--windows/NTMakefile.version12
-rw-r--r--windows/NTMakefile.w3211
-rw-r--r--windows/README.md65
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