xref: /aosp_15_r20/external/crosvm/perfetto/build.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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