blob: 44ed2d87ac346158804a374a17e4cd3f39bbbab5 [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config.gni")
import("//build/dist/component_manifest_resources.gni")
import("//build/package.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_test.gni")
import("//build/test/test_package.gni")
import("//third_party/cobalt/metrics_registry.gni")
metrics_registry("power_manager_metrics") {
# ID of the 'power' project from the //third_party/cobalt_config/projects.yaml file
project_id = 3
# The namespace to use in the generated code
namespace = "power_manager_metrics"
# Generates a rust target called 'power_manager_metrics_rustlib'
generate_rust = true
}
rustc_binary("bin") {
name = "power_manager"
edition = "2018"
force_opt = "z"
# TODO(fxbug.dev/64097): extract to a template
# power_manager must always be small (even in debug builds) since it is part of bootfs.
#
# The add/remove/add ensures we get the configuration without producing errors for builds which
# enable ThinLTO themselves.
configs += [ "//build/config/lto:thinlto" ]
configs -= [ "//build/config/lto:thinlto" ]
configs += [ "//build/config/lto:thinlto" ]
# we can't dynamically link std when we're in the zbi
configs -= [ "//build/config/fuchsia:dynamic_rust_standard_library" ]
deps = [
":power_manager_metrics_rustlib",
"//sdk/fidl/fuchsia.cobalt:fuchsia.cobalt-rustc",
"//sdk/fidl/fuchsia.device:fuchsia.device-rustc",
"//sdk/fidl/fuchsia.device.manager:fuchsia.device.manager-rustc",
"//sdk/fidl/fuchsia.feedback:fuchsia.feedback-rustc",
"//sdk/fidl/fuchsia.hardware.cpu.ctrl:fuchsia.hardware.cpu.ctrl-rustc",
"//sdk/fidl/fuchsia.hardware.power.statecontrol:fuchsia.hardware.power.statecontrol-rustc",
"//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal-rustc",
"//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
"//sdk/fidl/fuchsia.kernel:fuchsia.kernel-rustc",
"//sdk/fidl/fuchsia.power.manager:fuchsia.power.manager-rustc",
"//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
"//sdk/fidl/fuchsia.thermal:fuchsia.thermal-rustc",
"//src/lib/cobalt/rust:fuchsia-cobalt",
"//src/lib/diagnostics/inspect/contrib/rust",
"//src/lib/diagnostics/inspect/rust",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/syslog/rust",
"//src/lib/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:async-trait",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:lazy_static",
"//third_party/rust_crates:log",
"//third_party/rust_crates:num-traits",
"//third_party/rust_crates:parking_lot",
"//third_party/rust_crates:serde",
"//third_party/rust_crates:serde_derive",
"//third_party/rust_crates:serde_json",
"//third_party/rust_crates:thiserror",
]
sources = [
"src/cobalt_metrics.rs",
"src/cpu_control_handler.rs",
"src/cpu_stats_handler.rs",
"src/crash_report_handler.rs",
"src/dev_control_handler.rs",
"src/driver_manager_handler.rs",
"src/error.rs",
"src/main.rs",
"src/message.rs",
"src/node.rs",
"src/power_manager.rs",
"src/shutdown_request.rs",
"src/shutdown_watcher.rs",
"src/system_shutdown_handler.rs",
"src/temperature_handler.rs",
"src/test/mock_node.rs",
"src/test/mod.rs",
"src/test/thermal_integration_tests.rs",
"src/thermal_limiter.rs",
"src/thermal_policy.rs",
"src/thermal_shutdown.rs",
"src/types.rs",
"src/utils.rs",
]
}
# TODO(fxbug.dev/64371): Require a standalone rustc_test target here instead of adding
# "with_unit_tests = true" to the rustc_binary target above because of a bug that leads to a
# segmentation fault related to the thinlto configuration. See fxbug.dev/64371 for more details.
rustc_test("bin_test") {
name = "power_manager_bin_test"
edition = "2018"
source_root = "src/main.rs"
deps = [
":power_manager_metrics_rustlib",
"rkf45:lib",
"//sdk/fidl/fuchsia.cobalt:fuchsia.cobalt-rustc",
"//sdk/fidl/fuchsia.device:fuchsia.device-rustc",
"//sdk/fidl/fuchsia.device.manager:fuchsia.device.manager-rustc",
"//sdk/fidl/fuchsia.feedback:fuchsia.feedback-rustc",
"//sdk/fidl/fuchsia.hardware.cpu.ctrl:fuchsia.hardware.cpu.ctrl-rustc",
"//sdk/fidl/fuchsia.hardware.power.statecontrol:fuchsia.hardware.power.statecontrol-rustc",
"//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal-rustc",
"//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
"//sdk/fidl/fuchsia.kernel:fuchsia.kernel-rustc",
"//sdk/fidl/fuchsia.power.manager:fuchsia.power.manager-rustc",
"//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
"//sdk/fidl/fuchsia.thermal:fuchsia.thermal-rustc",
"//src/lib/cobalt/rust:fuchsia-cobalt",
"//src/lib/diagnostics/inspect/contrib/rust",
"//src/lib/diagnostics/inspect/rust",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/storage/vfs/rust:vfs",
"//src/lib/syslog/rust",
"//src/lib/test_util",
"//src/lib/trace/rust:trace",
"//src/lib/trace/rust:trace-provider",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:async-trait",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:lazy_static",
"//third_party/rust_crates:log",
"//third_party/rust_crates:matches",
"//third_party/rust_crates:num-traits",
"//third_party/rust_crates:parking_lot",
"//third_party/rust_crates:serde",
"//third_party/rust_crates:serde_derive",
"//third_party/rust_crates:serde_json",
"//third_party/rust_crates:thiserror",
]
sources = [
"src/cobalt_metrics.rs",
"src/cpu_control_handler.rs",
"src/cpu_stats_handler.rs",
"src/crash_report_handler.rs",
"src/dev_control_handler.rs",
"src/driver_manager_handler.rs",
"src/error.rs",
"src/main.rs",
"src/message.rs",
"src/node.rs",
"src/power_manager.rs",
"src/shutdown_request.rs",
"src/shutdown_watcher.rs",
"src/system_shutdown_handler.rs",
"src/temperature_handler.rs",
"src/test/mock_node.rs",
"src/test/mod.rs",
"src/test/thermal_integration_tests.rs",
"src/thermal_limiter.rs",
"src/thermal_policy.rs",
"src/thermal_shutdown.rs",
"src/types.rs",
"src/utils.rs",
]
}
component_manifest_resources("manifest") {
sources = [ "meta/power-manager.cml" ]
}
# TODO(65893): remove after soft migration to move power-manager into the ZBI
group("power-manager") {
deps = []
}
group("bootfs") {
deps = [
":bin",
":manifest",
]
}
group("tests") {
testonly = true
deps = [
":power-manager-tests",
"rkf45:rkf45-tests",
]
}
test_package("power-manager-tests") {
deps = [
":bin_test",
"node_config:test_config_data",
]
tests = [
{
name = "power_manager_bin_test"
},
]
}
group("astro_config") {
deps = [ "node_config:astro" ]
}
group("base_config") {
deps = [ "node_config:base" ]
}
group("luis_config") {
deps = [ "node_config:luis" ]
}
group("nelson_config") {
deps = [ "node_config:nelson" ]
}
group("sherlock_config") {
deps = [ "node_config:sherlock" ]
}