# Copyright 2022 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_binary",
    "fuchsia_component_manifest",
    "fuchsia_driver_bytecode_bind_rules",
    "fuchsia_driver_component",
    "fuchsia_package",
)

fuchsia_driver_bytecode_bind_rules(
    name = "bind_bytecode",
    output = "acpi_controller.bindbc",
    rules = "acpi_controller.bind",
    deps = [
        "@fuchsia_sdk//bind/fuchsia.acpi",
    ],
)

cc_binary(
    name = "acpi_controller",
    srcs = [
        "acpi_controller.cc",
        "acpi_controller.h",
    ],
    linkshared = True,
    deps = [
        "//src/acpi_multiply/lib",
        "@fuchsia_sdk//fidl/fuchsia.device.fs:fuchsia.device.fs_llcpp_cc",
        "@fuchsia_sdk//fidl/fuchsia.driver.compat:fuchsia.driver.compat_llcpp_cc",
        "@fuchsia_sdk//fidl/fuchsia.hardware.acpi:fuchsia.hardware.acpi_llcpp_cc",
        "@fuchsia_sdk//fidl/zx:zx_cc",
        "@fuchsia_sdk//pkg/async-cpp",
        "@fuchsia_sdk//pkg/driver2-llcpp",
        "@fuchsia_sdk//pkg/hwreg",
        "@fuchsia_sdk//pkg/mmio",
        "@fuchsia_sdk//pkg/fidl_cpp_wire",
        "@fuchsia_sdk//pkg/sys_component_llcpp",
        "@fuchsia_sdk//pkg/zx",
    ],
)

fuchsia_component_manifest(
    name = "manifest",
    src = "meta/acpi_controller.cml",
    includes = [
        "@fuchsia_sdk//pkg/syslog:client",
    ],
)


fuchsia_driver_component(
    name = "component",
    bind_bytecode = ":bind_bytecode",
    driver_lib = ":acpi_controller",
    manifest = ":manifest",
)

fuchsia_package(
    name = "pkg",
    package_name = "acpi_controller",
    visibility = ["//visibility:public"],
    deps = [
        ":component",
    ],
)
