summaryrefslogtreecommitdiffstats
path: root/third_party/heimdal/windows
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/heimdal/windows')
-rw-r--r--third_party/heimdal/windows/NTMakefile.config114
-rw-r--r--third_party/heimdal/windows/NTMakefile.sdk130
-rw-r--r--third_party/heimdal/windows/NTMakefile.version51
-rw-r--r--third_party/heimdal/windows/NTMakefile.w32620
-rw-r--r--third_party/heimdal/windows/README.md165
-rw-r--r--third_party/heimdal/windows/version.rc149
6 files changed, 1229 insertions, 0 deletions
diff --git a/third_party/heimdal/windows/NTMakefile.config b/third_party/heimdal/windows/NTMakefile.config
new file mode 100644
index 0000000..6227e5a
--- /dev/null
+++ b/third_party/heimdal/windows/NTMakefile.config
@@ -0,0 +1,114 @@
+!if exist (..\..\..\thirdparty\NTMakefile.version)
+! include <..\..\..\thirdparty\NTMakefile.version>
+!elseif exist (..\..\thirdparty\NTMakefile.version)
+! include <..\..\thirdparty\NTMakefile.version>
+!elseif exist (..\thirdparty\NTMakefile.version)
+! include <..\thirdparty\NTMakefile.version>
+!elseif exist (thirdparty\NTMakefile.version)
+! include <thirdparty\NTMakefile.version>
+!elseif exist (..\..\..\windows\NTMakefile.version)
+! include <..\..\..\windows\NTMakefile.version>
+!elseif exist (..\..\windows\NTMakefile.version)
+! include <..\..\windows\NTMakefile.version>
+!elseif exist (..\windows\NTMakefile.version)
+! include <..\windows\NTMakefile.version>
+!else
+! include <windows\NTMakefile.version>
+!endif
+
+!if [ $(PERL) $(SRC)\cf\w32-detect-vc-version.pl $(CC) ]==16
+HAVE_STDINT_H=1
+HAVE_INT64_T=1
+!endif
+
+
+
+
+# ------------------------------------------------------------
+# Features
+#
+# For each feature enabled here, a corresponding line must exist in
+# the inline Perl script in include\NTMakefile.
+
+# Enable Kerberos v5 support in applications
+KRB5=1
+
+# Enable KX509 support in the KDC
+KX509=1
+
+# Enable PKINIT
+PKINIT=1
+
+# Disable AFS support
+NO_AFS=1
+
+# OpenSSL (mostly not needed on Windows, but should work)
+# INCLUDE_openssl_crypto=
+# LIB_openssl_crypto=
+
+# OpenLDAP package is available
+# OPENLDAP=1
+
+# OpenLDAP include directory
+# OPENLDAP_INC=
+
+# OpenLDAP library to link against
+# OPENLDAP_LIB=
+
+# Support HDB LDAP module
+# OPENLDAP_MODULE=1
+
+# OTP support in applications
+OTP=1
+
+# Authentication support in telnet
+AUTHENTICATION=1
+
+# Enable diagnostics in telnet
+DIAGNOSTICS=1
+
+# Enable encryption support in telnet
+ENCRYPTION=1
+
+# Use the weak AFS string to key functions
+# ENABLE_AFS_STRING_TO_KEY=1
+
+!ifdef PTHREAD_INC
+!ifdef PTHREAD_LIB
+
+# We have <pthread.h>
+HAVE_PTHREAD_H=1
+
+# Make thread-safe libraries
+ENABLE_PTHREAD_SUPPORT=1
+
+!endif
+!endif
+
+# Support for broken ENV_{VAR,VAL} telnets
+# ENV_HACK=1
+
+# Use the Kerberos Credentials Manager
+# HAVE_KCM=1
+
+# Use the sqlite backend
+HAVE_SCC=1
+
+DIR_hdbdir=%{COMMON_APPDATA}/heimdal/hdb
+
+# Disable weak crypto
+WEAK_CRYPTO=0
+
+# Enable hcrypt fallback mechanisms
+HCRYPTO_FALLBACK=1
+
+# Disable use of GSS LOCALNAME support
+NO_LOCALNAME=1
+
+# Windows CRT rename does not unlink the target
+RENAME_DOES_NOT_UNLINK=1
+
+# Disable build of installers
+!ifndef NO_INSTALLERS
+BUILD_INSTALLERS=1
+!endif
diff --git a/third_party/heimdal/windows/NTMakefile.sdk b/third_party/heimdal/windows/NTMakefile.sdk
new file mode 100644
index 0000000..a9f2b30
--- /dev/null
+++ b/third_party/heimdal/windows/NTMakefile.sdk
@@ -0,0 +1,130 @@
+########################################################################
+#
+# Copyright (c) 2021, PADL Software Pty Ltd.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN if ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+!if !defined(CPU) || "$(CPU)" == ""
+CPU =AMD64
+!endif
+
+!if "$(CPU)" == "X86" || "$(CPU)" == "x86"
+CPU =i386
+!endif
+
+!if !defined(APPVER)
+APPVER =6.1
+!endif
+
+!if "$(APPVER)" == "5.0"
+NMAKE_WINVER=0x0500
+!elseif "$(APPVER)" == "5.01"
+NMAKE_WINVER=0x0501
+!elseif "$(APPVER)" == "5.02"
+NMAKE_WINVER=0x0502
+!elseif "$(APPVER)" == "6.0"
+NMAKE_WINVER=0x0600
+!elseif "$(APPVER)" == "6.1"
+NMAKE_WINVER=0x0601
+!elseif "$(APPVER)" == "10.0"
+NMAKE_WINVER=0x0A00
+!else
+!error Unknown value for APPVER
+!endif
+
+cc = cl
+link = link
+implib = lib
+
+cflags = -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -W4
+
+!if "$(CPU)" == "i386"
+cflags = $(cflags) -D_X86_=1
+!endif
+!if "$(CPU)" == "AMD64"
+cflags = $(cflags) -D_AMD64_=1
+!endif
+!if "$(CPU)" == "ARM"
+cflags = $(cflags) -D_ARM_=1
+!endif
+!if "$(CPU)" == "ARM64"
+cflags = $(cflags) -D_ARM64_=1
+!endif
+
+cflags = $(cflags) -DWIN32 -D_WIN32
+!if "$(CPU)" == "AMD64" || "$(CPU)" == "ARM64"
+cflags = $(cflags) -DWIN64 -D_WIN64
+!endif
+
+cflags = $(cflags) -D_WINNT -D_WIN32_WINNT=$(NMAKE_WINVER)
+cflags = $(cflags) -DNTDDI_VERSION=$(NMAKE_WINVER)0000
+cflags = $(cflags) -D_WIN32_IE=$(NMAKE_WINVER) -DWINVER=$(NMAKE_WINVER)
+
+!ifdef NODEBUG
+cdebug = -Ox -DNDEBUG
+!else
+cdebug = -Zi -Od -DDEBUG
+!endif
+
+cvarsmt = -D_MT
+cvarsdll = -D_MT -D_DLL
+!ifdef NODEBUG
+cvarsmt = $(cvarsmt) -MT
+cvarsdll = $(cvarsdll) -MD
+!else
+cvarsmt = $(cvarsmt) -MTd
+cvarsdll = $(cvarsdll) -MDd
+!endif
+cvars = $(cvarsmt)
+
+lflags = $(lflags) /INCREMENTAL:NO /NOLOGO
+!ifdef NODEBUG
+ldebug = /RELEASE
+!else
+ldebug = /DEBUG /DEBUGTYPE:cv
+!endif
+
+!if "$(CPU)" == "i386"
+dllentry = _DllMainCRTStartup@12
+!else
+dllentry = _DllMainCRTStartup
+!endif
+
+conlflags = $(lflags) -subsystem:console,$(APPVER)
+guilflags = $(lflags) -subsystem:windows,$(APPVER)
+dlllflags = $(lflags) -entry:$(dllentry) -dll
+
+baselibs = kernel32.lib ws2_32.lib mswsock.lib advapi32.lib
+conlibs = $(baselibs)
+conlibsmt = $(baselibs)
+conlibsdll = $(baselibs)
+
+winlibs = $(baselibs) user32.lib gdi32.lib comdlg32.lib winspool.lib
+guilibs = $(winlibs)
+guilibsmt = $(winlibs)
+guilibsdll = $(winlibs)
diff --git a/third_party/heimdal/windows/NTMakefile.version b/third_party/heimdal/windows/NTMakefile.version
new file mode 100644
index 0000000..51bed6e
--- /dev/null
+++ b/third_party/heimdal/windows/NTMakefile.version
@@ -0,0 +1,51 @@
+# Version strings
+
+VER_PACKAGE=heimdal
+VER_PACKAGE_NAME=Heimdal
+VER_PACKAGE_BUGREPORT=https://github.com/heimdal/heimdal/issues
+VER_PACKAGE_COPYRIGHT=Copyright (C) 1995-2016 Royal Institute of Technology, Stockholm, Sweden
+VER_PACKAGE_COMPANY=www.h5l.org
+
+VER_PRODUCT_MAJOR=7
+VER_PRODUCT_MINOR=99
+VER_PRODUCT_AUX=1
+VER_PRODUCT_PATCH=0
+
+# ------------------------------------------------------------
+# The VER_OLD_BEGIN and VER_OLD_END version values are used in
+# constructing the assembly publisher configuration. The end
+# must be less than the VER_PRODUCT value. If the current
+# version is 1.5.100.0 then VER_OLD_END version is
+# 1.5.99.65535.
+
+VER_OLD_BEGIN_MAJOR=7
+VER_OLD_BEGIN_MINOR=99
+VER_OLD_BEGIN_AUX=0
+VER_OLD_BEGIN_PATCH=0
+
+VER_OLD_END_MAJOR=7
+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)
+
+# Debug build flag
+!ifndef NODEBUG
+VER_DEBUG=1
+!endif
+
+# Define to 1 if this is a pre-release build. Undefine otherwise
+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
+# numbers are not co-ordinated with mainline development.
+
+#VER_PRIVATE=Private build for MyCompany
+
+# Define to a valid string if this build DOES follow normal release
+# procedures, but is a variation of the standard files of the same
+# version numbers.
+
+#VER_SPECIAL=Special build for testing ticket 12345
diff --git a/third_party/heimdal/windows/NTMakefile.w32 b/third_party/heimdal/windows/NTMakefile.w32
new file mode 100644
index 0000000..471e783
--- /dev/null
+++ b/third_party/heimdal/windows/NTMakefile.w32
@@ -0,0 +1,620 @@
+########################################################################
+#
+# Copyright (c) 2009-2011, Secure Endpoints Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# - Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+all::
+
+clean::
+
+test::
+
+prep::
+
+all:: prep
+
+!include "NTMakefile.sdk"
+
+!ifdef NODEBUG
+BUILD=rel
+!else
+BUILD=dbg
+!endif
+
+!if exist($(MAKEDIR)\windows\NTMakefile.w32)
+SRC=$(MAKEDIR)
+!elseif exist($(MAKEDIR)\..\windows\NTMakefile.w32)
+SRC=$(MAKEDIR)\..
+!elseif exist($(MAKEDIR)\..\..\windows\NTMakefile.w32)
+SRC=$(MAKEDIR)\..\..
+!elseif exist($(MAKEDIR)\..\..\..\windows\NTMakefile.w32)
+SRC=$(MAKEDIR)\..\..\..
+!elseif exist($(MAKEDIR)\..\..\..\..\windows\NTMakefile.w32)
+SRC=$(MAKEDIR)\..\..\..\..
+!else
+! error Cant determine source directory
+!endif
+
+! if "$(CPU)"=="i386" || "$(CPU)"=="x86"
+MCPU=x86
+! elseif "$(CPU)"=="AMD64"
+MCPU=amd64
+! else
+! error Unknown CPU
+! endif
+
+!include "NTMakefile.config"
+
+#----------------------------------------------------------------
+# Directory macros
+
+DESTDIR =$(SRC)\out\dest_$(CPU)
+OBJDIR =$(SRC)\out\obj_$(CPU)
+
+INCDIR =$(DESTDIR)\inc
+LIBDIR =$(DESTDIR)\lib
+BINDIR =$(DESTDIR)\bin
+PLUGINDIR =$(BINDIR)
+DOCDIR =$(DESTDIR)\doc
+SBINDIR =$(BINDIR)
+LIBEXECDIR =$(BINDIR)
+ASMDIR =$(BINDIR)
+INSTDIR =$(DESTDIR)\install
+SDKDIR =$(SRC)\out\sdk
+SDKINCDIR =$(SDKDIR)\inc
+SDKLIBDIR =$(SDKDIR)\lib\$(CPU)
+SDKSRCDIR =$(SDKDIR)\src
+SDKREDISTDIR =$(SDKDIR)\redist\$(CPU)
+
+!ifdef RELDIR
+SRCDIR =$(SRC)\$(RELDIR)
+OBJ =$(OBJDIR)\$(RELDIR)
+!else
+OBJ =$(OBJDIR)
+!endif
+
+# For tests:
+PATH=$(PATH);$(BINDIR)
+
+#----------------------------------------------------------------
+# Command macros
+
+RMAKE=nmake /nologo /f NTMakefile RECURSE=1
+MKDIR=md
+CP=copy /Y
+LINK=link
+LM=lib
+RM=del /q
+ECHO=echo
+RC=rc
+
+#----------------------------------------------------------------
+# Program macros
+
+AWK_CMD=gawk.exe
+YACC_CMD=bison.exe
+LEX_CMD=flex.exe
+PYTHON=python.exe
+PERL=perl.exe
+CMP=cmp.exe
+MAKECAT=makecat.exe
+HHC=hhc.exe
+MAKEINFO=makeinfo.exe
+SED=sed.exe
+
+CANDLE_CMD=candle.exe
+LIGHT_CMD=light.exe
+
+# Only used for tests
+SH=sh.exe
+
+# Commands
+AWK=$(AWK_CMD)
+YACC=$(YACC_CMD) -y
+LEX=$(LEX_CMD)
+CANDLE=$(CANDLE_CMD) -nologo
+LIGHT=$(LIGHT_CMD) -nologo
+
+#----------------------------------------------------------------
+# External dependencies
+
+# For pthread support to be enabled, both PTHREAD_INC and PTHREAD_LIB
+# should be defined. PTHREAD_INC should be the include directory
+# where pthread.h is to be found (i.e. $(PTHREAD_INC)\pthread.h should
+# exist), and PTHREAD_LIB is the full path to the pthread import
+# library.
+#
+# Note that both paths should not contain any whitespace.
+
+!ifdef PTHREAD_INC
+pthreadinc= -I$(PTHREAD_INC)
+!endif
+
+#----------------------------------------------------------------
+# Build options
+
+cincdirs=$(cincdirs) -I$(INCDIR) -I$(INCDIR)\krb5 $(pthreadinc)
+cdefines=$(cdefines) -DHAVE_CONFIG_H
+# Windows CNG provider
+cdefines=$(cdefines) -DHCRYPTO_DEF_PROVIDER=w32crypto
+cdebug=$(cdebug) /Zi
+ldebug=$(ldebug) /DEBUG
+localcflags=$(localcflags) /Oy-
+
+# Disable warnings:
+#
+# C4996: 'function' was declared deprecated
+# C4127: Conditional expression is constant
+# C4244: Conversion from 'type1' to 'type2', possible loss of data
+# C4100: 'identifier': unreferenced formal parameter
+# C4706: Assignment within conditional expression
+# C4214: Nonstandard extension used
+# C4267: '': Conversion from 'type1' to 'type2', possible loss of data
+# C4018: '': Signed/unsigned mismatch
+# C4204: Nonstandard extension used: non-constant aggregate initializer
+# C4221: Nonstandard extension used: 'v1': cannot be initialized using address of automatic variable 'v2'
+# C4295: '': Array is too small to include a terminating null character
+# C4146: Unary minus operator applied to unsigned type, result still unsigned.
+#
+cwarn=$(cwarn) -D_CRT_SECURE_NO_WARNINGS -wd4996 -wd4127 -wd4244 -wd4100 -wd4706
+cwarn=$(cwarn) -wd4214 -wd4267 -wd4018 -wd4389 -wd4204 -wd4221 -wd4295 -wd4146
+
+!if "$(CPU)"=="i386"
+libmach=/machine:X86
+!elseif "$(CPU)"=="AMD64"
+libmach=/machine:X64
+!else
+! error Unknown CPU value
+!endif
+
+!ifdef NO_MP
+MPOPT=
+!else
+MPOPT=/MP
+!endif
+
+!ifndef STATICRUNTIME
+
+C2OBJ_C = $(CC) $(cdebug) $(cflags) $(cvarsdll) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn)
+EXECONLINK_C = $(LINK) $(ldebug) $(conlflags) $(conlibsdll) $(libmach)
+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)
+EXECONLINK_C = $(LINK) $(ldebug) $(conlflags) $(conlibsmt) $(libmach)
+EXEGUILINK_C = $(LINK) $(ldebug) $(guilflags) $(guilibsmt) $(libmach)
+DLLCONLINK_C = $(LINK) $(ldebug) $(dlllflags) $(conlibsmt) $(libmach)
+DLLGUILINK_C = $(LINK) $(ldebug) $(dlllflags) $(guilibsmt) $(libmach)
+
+!endif
+
+LIBGUI_C = $(LM) /nologo $(libmach) /SUBSYSTEM:WINDOWS
+LIBCON_C = $(LM) /nologo $(libmach) /SUBSYSTEM:CONSOLE
+
+C2OBJ = $(C2OBJ_C) -Fo$@ -Fd$(@D)\ $**
+C2OBJ_NP = $(C2OBJ_C) $(MPOPT) $<
+C2OBJ_P = $(C2OBJ_NP) -Fo$(OBJ)\ -Fd$(OBJ)\ #
+EXECONLINK = $(EXECONLINK_C) -OUT:$@ $**
+EXEGUILINK = $(EXEGUILINK_C) -OUT:$@ $**
+DLLCONLINK = $(DLLCONLINK_C) -OUT:$@ $**
+DLLGUILINK = $(DLLGUILINK_C) -OUT:$@ $**
+LIBGUI = $(LIBGUI_C) /OUT:$@ $**
+LIBCON = $(LIBCON_C) /OUT:$@ $**
+
+# Preprocess files to stdout using config.h
+CPREPROCESSOUT = $(CC) /EP /FI$(INCDIR)\config.h /TC /DCPP_ONLY=1
+
+# Resources
+
+RC2RES_C = $(RC) $(cincdirs) $(AUXRCFLAGS)
+RC2RES = $(RC2RES_C) -fo $@ $**
+
+#----------------------------------------------------------------------
+# If this is the initial invocation, we check if all the build
+# utilities are there. Also show the commands macros.
+
+!ifndef RECURSE
+
+REQUIRED_TOOLS= \
+ "$(AWK_CMD)" "$(YACC_CMD)" "$(LEX_CMD)" "$(PYTHON)" "$(PERL)" \
+ "$(CMP)" "$(SED)" "$(MAKECAT)" "$(MAKEINFO)" "$(HHC)"
+
+!ifdef BUILD_INSTALLERS
+REQUIRED_TOOLS=$(REQUIRED_TOOLS) "$(CANDLE_CMD)" "$(LIGHT_CMD)"
+!endif
+
+OPTIONAL_TOOLS="$(SH)"
+
+check-utils:
+ @for %%g in ( $(REQUIRED_TOOLS) ) do @( \
+ for /f %%f in ( "%%g" ) do @( \
+ if exist %%f @( \
+ echo Found %%f \
+ ) else if "%%~$$PATH:f"=="" @( \
+ echo Could not find %%f in PATH && \
+ exit /b 1 \
+ ) else @( \
+ echo Found %%~$$PATH:f \
+ ) \
+ ) \
+ )
+ @for %%g in ( $(OPTIONAL_TOOLS) ) do @( \
+ for /f %%f in ( "%%g" ) do @( \
+ if exist %%f @( \
+ echo Found %%f \
+ ) else if "%%~$$PATH:f"=="" @( \
+ echo Could not find %%f in PATH && \
+ echo Optional targets may fail. \
+ ) else @( \
+ echo Found %%~$$PATH:f \
+ ) \
+ ) \
+ )
+
+
+prep:: check-utils
+
+show-cmds:
+ @$(ECHO) C2OBJ=$(C2OBJ_C:\=\\)
+ @$(ECHO).
+ @$(ECHO) EXECONLINK=$(EXECONLINK_C)
+ @$(ECHO).
+ @$(ECHO) EXEGUILINK=$(EXEGUILINK_C)
+ @$(ECHO).
+ @$(ECHO) DLLCONLINK=$(DLLCONLINK_C)
+ @$(ECHO).
+ @$(ECHO) DLLGUILINK=$(DLLGUILINK_C)
+ @$(ECHO).
+ @$(ECHO) LIBGUI=$(LIBGUI_C)
+ @$(ECHO).
+ @$(ECHO) LIBCON=$(LIBCON_C)
+
+prep:: show-cmds
+
+!endif # RECURSE
+
+{}.c{$(OBJ)}.obj::
+ $(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(localcflags) $(MPOPT) @<<
+$<
+<<
+
+{$(OBJ)}.c{$(OBJ)}.obj::
+ $(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(extcflags) $(MPOPT) @<<
+$<
+<<
+
+{}.cpp{$(OBJ)}.obj::
+ $(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(localcflags) $(MPOPT) @<<
+$<
+<<
+
+{$(OBJ)}.cpp{$(OBJ)}.obj::
+ $(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(extcflags) $(MPOPT) @<<
+$<
+<<
+
+{}.hin{$(INCDIR)}.h:
+ $(CP) $< $@
+
+{}.h{$(INCDIR)}.h:
+ $(CP) $< $@
+
+{}.h{$(INCDIR)\krb5}.h:
+ $(CP) $< $@
+
+{$(OBJ)}.h{$(INCDIR)}.h:
+ $(CP) $< $@
+
+{$(OBJ)}.x{$(OBJ)}.c:
+ $(CP) $< $@
+
+{$(OBJ)}.hx{$(INCDIR)}.h:
+ $(CP) $< $@
+
+{$(OBJ)}.hx{$(OBJ)}.h:
+ $(CP) $< $@
+
+{}.rc{$(OBJ)}.res:
+ $(RC2RES)
+
+#----------------------------------------------------------------------
+# Announce the build directory
+
+!ifdef RELDIR
+all:: announce
+
+all-tools:: announce-tools
+
+test:: announce
+
+clean:: announce
+
+announce:
+ @echo.
+ @echo --------- Entering $(RELDIR:\= ):
+
+announce-tools:
+ @echo.
+ @echo --------- Entering $(RELDIR:\= ) tools:
+!endif
+
+#----------------------------------------------------------------------
+# Create any required directories if they don't already exist
+
+prep:: mkdirs
+
+mkdirs:
+! if !exist("$(OBJ)")
+ -$(MKDIR) "$(OBJ)"
+! endif
+! if !exist("$(DESTDIR)")
+ -$(MKDIR) "$(DESTDIR)"
+! endif
+! if !exist("$(LIBDIR)")
+ -$(MKDIR) "$(LIBDIR)"
+! endif
+! if !exist("$(BINDIR)")
+ -$(MKDIR) "$(BINDIR)"
+! endif
+! if !exist("$(PLUGINDIR)")
+ -$(MKDIR) "$(PLUGINDIR)"
+! endif
+! if !exist("$(INCDIR)")
+ -$(MKDIR) "$(INCDIR)"
+! endif
+! if !exist("$(DOCDIR)")
+ -$(MKDIR) "$(DOCDIR)"
+! endif
+! if !exist("$(INCDIR)\gssapi")
+ -$(MKDIR) "$(INCDIR)\gssapi"
+! endif
+! if !exist("$(INCDIR)\hcrypto")
+ -$(MKDIR) "$(INCDIR)\hcrypto"
+! endif
+! if !exist("$(INCDIR)\kadm5")
+ -$(MKDIR) "$(INCDIR)\kadm5"
+! endif
+! if !exist("$(INCDIR)\krb5")
+ -$(MKDIR) "$(INCDIR)\krb5"
+! endif
+
+#----------------------------------------------------------------------
+# If SUBDIRS is defined, we should recurse into the subdirectories
+
+!ifdef SUBDIRS
+subdirs:
+ @for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) && popd) || exit /b 1
+
+clean-subdirs:
+ @for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) clean && popd) || exit /b 1
+
+test-subdirs:
+ @for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) test && popd) || exit /b 1
+
+all:: subdirs
+
+clean:: clean-subdirs
+
+test:: test-subdirs
+
+!endif
+
+#----------------------------------------------------------------------
+# Clean targets
+
+!ifdef CLEANFILES
+clean::
+ -$(RM) $(CLEANFILES)
+!endif
+!ifdef RELDIR
+clean::
+ -$(RM) $(OBJ)\*.*
+!endif
+
+.SUFFIXES: .c .cpp .hin .h .hx
+
+#----------------------------------------------------------------------
+# Manifest handling
+#
+# Starting with Visual Studio 8, the C compiler and the linker
+# generate manifests so that the applications will link with the
+# correct side-by-side DLLs at run-time. These are required for
+# correct operation under Windows XP and later. We also have custom
+# manifests which need to be merged with the manifests that VS
+# creates.
+#
+# The syntax for invoking the _VC_MANIFEST_EMBED_FOO macro is:
+# $(_VC_MANIFEST_EMBED_???) <additional manifests>
+#
+
+MT=mt.exe -nologo
+
+_VC_MANIFEST_EMBED_EXE= \
+( if exist $@.manifest $(MT) -outputresource:$@;1 -manifest $@.manifest $(APPMANIFEST) )
+
+_VC_MANIFEST_EMBED_EXE_NOHEIM= \
+( if exist $@.manifest $(MT) -outputresource:$@;1 -manifest $@.manifest )
+
+_VC_MANIFEST_EMBED_DLL= \
+( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest )
+
+_MERGE_MANIFEST_DLL= \
+( $(MT) -inputresource:$@;2 -manifest $(APPMANIFEST) -outputresource:$@;2 )
+
+_INSERT_APPMANIFEST_DLL= \
+( $(MT) -manifest $(APPMANIFEST) -outputresource:$@;2 )
+
+# Note that if you are merging manifests, then the VS generated
+# manifest should be cleaned up after calling _VC_MANIFEST_EMBED_???.
+# This ensures that even if the DLL or EXE is executed in-place, the
+# embedded manifest will be used. Otherwise the $@.manifest file will
+# be used.
+
+_VC_MANIFEST_CLEAN= \
+( if exist $@.manifest $(RM) $@.manifest )
+
+# End of manifest handling
+
+#----------------------------------------------------------------------
+# Code and assembly signing
+#
+#
+# SIGNTOOL is fullpath to signtool.exe from Windows v8.1 or later SDK
+# (earlier versions do not support SHA-2 signatures)
+#
+# SIGNTOOL_C is any set of options required for certificate/private
+# key selection for code signging.
+#
+# SIGNTOOL_O is any set of additional options to signtool.exe
+#
+# SIGNTOOL_T is the timestamp option
+
+!ifdef CODESIGN
+_CODESIGN=( $(CODESIGN) $@ )
+_CODESIGN_SHA256=( $(CODESIGN_SHA256) $@ )
+!else
+
+!ifndef SIGNTOOL
+SIGNTOOL=signtool.exe
+!endif
+
+!ifdef SIGNTOOL_C
+
+!ifndef SIGNTOOL_T
+SIGNTOOL_T=http://timestamp.digicert.com
+!endif
+!ifndef SIGNTOOL_T_SHA256
+SIGNTOOL_T_SHA256=http://timestamp.digicert.com
+!endif
+
+_CODESIGN=( $(SIGNTOOL) sign /fd sha1 $(SIGNTOOL_O) /t $(SIGNTOOL_T) $(SIGNTOOL_C) /v $@ )
+_CODESIGN_SHA256=( $(SIGNTOOL) sign /as /fd sha256 /td sha256 $(SIGNTOOL_O) /tr $(SIGNTOOL_T_SHA256) $(SIGNTOOL_C) /v $@ )
+!else
+_CODESIGN=( echo Skipping code sign )
+_CODESIGN_SHA256=( echo Skipping sha256 code sign )
+!endif
+
+!endif
+
+#----------------------------------------------------------------------
+# Symbol Store Support
+#
+# SYMSTORE_EXE is full path to symstore.exe
+#
+# SYMSTORE_ROOT is full path to root directory of symbol store
+#
+# SYMSTORE_COMMENT is optional comment to include in symbol store catalog entry
+#
+
+!IF DEFINED(SYMSTORE_EXE) && DEFINED(SYMSTORE_ROOT)
+!IF "$(SYMSTORE_COMMENT)" != ""
+SYMSTORE_COMMENT = |$(SYMSTORE_COMMENT)
+!ENDIF
+SYMSTORE_IMPORT= \
+$(SYMSTORE_EXE) add /s $(SYMSTORE_ROOT) /t "Heimdal" /v "$(BUILD)-$(CPU)-$(VER_PACKAGE_VERSION)" /c "$(@F)$(SYMSTORE_COMMENT)" /f $*.*
+!ELSE
+SYMSTORE_IMPORT=@echo No symbol store
+!ENDIF
+
+#----------------------------------------------------------------------
+# Convenience macros for preparing EXEs and DLLs. These are multiline
+# macros that deal with manifests and code signing. Unless we need to
+# include custom manifests, these are what we should be using to
+# prepare binaries.
+
+EXEPREP=\
+( $(_VC_MANIFEST_EMBED_EXE) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
+
+EXEPREP_NOHEIM=\
+( $(_VC_MANIFEST_EMBED_EXE_NOHEIM) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
+
+EXEPREP_NODIST=\
+( $(_VC_MANIFEST_EMBED_EXE_NOHEIM) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) ) || ( $(RM) $@ && exit /b 1 )
+
+DLLPREP=\
+( $(_VC_MANIFEST_EMBED_DLL) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
+
+DLLPREP_NODIST=\
+( $(_VC_MANIFEST_EMBED_DLL) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) ) || ( $(RM) $@ && exit /b 1 )
+
+DLLPREP_MERGE=\
+( ( $(_MERGE_MANIFEST_DLL) || $(_INSERT_APPMANIFEST_DLL) && $(SYMSTORE_IMPORT) ) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
+
+#----------------------------------------------------------------------
+# Convenience macros for import libraries and assemblies
+#
+
+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
+LIBHEIMDAL =$(LIBDIR)\heimdal.lib
+LIBHEIMIPCC =$(LIBDIR)\libheim-ipcc.lib
+LIBHEIMIPCS =$(LIBDIR)\libheim-ipcs.lib
+LIBHEIMNTLM =$(LIBDIR)\libheimntlm.lib
+LIBHX509 =$(LIBDIR)\libhx509.lib
+LIBKADM5CLNT=$(LIBDIR)\libkadm5clnt.lib
+LIBKADM5SRV =$(LIBDIR)\libkadm5srv.lib
+LIBKDC =$(LIBDIR)\libkdc.lib
+LIBLTM =$(LIBDIR)\libltm.lib
+LIBKRB5 =$(LIBDIR)\libkrb5.lib
+LIBRFC3961 =$(LIBDIR)\librfc3961.lib
+LIBROKEN =$(LIBDIR)\libroken.lib
+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
+!endif
+!ifdef VER_PRERELEASE
+ASM_PRE=.Pre
+!endif
+!ifdef VER_PRIVATE
+ASM_PVT=.Private
+!endif
+!ifdef VER_SPECIAL
+ASM_SPC=.Special
+!endif
+
+ASMKRBNAME =Heimdal.Kerberos$(ASM_SPC)$(ASM_PVT)$(ASM_PRE)$(ASM_DBG)
+APPMANIFEST =$(INCDIR)\Heimdal.Application.$(MCPU).manifest
+
diff --git a/third_party/heimdal/windows/README.md b/third_party/heimdal/windows/README.md
new file mode 100644
index 0000000..0c86141
--- /dev/null
+++ b/third_party/heimdal/windows/README.md
@@ -0,0 +1,165 @@
+Building Heimdal for Windows
+===================
+
+1. Introduction
+---------------
+
+Heimdal can be built and run on Windows XP or later. Older OSs may
+work, but have not been tested.
+
+2. Prerequisites
+----------------
+
+* __Microsoft Visual C++ Compiler__: Heimdal has been tested with
+ Microsoft Visual C/C++ compiler version 15.x. This corresponds to
+ Microsoft Visual Studio version 2008. The compiler and tools that
+ are included with Microsoft Windows SDK versions 6.1 and later can
+ also be used for building Heimdal. If you have a recent Windows
+ SDK, then you already have a compatible compiler.
+
+* __Microsoft Windows SDK__: Heimdal has been tested with Microsoft
+ Windows SDK version 6.1 and 7.0.
+
+* __Microsoft HTML Help Compiler__: Needed for building documentation.
+
+* __Perl__: A recent version of Perl. Tested with ActiveState
+ ActivePerl.
+
+* __Python__: Tested with Python 2.5 and 2.6.
+
+* __WiX__: The Windows [Installer XML toolkit (WiX)][1] Version 3.x is
+ used to build the installers.
+
+* __Cygwin__: The Heimdal build system requires a number of additional
+ tools: `awk`, `yacc`, `lex`, `cmp`, `sed`, `makeinfo`, `sh`
+ (Required for running tests). These can be found in the Cygwin
+ distribution. MinGW or GnuWin32 may also be used instead of Cygwin.
+ However, a recent build of `makeinfo` is required for building the
+ documentation. Cygwin makeinfo 4.7 is known to work.
+
+* __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
+ binaries produced by the build including installers can be signed
+ and timestamped if a code-signing certificate is available.
+ As of 1 January 2016 Windows 7 and above require the use of sha256
+ signatures. The signtool.exe provided with Windows SDK 8.1 or
+ later must be used.
+
+[1]: http://wix.sourceforge.net/
+
+3. Setting up the build environment
+-----------------------------------
+
+* Start with a Windows SDK or Visual Studio build 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`
+ script to set up a build environment targetting 64-bit Windows XP or
+ later with:
+
+ SetEnv.Cmd /xp /x64 /Debug
+
+ The build will produce debug binaries. If you specify
+
+ SetEnv.Cmd /xp /x64 /Release
+
+ the build will produce release binaries.
+
+* 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
+ missing. In general, adding Perl, Python, WiX, HTML Help Compiler and
+ Cygwin binary directories to the path should be sufficient.
+
+* Set up environment variables for code signing. This can be done in
+ one of two ways. By specifying options for `signtool` or by
+ specifying the code-signing command directly. To use `signtool`,
+ define `SIGNTOOL_C` and optionally, `SIGNTOOL_O` and `SIGNTOOL_T`.
+
+ - `SIGNTOOL_C`: Certificate selection and private key selection
+ options for `signtool`.
+
+ E.g.:
+
+ set SIGNTOOL_C=/f c:\mycerts\codesign.pfx
+
+ set SIGNTOOL_C=/n "Certificate Subject Name" /a
+
+ - `SIGNTOOL_O`: Signing parameter options for `signtool`. Optional.
+
+ E.g.:
+
+ set SIGNTOOL_O=/du http://example.com/myheimdal
+
+ - `SIGNTOOL_T`: SHA1 Timestamp URL for `signtool`. If not specified,
+ defaults to `http://timestamp.digicert.com`.
+
+ - `SIGNTOOL_T_SHA256`: SHA256 Timestamp URL for `signtool`. If not
+ specified, defaults to `http://timestamp.digicert.com`.
+
+ - `CODESIGN`: SHA1 Code signer command. This environment variable, if
+ defined, overrides the `SIGNTOOL_*` variables. It should be
+ defined to be a command that takes one parameter: the binary to be
+ signed.
+
+ - `CODESIGN_SHA256`: SHA256 Code signer command. This environment variable, if
+ defined, applies a second SHA256 signature to the parameter. It should be
+ defined to be a command that takes one parameter: the binary to be
+ signed.
+
+ E.g.:
+
+ set CODESIGN=c:\scripts\mycodesigner.cmd
+ set CODESIGN_SHA256=c:\scripts\mycodesigner256.cmd
+
+* 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,
+ set this to `0000000000000000`.
+
+ You can use the `pktextract` tool to determine the public key token
+ corresponding to your code signing certificate as follows (assuming
+ your code signing certificate is in `c:\mycerts\codesign.cer`:
+
+ pktextract c:\mycerts\codesign.cer
+
+ The above command will output the certificate name, key size and the
+ public key token. Set the `CODESIGN_PKT` variable to the
+ `publicKeyToken` value (excluding quotes).
+
+ E.g.:
+
+ set CODESIGN_PKT=abcdef0123456789
+
+4. Running the build
+--------------------
+
+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.
+
+The build can also be invoked from any subdirectory that contains an
+`NTMakefile` using the same command. Keep in mind that there are
+inter-dependencies between directories and therefore it is recommended
+that a full build be invoked from the root of the source tree.
+
+Tests can be invoked, after a full build, by executing:
+
+ nmake /f NTMakefile test
+
+The build tree can be cleaned with:
+
+ nmake /f NTMakefile clean
+
+It is recommended that both AMD64 and X86 builds take place on the
+same machine. This permits a multi-platform installer package to
+be built. First build for X86 and then build AMD64
+
+ nmake /f NTMakefile MULTIPLATFORM_INSTALLER=1
+
+The build must be executed under cmd.exe.
diff --git a/third_party/heimdal/windows/version.rc b/third_party/heimdal/windows/version.rc
new file mode 100644
index 0000000..ce9d4d4
--- /dev/null
+++ b/third_party/heimdal/windows/version.rc
@@ -0,0 +1,149 @@
+/***********************************************************************
+ * Copyright (c) 2010, Secure Endpoints Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ **********************************************************************/
+
+/*
+ * This version script is not meant to be used as-is. It requires the
+ * following parameters that must be supplied using preprocessor
+ * macros:
+ *
+ * RC_FILE_TYPE (Set to either VFT_DLL or VFT_APP)
+ * RC_FILE_DESC_0409 (File description (English))
+ * RC_FILE_ORIG_0409 (Original file name (English))
+ *
+ * The following macros are optional:
+ *
+ * RC_FILE_SUBTYPE (File subtype. See MSDN.)
+ * RC_FILEVER_C (Comma separated file version, if different from
+ * product version)
+ * RC_FILE_COMMENT_0409 (File comment (English))
+ */
+
+#include<windows.h>
+#include<config.h>
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+
+#ifdef VER_PRIVATE
+#define P_PRIVATE VS_FF_PRIVATEBUILD
+#else
+#define P_PRIVATE 0
+#endif
+
+#ifdef VER_SPECIAL
+#define P_SPECIAL VS_FF_SPECIALBUILD
+#else
+#define P_SPECIAL 0
+#endif
+
+#ifdef VER_PRERELEASE
+#define P_PRE VS_FF_PRERELEASE
+#else
+#define P_PRE 0
+#endif
+
+#ifdef VER_DEBUG
+#define P_DEBUG VS_FF_DEBUG
+#else
+#define P_DEBUG 0
+#endif
+
+/* If some per-file values aren't specified, we use the application
+values as a substitute */
+
+#ifndef RC_FILEVER_C
+#define RC_FILEVER_C RC_PRODVER_C
+#define RC_FILE_VER_0409 RC_PRODUCT_VER_0409
+#endif
+
+#ifndef RC_FILE_INTERNAL_0409
+#define RC_FILE_INTERNAL_0409 RC_FILE_ORIG_0409
+#endif
+
+#ifndef RC_FILE_PRODUCT_NAME_0409
+#define RC_FILE_PRODUCT_NAME_0409 RC_PRODUCT_NAME_0409
+#endif
+
+#ifndef RC_FILE_PRODUCT_VER_0409
+#define RC_FILE_PRODUCT_VER_0409 RC_PRODUCT_VER_0409
+#endif
+
+#ifndef RC_FILE_COMPANY_0409
+#define RC_FILE_COMPANY_0409 RC_COMPANY_0409
+#endif
+
+#ifndef RC_FILE_COPYRIGHT_0409
+#define RC_FILE_COPYRIGHT_0409 RC_COPYRIGHT_0409
+#endif
+
+1 VERSIONINFO
+ FILEVERSION RC_FILEVER_C
+ PRODUCTVERSION RC_PRODVER_C
+ FILEFLAGSMASK (VS_FF_DEBUG|VS_FF_PRERELEASE|VS_FF_PRIVATEBUILD|VS_FF_SPECIALBUILD)
+ FILEFLAGS (P_DEBUG|P_PRE|P_PRIVATE|P_SPECIAL)
+ FILEOS VOS_NT
+ FILETYPE RC_FILE_TYPE
+#ifdef RC_FILE_SUBTYPE
+ FILESUBTYPE RC_FILE_SUBTYPE
+#endif
+ BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ BEGIN
+ VALUE "ProductName", RC_FILE_PRODUCT_NAME_0409
+ VALUE "ProductVersion", RC_FILE_PRODUCT_VER_0409
+ VALUE "CompanyName", RC_FILE_COMPANY_0409
+ VALUE "LegalCopyright", RC_FILE_COPYRIGHT_0409
+#ifdef RC_FILE_TRADEMARK_0409
+ VALUE "LegalTrademark", RC_FILE_TRADEMARK_0409
+#endif
+#ifdef RC_FILE_COMMENT_0409
+ VALUE "Comments", RC_FILE_COMMENT_0409
+#endif
+ VALUE "FileDescription", RC_FILE_DESC_0409
+ VALUE "FileVersion", RC_FILE_VER_0409
+ VALUE "InternalName", RC_FILE_INTERNAL_0409
+ VALUE "OriginalFilename", RC_FILE_ORIG_0409
+#ifdef VER_PRIVATE
+ VALUE "PrivateBuild", VER_PRIVATE
+#endif
+#ifdef VER_SPECIAL
+ VALUE "SpecialBuild", VER_SPECIAL
+#endif
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409 /* US English */, 1252 /* Multilingual */
+ END
+ END