xref: /aosp_15_r20/external/crosvm/win_audio/build.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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 use std::env;
6*bb4ee6a4SAndroid Build Coastguard Worker 
7*bb4ee6a4SAndroid Build Coastguard Worker static PREBUILTS_VERSION_FILENAME: &str = "prebuilts_version";
8*bb4ee6a4SAndroid Build Coastguard Worker static R8BRAIN_LIB: &str = "r8Brain.lib";
9*bb4ee6a4SAndroid Build Coastguard Worker static R8BRAIN_DLL: &str = "r8Brain.dll";
10*bb4ee6a4SAndroid Build Coastguard Worker static UCRTBASE_DLL: &str = "ucrtbased.dll";
11*bb4ee6a4SAndroid Build Coastguard Worker static VCRUNTIME_DLL: &str = "vcruntime140d.dll";
12*bb4ee6a4SAndroid Build Coastguard Worker 
main()13*bb4ee6a4SAndroid Build Coastguard Worker fn main() {
14*bb4ee6a4SAndroid Build Coastguard Worker     if std::env::var("CARGO_CFG_WINDOWS").is_ok() {
15*bb4ee6a4SAndroid Build Coastguard Worker         let version = std::fs::read_to_string(PREBUILTS_VERSION_FILENAME)
16*bb4ee6a4SAndroid Build Coastguard Worker             .unwrap()
17*bb4ee6a4SAndroid Build Coastguard Worker             .trim()
18*bb4ee6a4SAndroid Build Coastguard Worker             .parse::<u32>()
19*bb4ee6a4SAndroid Build Coastguard Worker             .unwrap();
20*bb4ee6a4SAndroid Build Coastguard Worker 
21*bb4ee6a4SAndroid Build Coastguard Worker         // TODO(b:253039132) build prebuilts locally on windows from build.rs.
22*bb4ee6a4SAndroid Build Coastguard Worker         let files = prebuilts::download_prebuilts(
23*bb4ee6a4SAndroid Build Coastguard Worker             "r8brain",
24*bb4ee6a4SAndroid Build Coastguard Worker             version,
25*bb4ee6a4SAndroid Build Coastguard Worker             &[R8BRAIN_DLL, R8BRAIN_LIB, UCRTBASE_DLL, VCRUNTIME_DLL],
26*bb4ee6a4SAndroid Build Coastguard Worker         )
27*bb4ee6a4SAndroid Build Coastguard Worker         .unwrap();
28*bb4ee6a4SAndroid Build Coastguard Worker         let lib_dir = files
29*bb4ee6a4SAndroid Build Coastguard Worker             .first()
30*bb4ee6a4SAndroid Build Coastguard Worker             .unwrap()
31*bb4ee6a4SAndroid Build Coastguard Worker             .parent()
32*bb4ee6a4SAndroid Build Coastguard Worker             .unwrap()
33*bb4ee6a4SAndroid Build Coastguard Worker             .as_os_str()
34*bb4ee6a4SAndroid Build Coastguard Worker             .to_str()
35*bb4ee6a4SAndroid Build Coastguard Worker             .unwrap();
36*bb4ee6a4SAndroid Build Coastguard Worker         println!("cargo:rustc-link-lib=r8Brain");
37*bb4ee6a4SAndroid Build Coastguard Worker         println!(r#"cargo:rustc-link-search={}"#, lib_dir);
38*bb4ee6a4SAndroid Build Coastguard Worker         println!(
39*bb4ee6a4SAndroid Build Coastguard Worker             r#"cargo:rustc-env=PATH={};{}"#,
40*bb4ee6a4SAndroid Build Coastguard Worker             lib_dir,
41*bb4ee6a4SAndroid Build Coastguard Worker             env::var("PATH").unwrap(),
42*bb4ee6a4SAndroid Build Coastguard Worker         );
43*bb4ee6a4SAndroid Build Coastguard Worker     }
44*bb4ee6a4SAndroid Build Coastguard Worker }
45