| // Copyright 2026 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| fn require_lib(out_dir: &std::path::Path, name: &str) { |
| println!("cargo:rustc-link-lib=static={name}"); |
| let lib = if cfg!(target_os = "windows") { |
| format!("{name}.lib") |
| } else { |
| format!("lib{name}.a") |
| }; |
| println!("cargo:rerun-if-changed={}", out_dir.join(lib).display()); |
| } |
| |
| fn require_libs(names: &[&str]) { |
| // When running with ninja, it should set NINJA_OUT_DIR. |
| // If running directly with cargo, we know nothing about the output directory, |
| // so we fall back to assuming the default one. |
| let out_dir = if let Ok(out_dir) = std::env::var("NINJA_OUT_DIR") { |
| std::path::PathBuf::from(out_dir) |
| } else { |
| let manifest_dir = std::path::PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()); |
| manifest_dir.join("../../../../../out") |
| }; |
| println!("cargo:rustc-link-search=native={}", out_dir.display()); |
| for name in names { |
| require_lib(&out_dir, name); |
| } |
| } |