File tree 2 files changed +52
-0
lines changed
2 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ use std::process::Command;
7
7
fn main ( ) {
8
8
commit_info ( ) ;
9
9
compress_man ( ) ;
10
+ windows_manifest ( ) ;
10
11
// ALLOWED: Accessing environment during build time shouldn't be prohibited.
11
12
#[ allow( clippy:: disallowed_methods) ]
12
13
let target = std:: env:: var ( "TARGET" ) . unwrap ( ) ;
@@ -76,3 +77,26 @@ fn commit_info() {
76
77
println ! ( "cargo:rustc-env=CARGO_COMMIT_SHORT_HASH={}" , next( ) ) ;
77
78
println ! ( "cargo:rustc-env=CARGO_COMMIT_DATE={}" , next( ) )
78
79
}
80
+
81
+ #[ allow( clippy:: disallowed_methods) ]
82
+ fn windows_manifest ( ) {
83
+ use std:: env;
84
+ let target_os = env:: var ( "CARGO_CFG_TARGET_OS" ) ;
85
+ let target_env = env:: var ( "CARGO_CFG_TARGET_ENV" ) ;
86
+ if Ok ( "windows" ) == target_os. as_deref ( ) && Ok ( "msvc" ) == target_env. as_deref ( ) {
87
+ static WINDOWS_MANIFEST_FILE : & str = "windows.manifest.xml" ;
88
+
89
+ let mut manifest = env:: current_dir ( ) . unwrap ( ) ;
90
+ manifest. push ( WINDOWS_MANIFEST_FILE ) ;
91
+
92
+ println ! ( "cargo:rerun-if-changed={WINDOWS_MANIFEST_FILE}" ) ;
93
+ // Embed the Windows application manifest file.
94
+ println ! ( "cargo:rustc-link-arg-bin=cargo=/MANIFEST:EMBED" ) ;
95
+ println ! (
96
+ "cargo:rustc-link-arg-bin=cargo=/MANIFESTINPUT:{}" ,
97
+ manifest. to_str( ) . unwrap( )
98
+ ) ;
99
+ // Turn linker warnings into errors.
100
+ println ! ( "cargo:rustc-link-arg-bin=cargo=/WX" ) ;
101
+ }
102
+ }
Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" UTF-8" standalone =" yes" ?>
2
+ <!--
3
+ This is a Windows application manifest file.
4
+ See: https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests
5
+ -->
6
+ <assembly xmlns =" urn:schemas-microsoft-com:asm.v1" manifestVersion =" 1.0" xmlns : asmv3 =" urn:schemas-microsoft-com:asm.v3" >
7
+ <!-- Versions cargo supports as hosts -->
8
+ <compatibility xmlns =" urn:schemas-microsoft-com:compatibility.v1" >
9
+ <application >
10
+ <!-- Windows 7 --> <supportedOS Id =" {35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
11
+ <!-- Windows 8 --> <supportedOS Id =" {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
12
+ <!-- Windows 8.1 --> <supportedOS Id =" {1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
13
+ <!-- Windows 10 and 11 --> <supportedOS Id =" {8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
14
+ </application >
15
+ </compatibility >
16
+ <!-- Use UTF-8 code page -->
17
+ <asmv3 : application >
18
+ <asmv3 : windowsSettings xmlns =" http://schemas.microsoft.com/SMI/2019/WindowsSettings" >
19
+ <activeCodePage >UTF-8</activeCodePage >
20
+ </asmv3 : windowsSettings >
21
+ </asmv3 : application >
22
+ <!-- Remove (most) legacy path limits -->
23
+ <asmv3 : application >
24
+ <asmv3 : windowsSettings xmlns : ws2 =" http://schemas.microsoft.com/SMI/2016/WindowsSettings" >
25
+ <ws2 : longPathAware >true</ws2 : longPathAware >
26
+ </asmv3 : windowsSettings >
27
+ </asmv3 : application >
28
+ </assembly >
You can’t perform that action at this time.
0 commit comments