# Copyright 2024 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.

load(
    "@rules_fuchsia//fuchsia:defs.bzl",
    "fuchsia_cc_driver",
    "fuchsia_driver_bind_bytecode",
    "fuchsia_driver_component",
    "fuchsia_package",
)

fuchsia_driver_bind_bytecode(
    name = "power-bind-bytecode",
    output = "power_driver.bindbc",
    rules = "meta/power_driver.bind",
    deps = [
        "//examples/drivers/bind/bindlib:gizmo.example",
    ],
)

cc_library(
    name = "common",
    srcs = [
        "power_driver.cc",
    ],
    hdrs = [
        "power_driver.h",
    ],
    deps = [
        "@fuchsia_sdk//pkg/driver_component_cpp",
        "@fuchsia_sdk//pkg/driver_logging_cpp",
        "@fuchsia_sdk//pkg/driver_power_cpp",
        "@fuchsia_sdk//pkg/zx",
    ],
)

fuchsia_cc_driver(
    name = "power-driver",
    output_name = "power",
    deps = [":common"],
)

fuchsia_driver_component(
    name = "component",
    bind_bytecode = ":power-bind-bytecode",
    driver_lib = ":power-driver",
    manifest = "meta/power_driver.cml",
)

fuchsia_package(
    name = "pkg",
    package_name = "power_driver",
    components = [":component"],
    fuchsia_api_level = "HEAD",
    package_repository_name = "fuchsia.com",
    visibility = ["//visibility:public"],
)
