-
-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
windows: attempt to enable long path support for MSVC targets
See the README and comments in the build.rs. Basically, this embeds an XML file that I guess is a way of setting configuration knobs on Windows. One of those knobs is enabling long path support. You still need to enable it in your registry (lol), but this will handle the other half of it. Fixes #364, Closes #2049
- Loading branch information
1 parent
3d83ead
commit f291fac
Showing
3 changed files
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<!-- | ||
This is a Windows application manifest file. | ||
See: https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests | ||
--> | ||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> | ||
<!-- Versions rustc supports as compiler hosts --> | ||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> | ||
<application> | ||
<!-- 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 and 11 --><supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> | ||
</application> | ||
</compatibility> | ||
<!-- Use UTF-8 code page --> | ||
<asmv3:application> | ||
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> | ||
<activeCodePage>UTF-8</activeCodePage> | ||
</asmv3:windowsSettings> | ||
</asmv3:application> | ||
<!-- Remove (most) legacy path limits --> | ||
<asmv3:application> | ||
<asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings"> | ||
<ws2:longPathAware>true</ws2:longPathAware> | ||
</asmv3:windowsSettings> | ||
</asmv3:application> | ||
</assembly> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
This directory contains a Windows manifest for various Windows-specific | ||
settings. | ||
|
||
The main thing we enable here is [`longPathAware`], which permits paths of the | ||
form `C:\` to be longer than 260 characters. | ||
|
||
The approach taken here was modeled off of a [similar change for `rustc`][rustc pr]. | ||
In particular, this manifest gets linked into the final binary. Those linker | ||
arguments are applied in `build.rs`. | ||
|
||
This currently only applies to MSVC builds. If there's an easy way to make this | ||
apply to GNU builds as well, then patches are welcome. | ||
|
||
[`longPathAware`]: https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests#longpathaware | ||
[rustc pr]: https://github.com/rust-lang/rust/pull/96737 |