mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	 095fa86a3b
			
		
	
	
		095fa86a3b
		
	
	
	
	
		
			
			Adds Windows resources with the rust version information to rustc-main.exe and rustc_driver.dll Sets the product description to "Rust Compiler" or "Rust Compiler (channel)" for non-stable channels
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use std::{env, path};
 | |
| 
 | |
| use rustc_windows_rc::{VersionInfoFileType, compile_windows_resource_file};
 | |
| 
 | |
| 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();
 | |
|     } else {
 | |
|         // Avoid rerunning the build script every time.
 | |
|         println!("cargo:rerun-if-changed=build.rs");
 | |
|     }
 | |
| }
 | |
| 
 | |
| // Add a manifest file to rustc.exe.
 | |
| fn set_windows_exe_options() {
 | |
|     set_windows_resource();
 | |
|     set_windows_manifest();
 | |
| }
 | |
| 
 | |
| fn set_windows_resource() {
 | |
|     let stem = path::PathBuf::from("rustc_main_resource");
 | |
|     let file_description = "rustc";
 | |
|     let res_file = compile_windows_resource_file(&stem, file_description, VersionInfoFileType::App);
 | |
|     println!("cargo:rustc-link-arg={}", res_file.display());
 | |
| }
 | |
| 
 | |
| fn set_windows_manifest() {
 | |
|     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");
 | |
| }
 |