1 // Copyright 2022 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 static PREBUILTS_VERSION_FILENAME: &str = "prebuilts_version"; 6 static SANDBOX_LIB: &str = "libsandbox.lib"; 7 8 static BINDINGS_FILE: &str = "bindings.rs"; 9 setup_windows_prebuilts()10pub fn setup_windows_prebuilts() { 11 println!("cargo:rustc-link-lib=dbghelp"); 12 println!("cargo:rustc-link-lib=gdi32"); 13 println!("cargo:rustc-link-lib=oleaut32"); 14 println!("cargo:rustc-link-lib=setupapi"); 15 println!("cargo:rustc-link-lib=shell32"); 16 println!("cargo:rustc-link-lib=user32"); 17 println!("cargo:rustc-link-lib=winmm"); 18 19 if std::env::var("CARGO_CFG_DEBUG_ASSERTIONS").is_ok() { 20 println!("cargo:rustc-link-lib=ucrtd"); 21 } 22 23 println!("cargo:rustc-link-lib=libsandbox"); 24 25 println!("cargo:rerun-if-changed={}", BINDINGS_FILE); 26 } 27 main()28fn main() { 29 if std::env::var("CARGO_CFG_WINDOWS").is_ok() { 30 let version = std::fs::read_to_string(PREBUILTS_VERSION_FILENAME) 31 .unwrap() 32 .trim() 33 .parse::<u32>() 34 .unwrap(); 35 36 // TODO(b:253039132) build sandbox prebuilts locally on windows from build.rs. 37 let files = prebuilts::download_prebuilts("sandbox", version, &[SANDBOX_LIB]).unwrap(); 38 println!( 39 r#"cargo:rustc-link-search={};{}"#, 40 std::env::var("PATH").unwrap(), 41 files 42 .get(0) 43 .unwrap() 44 .parent() 45 .unwrap() 46 .as_os_str() 47 .to_str() 48 .unwrap() 49 ); 50 setup_windows_prebuilts(); 51 } 52 } 53