[iwlwifi] Package iwlwifi driver

Change-Id: I5481bf8b5e815be482a06dcdb9218466d07f2dbf
Reviewed-on: https://fuchsia-review.googlesource.com/c/drivers/wlan/intel/iwlwifi/+/651686
Fuchsia-Auto-Submit: Sakthi Vignesh Radhakrishnan <rsakthi@google.com>
Reviewed-by: Renato Mangini Dias <mangini@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
diff --git a/README.md b/README.md
index 43c7169..b19894c 100644
--- a/README.md
+++ b/README.md
@@ -70,7 +70,7 @@
 1. Build the driver:
 
   ```
-  scripts/build.sh third_party/iwlwifi/platform:fuchsia_device
+  scripts/build.sh third_party/iwlwifi:driver_repository
   ```
 
   This command will build the driver and make it available as a package on a local Fuchsia repository.
@@ -99,7 +99,7 @@
   Now you are ready to register the driver.
 
   ```
-  tools/ffx driver register fuchsia-pkg://iwlwifi_driver_repo/iwlwifi#lib/libcore.so
+  tools/ffx driver register fuchsia-pkg://fuchsiadrivers.com/iwlwifi_driver#lib/libiwlwifi_driver.so
   ```
 
 ## Run tests
diff --git a/third_party/iwlwifi/BUILD.bazel b/third_party/iwlwifi/BUILD.bazel
index 469c2a0..1af396f 100644
--- a/third_party/iwlwifi/BUILD.bazel
+++ b/third_party/iwlwifi/BUILD.bazel
@@ -54,5 +54,6 @@
     repo_name = "fuchsiadrivers.com",
     deps = [
         "//third_party/iwlwifi/test:iwlwifi_test_pkg",
+        "//third_party/iwlwifi/platform:iwlwifi_driver_pkg",
     ],
-)
\ No newline at end of file
+)
diff --git a/third_party/iwlwifi/platform/BUILD.bazel b/third_party/iwlwifi/platform/BUILD.bazel
index 7db8690..6f5e2bb 100644
--- a/third_party/iwlwifi/platform/BUILD.bazel
+++ b/third_party/iwlwifi/platform/BUILD.bazel
@@ -9,6 +9,9 @@
     "@rules_fuchsia//fuchsia:defs.bzl",
     "fuchsia_driver_header_bind_rules",
     "fuchsia_driver_bytecode_bind_rules",
+    "fuchsia_component",
+    "fuchsia_component_manifest",
+    "fuchsia_package",
 )
 
 fuchsia_driver_header_bind_rules(
@@ -24,7 +27,7 @@
     rules = "iwlwifi.bind",
     output = "iwlwifi-bind.bc",
 
-    deps = ["@fuchsia_sdk//bind/fuchsia.usb"],
+    deps = ["@fuchsia_sdk//bind/fuchsia.pci"],
 )
 
 cc_library(
@@ -88,7 +91,6 @@
 
         # Needed only for library purposes (channel and ieee includes)
         "@fuchsia_sdk//fidl/fuchsia.wlan.common:fuchsia.wlan.common_cc",
-        "@fuchsia_sdk//fidl/fuchsia.wlan.mlme:fuchsia.wlan.mlme_cc",
         "@fuchsia_sdk//fidl/fuchsia.hardware.wlan.associnfo:fuchsia.hardware.wlan.associnfo_banjo_cc",
         ],
 
@@ -112,7 +114,6 @@
 cc_library(
     name = "fuchsia_device",
     srcs = [
-        "bind.cc",
         "mvm-mlme.cc",
         "mvm-sta.cc",
         "pcie-device.cc",
@@ -149,3 +150,36 @@
 
     copts = ["-Ithird_party/iwlwifi"],
 )
+
+cc_binary(
+    name = "iwlwifi_driver",
+    srcs = [ "bind.cc" ],
+    deps = [
+        ":fuchsia_bind_header",
+        ":fuchsia_device",
+    ],
+    linkshared = True,
+)
+
+fuchsia_component_manifest(
+    name = "iwlwifi_manifest",
+    src = "meta/iwlwifi_driver.cml",
+)
+
+fuchsia_component(
+    name = "iwlwifi_driver_component",
+    content = {
+        ":iwlwifi_driver": "lib/",
+        ":fuchsia_bind_bytecode": "meta/bind/",
+    },
+    manifest = ":iwlwifi_manifest",
+)
+
+fuchsia_package(
+    name = "iwlwifi_driver_pkg",
+    package_name = "iwlwifi_driver",
+    visibility = ["//visibility:public"],
+    deps = [
+        ":iwlwifi_driver_component",
+     ],
+)
diff --git a/third_party/iwlwifi/platform/meta/iwlwifi_driver.cml b/third_party/iwlwifi/platform/meta/iwlwifi_driver.cml
new file mode 100644
index 0000000..62a28ce
--- /dev/null
+++ b/third_party/iwlwifi/platform/meta/iwlwifi_driver.cml
@@ -0,0 +1,7 @@
+{
+    program: {
+        runner: 'driver',
+        binary: 'libiwlwifi_driver.so',
+        bind: 'meta/bind/iwlwifi_driver.bindbc'
+    }
+}