Author: ivan Date: Wed Apr 22 17:09:15 2026 New Revision: 1933257 Log: Add Windows manifest with compatibility information to executable files.
Without compatibility information Windows executes application in "compatibility context". For example, this results in 'svn --version -v' displaying wrong OS version information. Other possible changes are listed in [2]. Partly discussed in [3]. [1]: https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests#compatibility [2]: https://learn.microsoft.com/en-us/windows/compatibility/application-executable-manifest#manifestation [3]: https://lists.apache.org/thread/vd19wz81qjqnz6dn01rk5vc46j12sxw3 * build/generator/templates/targets.cmake.ezt (): Add build/win32/compatibility.manifest for executables. * build/generator/templates/vcnet_vcxproj.ezt (): Add build/win32/compatibility.manifest for executables. * build/win32/compatibility.manifest (): New. Added: subversion/trunk/build/win32/compatibility.manifest Modified: subversion/trunk/build/generator/templates/targets.cmake.ezt subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt Modified: subversion/trunk/build/generator/templates/targets.cmake.ezt ============================================================================== --- subversion/trunk/build/generator/templates/targets.cmake.ezt Wed Apr 22 15:51:53 2026 (r1933256) +++ subversion/trunk/build/generator/templates/targets.cmake.ezt Wed Apr 22 17:09:15 2026 (r1933257) @@ -59,6 +59,9 @@ if ([targets.enable_condition])[is targe add_executable([targets.name][for targets.sources] [targets.sources][end] ) + if (WIN32) + target_sources([targets.name] PRIVATE build/win32/compatibility.manifest) + endif() [end][is targets.type "test"] add_executable([targets.name][for targets.sources] [targets.sources][end] Modified: subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt ============================================================================== --- subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt Wed Apr 22 15:51:53 2026 (r1933256) +++ subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt Wed Apr 22 17:09:15 2026 (r1933257) @@ -96,7 +96,10 @@ <TargetMachine>[is platforms "X64"]MachineX64[else][is platforms "ARM64"]MachineARM64[else]MachineX86[end][end]</TargetMachine> [is configs.name "Debug"] <IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries> [end] </Lib> -[end][end][end] </ItemDefinitionGroup> +[end][end][end][is config_type "Application"] <Manifest> + <AdditionalManifestFiles>..\compatibility.manifest</AdditionalManifestFiles> + </Manifest> +[end] </ItemDefinitionGroup> [end][end][if-any target.desc] <ItemGroup> <ResourceCompile Include="..\svn.rc" /> </ItemGroup> Added: subversion/trunk/build/win32/compatibility.manifest ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ subversion/trunk/build/win32/compatibility.manifest Wed Apr 22 17:09:15 2026 (r1933257) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" ?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> + <application> + <!-- Windows Vista --> + <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> + <!-- Windows 7 --> + <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> + <!-- Windows 8 --> + <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> + <!-- Windows 8.1 --> + <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> + <!-- Windows 10 --> + <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> + </application> + </compatibility> +</assembly>
