diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 17:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 17:47:29 +0000 |
commit | 4f5791ebd03eaec1c7da0865a383175b05102712 (patch) | |
tree | 8ce7b00f7a76baa386372422adebbe64510812d4 /third_party/heimdal/windows | |
parent | Initial commit. (diff) | |
download | samba-4f5791ebd03eaec1c7da0865a383175b05102712.tar.xz samba-4f5791ebd03eaec1c7da0865a383175b05102712.zip |
Adding upstream version 2:4.17.12+dfsg.upstream/2%4.17.12+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/heimdal/windows')
-rw-r--r-- | third_party/heimdal/windows/NTMakefile.config | 114 | ||||
-rw-r--r-- | third_party/heimdal/windows/NTMakefile.sdk | 130 | ||||
-rw-r--r-- | third_party/heimdal/windows/NTMakefile.version | 51 | ||||
-rw-r--r-- | third_party/heimdal/windows/NTMakefile.w32 | 620 | ||||
-rw-r--r-- | third_party/heimdal/windows/README.md | 165 | ||||
-rw-r--r-- | third_party/heimdal/windows/version.rc | 149 |
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 |