| // Copyright 2023 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| use std::env; |
| use std::path::PathBuf; |
| |
| fn main() { |
| #[cfg(windows)] |
| main_windows(); |
| |
| #[cfg(any(target_os = "android", target_os = "linux"))] |
| main_unix(); |
| |
| // TODO: enable once Perfetto is in third_party/perfetto. |
| /* |
| let proto_files = vec![proto_path(&["config", "perfetto_config.proto"])]; |
| let mut out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR env does not exist.")); |
| out_dir.push("perfetto_protos"); |
| proto_build_tools::build_protos(&out_dir, proto_files.as_slice()); |
| */ |
| } |
| |
| #[cfg(windows)] |
| fn main_windows() { |
| // TODO: enable once we have Perfetto libraries available on Windows, |
| // download them with prebuilts::download_prebuilts. |
| // |
| // Ideally paths will be identical in the long term and we |
| // can have a single version of this code. |
| /* |
| println!("cargo:rustc-link-lib=dylib=cperfetto"); |
| #[cfg(debug_assertions)] |
| println!("cargo:rustc-link-search=..\\..\\libs\\debug"); |
| #[cfg(all(windows, not(debug_assertions)))] |
| println!("cargo:rustc-link-search=..\\..\\libs\\release"); |
| */ |
| } |
| |
| #[cfg(any(target_os = "android", target_os = "linux"))] |
| fn main_unix() { |
| // TODO: enable once we have Perfetto libraries available on unix. We may |
| // want to use a prebuilt here too, in which case this would be identical |
| // to the Windows version above. The paths will need to be adjusted to |
| // wherever we make the Perfetto binary available. |
| /* |
| println!("cargo:rustc-link-lib=dylib=cperfetto"); |
| #[cfg(debug_assertions)] |
| println!("cargo:rustc-link-search=../../libs/debug"); |
| #[cfg(not(debug_assertions))] |
| println!("cargo:rustc-link-search=../../libs/release"); |
| */ |
| } |
| |
| #[allow(dead_code)] |
| fn proto_path(path: &[&str]) -> PathBuf { |
| let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); |
| let mut full_path = manifest_dir; |
| full_path.extend(["..", "third_party", "perfetto", "protos", "perfetto"]); |
| full_path.extend(path); |
| full_path |
| } |