1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2020 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 SLIRP_LIB: &str = "libslirp.lib"; 7*bb4ee6a4SAndroid Build Coastguard Worker static SLIRP_DLL: &str = "libslirp-0.dll"; 8*bb4ee6a4SAndroid Build Coastguard Worker static GLIB_FILENAME: &str = "libglib-2.0.dll.a"; 9*bb4ee6a4SAndroid Build Coastguard Worker main()10*bb4ee6a4SAndroid Build Coastguard Workerfn main() { 11*bb4ee6a4SAndroid Build Coastguard Worker // We (the Windows crosvm maintainers) submitted upstream patches to libslirp-sys so it doesn't 12*bb4ee6a4SAndroid Build Coastguard Worker // try to link directly on Windows. This is because linking on Windows tends to be specific 13*bb4ee6a4SAndroid Build Coastguard Worker // to the build system that invokes Cargo (e.g. the crosvm jCI scripts that also produce the 14*bb4ee6a4SAndroid Build Coastguard Worker // required libslirp DLL & lib). The integration here (win_slirp::main) is specific to crosvm's 15*bb4ee6a4SAndroid Build Coastguard Worker // build process. 16*bb4ee6a4SAndroid Build Coastguard Worker if std::env::var("CARGO_CFG_WINDOWS").is_ok() { 17*bb4ee6a4SAndroid Build Coastguard Worker let version = std::fs::read_to_string(PREBUILTS_VERSION_FILENAME) 18*bb4ee6a4SAndroid Build Coastguard Worker .unwrap() 19*bb4ee6a4SAndroid Build Coastguard Worker .trim() 20*bb4ee6a4SAndroid Build Coastguard Worker .parse::<u32>() 21*bb4ee6a4SAndroid Build Coastguard Worker .unwrap(); 22*bb4ee6a4SAndroid Build Coastguard Worker // TODO(b:242204245) build libslirp locally on windows from build.rs. 23*bb4ee6a4SAndroid Build Coastguard Worker let mut libs = vec![SLIRP_DLL, SLIRP_LIB]; 24*bb4ee6a4SAndroid Build Coastguard Worker if std::env::var("CARGO_CFG_TARGET_ENV") == Ok("gnu".to_string()) { 25*bb4ee6a4SAndroid Build Coastguard Worker libs.push(GLIB_FILENAME); 26*bb4ee6a4SAndroid Build Coastguard Worker } 27*bb4ee6a4SAndroid Build Coastguard Worker prebuilts::download_prebuilts("libslirp", version, &libs).unwrap(); 28*bb4ee6a4SAndroid Build Coastguard Worker } 29*bb4ee6a4SAndroid Build Coastguard Worker 30*bb4ee6a4SAndroid Build Coastguard Worker // For unix, libslirp-sys's build script will make the appropriate linking calls to pkg_config. 31*bb4ee6a4SAndroid Build Coastguard Worker } 32