1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2023 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 use std::path::PathBuf;
7*bb4ee6a4SAndroid Build Coastguard Worker
main()8*bb4ee6a4SAndroid Build Coastguard Worker fn main() {
9*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(windows)]
10*bb4ee6a4SAndroid Build Coastguard Worker main_windows();
11*bb4ee6a4SAndroid Build Coastguard Worker
12*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(any(target_os = "android", target_os = "linux"))]
13*bb4ee6a4SAndroid Build Coastguard Worker main_unix();
14*bb4ee6a4SAndroid Build Coastguard Worker
15*bb4ee6a4SAndroid Build Coastguard Worker // TODO: enable once Perfetto is in third_party/perfetto.
16*bb4ee6a4SAndroid Build Coastguard Worker /*
17*bb4ee6a4SAndroid Build Coastguard Worker let proto_files = vec![proto_path(&["config", "perfetto_config.proto"])];
18*bb4ee6a4SAndroid Build Coastguard Worker let mut out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR env does not exist."));
19*bb4ee6a4SAndroid Build Coastguard Worker out_dir.push("perfetto_protos");
20*bb4ee6a4SAndroid Build Coastguard Worker proto_build_tools::build_protos(&out_dir, proto_files.as_slice());
21*bb4ee6a4SAndroid Build Coastguard Worker */
22*bb4ee6a4SAndroid Build Coastguard Worker }
23*bb4ee6a4SAndroid Build Coastguard Worker
24*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(windows)]
main_windows()25*bb4ee6a4SAndroid Build Coastguard Worker fn main_windows() {
26*bb4ee6a4SAndroid Build Coastguard Worker // TODO: enable once we have Perfetto libraries available on Windows,
27*bb4ee6a4SAndroid Build Coastguard Worker // download them with prebuilts::download_prebuilts.
28*bb4ee6a4SAndroid Build Coastguard Worker //
29*bb4ee6a4SAndroid Build Coastguard Worker // Ideally paths will be identical in the long term and we
30*bb4ee6a4SAndroid Build Coastguard Worker // can have a single version of this code.
31*bb4ee6a4SAndroid Build Coastguard Worker /*
32*bb4ee6a4SAndroid Build Coastguard Worker println!("cargo:rustc-link-lib=dylib=cperfetto");
33*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(debug_assertions)]
34*bb4ee6a4SAndroid Build Coastguard Worker println!("cargo:rustc-link-search=..\\..\\libs\\debug");
35*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(all(windows, not(debug_assertions)))]
36*bb4ee6a4SAndroid Build Coastguard Worker println!("cargo:rustc-link-search=..\\..\\libs\\release");
37*bb4ee6a4SAndroid Build Coastguard Worker */
38*bb4ee6a4SAndroid Build Coastguard Worker }
39*bb4ee6a4SAndroid Build Coastguard Worker
40*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(any(target_os = "android", target_os = "linux"))]
main_unix()41*bb4ee6a4SAndroid Build Coastguard Worker fn main_unix() {
42*bb4ee6a4SAndroid Build Coastguard Worker // TODO: enable once we have Perfetto libraries available on unix. We may
43*bb4ee6a4SAndroid Build Coastguard Worker // want to use a prebuilt here too, in which case this would be identical
44*bb4ee6a4SAndroid Build Coastguard Worker // to the Windows version above. The paths will need to be adjusted to
45*bb4ee6a4SAndroid Build Coastguard Worker // wherever we make the Perfetto binary available.
46*bb4ee6a4SAndroid Build Coastguard Worker /*
47*bb4ee6a4SAndroid Build Coastguard Worker println!("cargo:rustc-link-lib=dylib=cperfetto");
48*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(debug_assertions)]
49*bb4ee6a4SAndroid Build Coastguard Worker println!("cargo:rustc-link-search=../../libs/debug");
50*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(not(debug_assertions))]
51*bb4ee6a4SAndroid Build Coastguard Worker println!("cargo:rustc-link-search=../../libs/release");
52*bb4ee6a4SAndroid Build Coastguard Worker */
53*bb4ee6a4SAndroid Build Coastguard Worker }
54*bb4ee6a4SAndroid Build Coastguard Worker
55*bb4ee6a4SAndroid Build Coastguard Worker #[allow(dead_code)]
proto_path(path: &[&str]) -> PathBuf56*bb4ee6a4SAndroid Build Coastguard Worker fn proto_path(path: &[&str]) -> PathBuf {
57*bb4ee6a4SAndroid Build Coastguard Worker let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
58*bb4ee6a4SAndroid Build Coastguard Worker let mut full_path = manifest_dir;
59*bb4ee6a4SAndroid Build Coastguard Worker full_path.extend(["..", "third_party", "perfetto", "protos", "perfetto"]);
60*bb4ee6a4SAndroid Build Coastguard Worker full_path.extend(path);
61*bb4ee6a4SAndroid Build Coastguard Worker full_path
62*bb4ee6a4SAndroid Build Coastguard Worker }
63