# 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/bind/bind.gni")
import("//build/config/fuchsia/rules.gni")
import("//build/test.gni")
import("//src/sys/build/components.gni")

bind_rules("msm8x53-clk-bind") {
  rules = "msm8x53-clk.bind"
  output = "msm8x53-clk-bind.h"
  tests = "bind-tests.json"
  deps = [
    "//src/devices/bind/fuchsia.platform",
    "//src/devices/bind/fuchsia.qualcomm.platform",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":msm8x53-clk-test" ]
}

driver_module("msm8x53-clk") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "msm8x53-clk.cc" ]
  deps = [
    ":msm8x53-clk-bind",
    "//sdk/banjo/fuchsia.hardware.clock:fuchsia.hardware.clock_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.clockimpl",
    "//sdk/banjo/fuchsia.hardware.gpio:fuchsia.hardware.gpio_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.i2c",
    "//sdk/banjo/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.clock:fuchsia.hardware.clock_c",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/lib/driver",
    "//src/devices/lib/mmio",
    "//src/devices/lib/msm8x53",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
  ]
}

test("msm8x53-clk-test-bin") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  output_name = "msm8x53-clk-test"
  sources = [
    "msm8x53-clk-test.cc",
    "msm8x53-clk.cc",
  ]
  deps = [
    ":msm8x53-clk-bind",
    "//sdk/banjo/fuchsia.hardware.clock:fuchsia.hardware.clock_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.clockimpl",
    "//sdk/banjo/fuchsia.hardware.gpio:fuchsia.hardware.gpio_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.i2c",
    "//sdk/banjo/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.clock:fuchsia.hardware.clock_c",
    "//sdk/lib/fdio",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/lib/mmio",
    "//src/devices/lib/msm8x53",
    "//src/devices/testing/fake_ddk",
    "//src/devices/testing/mock-mmio-reg",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
  ]
}

fuchsia_unittest_package("msm8x53-clk-test") {
  deps = [
    ":msm8x53-clk-bind_test",
    ":msm8x53-clk-test-bin",
  ]
}
