diff options
Diffstat (limited to 'compiler/rustc')
| -rw-r--r-- | compiler/rustc/Windows Manifest.xml | 28 | ||||
| -rw-r--r-- | compiler/rustc/build.rs | 24 |
2 files changed, 52 insertions, 0 deletions
diff --git a/compiler/rustc/Windows Manifest.xml b/compiler/rustc/Windows Manifest.xml new file mode 100644 index 00000000000..b37a2fd4c76 --- /dev/null +++ b/compiler/rustc/Windows Manifest.xml @@ -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> diff --git a/compiler/rustc/build.rs b/compiler/rustc/build.rs new file mode 100644 index 00000000000..24c06c0ddbf --- /dev/null +++ b/compiler/rustc/build.rs @@ -0,0 +1,24 @@ +use std::env; + +fn main() { + let target_os = env::var("CARGO_CFG_TARGET_OS"); + let target_env = env::var("CARGO_CFG_TARGET_ENV"); + if Ok("windows") == target_os.as_deref() && Ok("msvc") == target_env.as_deref() { + set_windows_exe_options(); + } +} + +// Add a manifest file to rustc.exe. +fn set_windows_exe_options() { + static WINDOWS_MANIFEST_FILE: &str = "Windows Manifest.xml"; + + let mut manifest = env::current_dir().unwrap(); + manifest.push(WINDOWS_MANIFEST_FILE); + + println!("cargo:rerun-if-changed={}", WINDOWS_MANIFEST_FILE); + // Embed the Windows application manifest file. + println!("cargo:rustc-link-arg-bin=rustc-main=/MANIFEST:EMBED"); + println!("cargo:rustc-link-arg-bin=rustc-main=/MANIFESTINPUT:{}", manifest.to_str().unwrap()); + // Turn linker warnings into errors. + println!("cargo:rustc-link-arg-bin=rustc-main=/WX"); +} |
