mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 17:38:00 +00:00
32-bit Windows x86: reinstate subsystem version of 5.01.
This went missing in the migration to CMake, and broke compatibility of the standard 32-bit builds with Windows XP. (Of course, the 'buildold' versions should still have run.) There doesn't seem to be a convenient CMake option to configure it cleanly, so I had to do a bodgy string-replace on the variable containing the linker flags, which I found by source-diving in CMake. That's fragile enough that I've also put in a check after the fact, so that we'll find out if it ever stops working.
This commit is contained in:
parent
1489528a1f
commit
f8165649a1
12
Buildscr
12
Buildscr
@ -172,11 +172,21 @@ mkdir putty/windows/abuild64
|
||||
#
|
||||
# For the 32-bit ones, we set a subsystem version of 5.01, which
|
||||
# allows the resulting files to still run on Windows XP.
|
||||
in putty/windows/build32 with cmake_at_least_3.20 do cmake ../.. -DCMAKE_TOOLCHAIN_FILE=$(cmake_toolchain_clangcl32) -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DPUTTY_LINK_MAPS=ON -DCMAKE_C_FLAGS_RELEASE="/MT /O2" -DSTRICT=ON
|
||||
in putty/windows/build32 with cmake_at_least_3.20 do cmake ../.. -DCMAKE_TOOLCHAIN_FILE=$(cmake_toolchain_clangcl32) -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DPUTTY_LINK_MAPS=ON -DCMAKE_C_FLAGS_RELEASE="/MT /O2" -DPUTTY_SUBSYSTEM_VERSION=5.01 -DSTRICT=ON
|
||||
in putty/windows/build32 with cmake_at_least_3.20 do make -j$(nproc) VERBOSE=1
|
||||
in putty/windows/build64 with cmake_at_least_3.20 do cmake ../.. -DCMAKE_TOOLCHAIN_FILE=$(cmake_toolchain_clangcl64) -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DPUTTY_LINK_MAPS=ON -DCMAKE_C_FLAGS_RELEASE="/MT /O2" -DSTRICT=ON
|
||||
in putty/windows/build64 with cmake_at_least_3.20 do make -j$(nproc) VERBOSE=1
|
||||
|
||||
# The cmake mechanism used to set the subsystem version is a bit of a
|
||||
# bodge (it depends on knowing how cmake set up all its build command
|
||||
# variables), so just in case it breaks in future, double-check we
|
||||
# really did get the subsystem version we wanted.
|
||||
in putty/windows/build32 do objdump -x putty.exe > exe-headers.txt
|
||||
in putty/windows/build32 do grep -Ex 'MajorOSystemVersion[[:space:]]+5' exe-headers.txt
|
||||
in putty/windows/build32 do grep -Ex 'MinorOSystemVersion[[:space:]]+1' exe-headers.txt
|
||||
in putty/windows/build32 do grep -Ex 'MajorSubsystemVersion[[:space:]]+5' exe-headers.txt
|
||||
in putty/windows/build32 do grep -Ex 'MinorSubsystemVersion[[:space:]]+1' exe-headers.txt
|
||||
|
||||
# Build experimental Arm Windows binaries.
|
||||
in putty/windows/abuild32 with cmake_at_least_3.20 do cmake ../.. -DCMAKE_TOOLCHAIN_FILE=$(cmake_toolchain_clangcl_a32) -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DPUTTY_LINK_MAPS=ON -DCMAKE_C_FLAGS_RELEASE="/MT /O2" -DSTRICT=ON
|
||||
in putty/windows/abuild32 with cmake_at_least_3.20 do make -j$(nproc) VERBOSE=1
|
||||
|
@ -7,6 +7,15 @@ set(PUTTY_LINK_MAPS OFF
|
||||
set(PUTTY_EMBEDDED_CHM_FILE ""
|
||||
CACHE FILEPATH "Path to a .chm help file to embed in the binaries")
|
||||
|
||||
if(PUTTY_SUBSYSTEM_VERSION)
|
||||
string(REPLACE
|
||||
"subsystem:windows" "subsystem:windows,${PUTTY_SUBSYSTEM_VERSION}"
|
||||
CMAKE_C_CREATE_WIN32_EXE ${CMAKE_C_CREATE_WIN32_EXE})
|
||||
string(REPLACE
|
||||
"subsystem:console" "subsystem:console,${PUTTY_SUBSYSTEM_VERSION}"
|
||||
CMAKE_C_CREATE_CONSOLE_EXE ${CMAKE_C_CREATE_CONSOLE_EXE})
|
||||
endif()
|
||||
|
||||
function(define_negation newvar oldvar)
|
||||
if(${oldvar})
|
||||
set(${newvar} OFF PARENT_SCOPE)
|
||||
|
Loading…
Reference in New Issue
Block a user