# Copyright 2021 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_package_repository",
)

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "core",
    srcs = [
        "iwl-drv.c",
        "iwl-eeprom-parse.c",
        "iwl-io.c",
        "iwl-nvm-parse.c",
        "iwl-phy-db.c",
        "iwl-trans.c",
        ],
    hdrs = [
        "iwl-agn-hw.h",
        "iwl-config.h",
        "iwl-constants.h",
        "iwl-csr.h",
        "iwl-dbg-tlv.h",
        "iwl-debug.h",
        "iwl-drv.h",
        "iwl-eeprom-parse.h",
        "iwl-eeprom-read.h",
        "iwl-fh.h",
        "iwl-io.h",
        "iwl-modparams.h",
        "iwl-nvm-parse.h",
        "iwl-op-mode.h",
        "iwl-phy-db.h",
        "iwl-prph.h",
        "iwl-scd.h",
        "iwl-trans.h",
        "iwl-vendor-cmd.h",
        "iwl-context-info-gen3.h",
        "iwl-context-info.h",
        ],
    deps = [
        "//third_party/iwlwifi/fw:api",
        "//third_party/iwlwifi/platform:platform",
    ],
)

fuchsia_package_repository(
    name = "driver_repository",
    testonly = True,
    repo_name = "fuchsiadrivers.com",
    deps = [
        "//third_party/iwlwifi/test:iwlwifi_test_pkg",
    ],
)