// Copyright 2020 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #[cfg(all(feature = "slirp", windows))] mod win_slirp { use std::env; pub(super) fn main() { // This must be an absolute path or linking issues will result when a consuming crate // tries to link since $PWD will be different. let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); #[cfg(debug_assertions)] let build_type = "debug"; #[cfg(not(debug_assertions))] let build_type = "release"; println!( r#"cargo:rustc-link-search={}\..\..\..\third_party\libslirp\{}"#, manifest_dir, build_type ); println!( r#"cargo:rustc-env=PATH={};{}\..\..\..\third_party\libslirp\{};"#, env::var("PATH").unwrap(), manifest_dir, build_type, ); } } fn main() { // We (the Windows crosvm maintainers) submitted upstream patches to libslirp-sys so it doesn't // try to link directly on Windows. This is because linking on Windows tends to be specific // to the build system that invokes Cargo (e.g. the crosvm jCI scripts that also produce the // required libslirp DLL & lib). The integration here (win_slirp::main) is specific to crosvm's // build process. #[cfg(all(feature = "slirp", windows))] win_slirp::main(); // For unix, libslirp-sys's build script will make the appropriate linking calls to pkg_config. }