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