[unification] Move //zircon/system/dev/gpio to the GN build

Generated with: //scripts/unification/move_zn_element.py

scripts/unification/verify_element_move.py --reference local/initial.json:

Warning   aux     size change for test/sys/mtk-gpio-test: -5% (80.0K)
Warning   aux     shared library added to test/sys/as370-gpio-test: libc++abi.so.1
Warning   aux     shared library added to test/sys/qcom-gpio-test: libc++abi.so.1
Warning   aux     shared library added to test/sys/mtk-gpio-test: libc++abi.so.1
Error     image   size change for driver/mt-8167.so: +4% (33.5K)
Error     image   size change for driver/aml-axg-gpio.so: +6% (27.3K)
Error     image   size change for driver/as370-gpio.so: +6% (25.5K)
Error     image   size change for driver/hi3660-gpio.so: +11% (13.7K)
Error     image   size change for driver/qcom-gpio.so: +6% (25.5K)
Error     image   size change for driver/gpio.so: +12% (13.5K)
Error     image   size change for driver/aml-gxl-gpio.so: +5% (29.5K)
Error     image   size change for driver/gpio-test.so: +12% (13.5K)
Error     image   shared library added to driver/aml-axg-gpio.so: libfdio.so
Error     image   shared library added to driver/aml-gxl-gpio.so: libfdio.so
Warning   tests   size change for test/sys/mtk-gpio-test: -5% (80.0K)
Warning   tests   shared library added to test/sys/as370-gpio-test: libc++abi.so.1
Warning   tests   shared library added to test/sys/qcom-gpio-test: libc++abi.so.1
Warning   tests   shared library added to test/sys/mtk-gpio-test: libc++abi.so.1
Error: summaries do not match!

Bug: 36139
Change-Id: I133158ff955b612d5f1d6216ed27b46a5bd5f279
diff --git a/build/unification/images/BUILD.gn b/build/unification/images/BUILD.gn
index fc415ff..f271ce6 100644
--- a/build/unification/images/BUILD.gn
+++ b/build/unification/images/BUILD.gn
@@ -117,12 +117,10 @@
     ":driver.ahci",
     ":driver.alc5514",
     ":driver.alc5663",
-    ":driver.aml-axg-gpio",
     ":driver.aml-canvas",
     ":driver.aml-cpu",
     ":driver.aml-ethernet-s912",
     ":driver.aml-gpu",
-    ":driver.aml-gxl-gpio",
     ":driver.aml-light",
     ":driver.aml-pwm",
     ":driver.aml-pwm-init",
@@ -138,7 +136,6 @@
     ":driver.amlogic-clk",
     ":driver.amlogic-pcie",
     ":driver.ams-light",
-    ":driver.as370-gpio",
     ":driver.as370-pdm-input",
     ":driver.as370-power",
     ":driver.as370-sdhci",
@@ -200,12 +197,9 @@
     ":driver.gauss-tdm",
     ":driver.goldfish-display",
     ":driver.goodix",
-    ":driver.gpio",
     ":driver.gpio-light",
-    ":driver.gpio-test",
     ":driver.gpt",
     ":driver.hdmi-audio-codec",
-    ":driver.hi3660-gpio",
     ":driver.hid",
     ":driver.hid-buttons",
     ":driver.hidctl",
@@ -227,7 +221,6 @@
     ":driver.msm8x53-clk",
     ":driver.msm8x53-power",
     ":driver.msm8x53-sdhci",
-    ":driver.mt-8167",
     ":driver.mt-musb-host",
     ":driver.mt-musb-peripheral",
     ":driver.mt8167-tdm-input",
@@ -252,7 +245,6 @@
     ":driver.platform-bus.proxy",
     ":driver.power",
     ":driver.pwm",
-    ":driver.qcom-gpio",
     ":driver.qcom-pil",
     ":driver.qemu-arm64",
     ":driver.qemu-audio-codec",
@@ -525,7 +517,6 @@
     ":test.sys.affine-test",
     ":test.sys.ahci-unittest",
     ":test.sys.alc5663-test",
-    ":test.sys.aml-axg-gpio-test",
     ":test.sys.aml-canvas-test",
     ":test.sys.aml-cpu-test",
     ":test.sys.aml-light-test",
@@ -538,7 +529,6 @@
     ":test.sys.aml-thermal-s912-test",
     ":test.sys.aml-uart-test",
     ":test.sys.amlogic-clk-test",
-    ":test.sys.as370-gpio-test",
     ":test.sys.as370-power-test",
     ":test.sys.as370-thermal-test",
     ":test.sys.astro-display-test-test",
@@ -669,7 +659,6 @@
     ":test.sys.mt8167-audio-lib-test",
     ":test.sys.mt8167-thermal-test",
     ":test.sys.mt8167s_ref-test",
-    ":test.sys.mtk-gpio-test",
     ":test.sys.mtk-power-test",
     ":test.sys.mtk-sdmmc-test",
     ":test.sys.mtk-thermal-test",
@@ -698,7 +687,6 @@
     ":test.sys.pretty-test-test",
     ":test.sys.ptysvc-test-test",
     ":test.sys.pwm-test",
-    ":test.sys.qcom-gpio-test",
     ":test.sys.ram-nand-test",
     ":test.sys.range-test",
     ":test.sys.refcount-test-test",
@@ -995,7 +983,6 @@
     ":test.sys.affine-test",
     ":test.sys.ahci-unittest",
     ":test.sys.alc5663-test",
-    ":test.sys.aml-axg-gpio-test",
     ":test.sys.aml-canvas-test",
     ":test.sys.aml-cpu-test",
     ":test.sys.aml-light-test",
@@ -1008,7 +995,6 @@
     ":test.sys.aml-thermal-s912-test",
     ":test.sys.aml-uart-test",
     ":test.sys.amlogic-clk-test",
-    ":test.sys.as370-gpio-test",
     ":test.sys.as370-power-test",
     ":test.sys.as370-thermal-test",
     ":test.sys.astro-display-test-test",
@@ -1139,7 +1125,6 @@
     ":test.sys.mt8167-audio-lib-test",
     ":test.sys.mt8167-thermal-test",
     ":test.sys.mt8167s_ref-test",
-    ":test.sys.mtk-gpio-test",
     ":test.sys.mtk-power-test",
     ":test.sys.mtk-sdmmc-test",
     ":test.sys.mtk-thermal-test",
@@ -1168,7 +1153,6 @@
     ":test.sys.pretty-test-test",
     ":test.sys.ptysvc-test-test",
     ":test.sys.pwm-test",
-    ":test.sys.qcom-gpio-test",
     ":test.sys.ram-nand-test",
     ":test.sys.range-test",
     ":test.sys.refcount-test-test",
@@ -1367,13 +1351,13 @@
     #":driver.ahci",
     #":driver.alc5514",
     #":driver.alc5663",
-    #":driver.aml-axg-gpio",
+    "//zircon/system/dev/gpio/aml-axg-gpio:aml-axg-gpio-manifest",
     #":driver.aml-canvas",
     #":driver.aml-cpu",
     #":driver.aml-ethernet-s912",
     #":driver.aml-gpu",
-    #":driver.aml-gxl-gpio",
     "//zircon/system/dev/i2c/aml-i2c:aml-i2c-manifest",
+    "//zircon/system/dev/gpio/aml-gxl-gpio:aml-gxl-gpio-manifest",
     #":driver.aml-light",
     #":driver.aml-pwm",
     #":driver.aml-pwm-init",
@@ -1389,7 +1373,7 @@
     #":driver.amlogic-clk",
     #":driver.amlogic-pcie",
     #":driver.ams-light",
-    #":driver.as370-gpio",
+    "//zircon/system/dev/gpio/as370-gpio:as370-gpio-manifest",
     #":driver.as370-pdm-input",
     #":driver.as370-power",
     #":driver.as370-sdhci",
@@ -1454,12 +1438,12 @@
     #":driver.gauss-tdm",
     #":driver.goldfish-display",
     #":driver.goodix",
-    #":driver.gpio",
+    "//zircon/system/dev/gpio/gpio:gpio-manifest",
     #":driver.gpio-light",
-    #":driver.gpio-test",
+    "//zircon/system/dev/gpio/gpio-test:gpio-test-manifest",
     #":driver.gpt",
     #":driver.hdmi-audio-codec",
-    #":driver.hi3660-gpio",
+    "//zircon/system/dev/gpio/hi3660-gpio:hi3660-gpio-manifest",
     #":driver.hid",
     #":driver.hid-buttons",
     #":driver.hidctl",
@@ -1483,7 +1467,7 @@
     #":driver.msm8x53-clk",
     #":driver.msm8x53-power",
     #":driver.msm8x53-sdhci",
-    #":driver.mt-8167",
+    "//zircon/system/dev/gpio/mt-8167:mt-8167-manifest",
     #":driver.mt-musb-host",
     #":driver.mt-musb-peripheral",
     "//zircon/system/dev/i2c/mt8167-i2c:mt8167-i2c-manifest",
@@ -1510,7 +1494,7 @@
     #":driver.platform-bus.proxy",
     #":driver.power",
     #":driver.pwm",
-    #":driver.qcom-gpio",
+    "//zircon/system/dev/gpio/qcom-gpio:qcom-gpio-manifest",
     #":driver.qcom-pil",
     #":driver.qemu-arm64",
     #":driver.qemu-audio-codec",
@@ -2004,7 +1988,7 @@
     #":test.sys.affine-test",
     #":test.sys.ahci-unittest",
     #":test.sys.alc5663-test",
-    #":test.sys.aml-axg-gpio-test",
+    "//zircon/system/dev/gpio/aml-axg-gpio:aml-axg-gpio-test-manifest",
     #":test.sys.aml-canvas-test",
     #":test.sys.aml-light-test",
     #":test.sys.aml-pwm-init-test",
@@ -2015,7 +1999,7 @@
     #":test.sys.aml-thermal-s912-test",
     #":test.sys.aml-uart-test",
     #":test.sys.amlogic-clk-test",
-    #":test.sys.as370-gpio-test",
+    "//zircon/system/dev/gpio/as370-gpio:as370-gpio-test-manifest",
     #":test.sys.as370-power-test",
     #":test.sys.as370-thermal-test",
     #":test.sys.astro-display-test-test",
@@ -2172,7 +2156,7 @@
     "//zircon/system/dev/i2c/mt8167-i2c:mt8167-i2c-test-manifest",
     #":test.sys.mt8167-thermal-test",
     #":test.sys.mt8167s_ref-test",
-    #":test.sys.mtk-gpio-test",
+    "//zircon/system/dev/gpio/mt-8167:mtk-gpio-manifest",
     #":test.sys.mtk-power-test",
     #":test.sys.mtk-sdmmc-test",
     #":test.sys.mtk-thermal-test",
@@ -2210,7 +2194,7 @@
     "//zircon/system/utest/pty:pty-manifest",
     #":test.sys.ptysvc-test-test",
     #":test.sys.pwm-test",
-    #":test.sys.qcom-gpio-test",
+    "//zircon/system/dev/gpio/qcom-gpio:qcom-gpio-test-manifest",
     "//zircon/system/utest/qsort:qsort-manifest",
     "//zircon/system/utest/race-tests:race-tests-manifest",
     #":test.sys.ram-nand-test",
@@ -2454,7 +2438,7 @@
     #":test.sys.affine-test",
     #":test.sys.ahci-unittest",
     #":test.sys.alc5663-test",
-    #":test.sys.aml-axg-gpio-test",
+    "//zircon/system/dev/gpio/aml-axg-gpio:aml-axg-gpio-test-manifest",
     #":test.sys.aml-canvas-test",
     #":test.sys.aml-light-test",
     #":test.sys.aml-pwm-init-test",
@@ -2465,7 +2449,7 @@
     #":test.sys.aml-thermal-s912-test",
     #":test.sys.aml-uart-test",
     #":test.sys.amlogic-clk-test",
-    #":test.sys.as370-gpio-test",
+    "//zircon/system/dev/gpio/as370-gpio:as370-gpio-test-manifest",
     #":test.sys.as370-power-test",
     #":test.sys.as370-thermal-test",
     #":test.sys.astro-display-test-test",
@@ -2622,7 +2606,7 @@
     "//zircon/system/dev/i2c/mt8167-i2c:mt8167-i2c-test-manifest",
     #":test.sys.mt8167-thermal-test",
     #":test.sys.mt8167s_ref-test",
-    #":test.sys.mtk-gpio-test",
+    "//zircon/system/dev/gpio/mt-8167:mtk-gpio-manifest",
     #":test.sys.mtk-power-test",
     #":test.sys.mtk-sdmmc-test",
     #":test.sys.mtk-thermal-test",
@@ -2660,7 +2644,7 @@
     "//zircon/system/utest/pty:pty-manifest",
     #":test.sys.ptysvc-test-test",
     #":test.sys.pwm-test",
-    #":test.sys.qcom-gpio-test",
+    "//zircon/system/dev/gpio/qcom-gpio:qcom-gpio-test-manifest",
     "//zircon/system/utest/qsort:qsort-manifest",
     "//zircon/system/utest/race-tests:race-tests-manifest",
     #":test.sys.ram-nand-test",
diff --git a/zircon/system/dev/BUILD.gn b/zircon/system/dev/BUILD.gn
index eca0b67..5364e39b 100644
--- a/zircon/system/dev/BUILD.gn
+++ b/zircon/system/dev/BUILD.gn
@@ -19,7 +19,6 @@
     "display",
     "ethernet",
     "fw",
-    "gpio",
     "gpu",
     "input",
     "light",
diff --git a/zircon/system/dev/gpio/BUILD.gn b/zircon/system/dev/gpio/BUILD.gn
deleted file mode 100644
index 4e4915b..0000000
--- a/zircon/system/dev/gpio/BUILD.gn
+++ /dev/null
@@ -1,16 +0,0 @@
-# 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.
-
-group("gpio") {
-  deps = [
-    "aml-axg-gpio",
-    "aml-gxl-gpio",
-    "as370-gpio",
-    "gpio",
-    "gpio-test",
-    "hi3660-gpio",
-    "mt-8167",
-    "qcom-gpio",
-  ]
-}
diff --git a/zircon/system/dev/gpio/aml-axg-gpio/BUILD.gn b/zircon/system/dev/gpio/aml-axg-gpio/BUILD.gn
index 5c45363..3002d84 100644
--- a/zircon/system/dev/gpio/aml-axg-gpio/BUILD.gn
+++ b/zircon/system/dev/gpio/aml-axg-gpio/BUILD.gn
@@ -2,50 +2,81 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_driver("aml-axg-gpio") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/config/fuchsia/rules.gni")
+import("//build/test.gni")
+import("//build/unification/images/migrated_manifest.gni")
+
+driver_module("aml-axg-gpio") {
+  defines = [ "_ALL_SOURCE" ]
+  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
+  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
+  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
+  configs += [ "//build/unification/config:zircon-migrated" ]
   sources = [ "aml-axg-gpio.cc" ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/dev/lib/amlogic",
-    "$zx/system/dev/lib/device-protocol-pdev",
-    "$zx/system/dev/lib/device-protocol-platform-device",
-    "$zx/system/dev/lib/mmio",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/sync",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zircon-internal",
-    "$zx/system/ulib/zx",
+    "//src/devices:driver",
+    "//zircon/public/lib/amlogic",
+    "//zircon/public/lib/device-protocol-pdev",
+    "//zircon/public/lib/device-protocol-platform-device",
+    "//zircon/public/lib/mmio",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/sync",
+    "//zircon/public/lib/zircon-internal",
+    "//zircon/public/lib/zx",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
   ]
 }
 
-zx_test("aml-axg-gpio-test") {
+test("aml-axg-gpio-test") {
+  # Dependent manifests unfortunately cannot be marked as `testonly`.
+  # Remove when converting this file to proper GN build idioms.
+  testonly = false
+  configs += [ "//build/unification/config:zircon-migrated" ]
   output_name = "aml-axg-gpio-test"
   sources = [
     "aml-axg-gpio-test.cc",
     "aml-axg-gpio.cc",
   ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/dev/lib/amlogic",
-    "$zx/system/dev/lib/device-protocol-pdev",
-    "$zx/system/dev/lib/device-protocol-platform-device",
-    "$zx/system/dev/lib/fake_ddk",
-    "$zx/system/dev/lib/mock-mmio-reg",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/sync",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zircon-internal",
-    "$zx/system/ulib/zx",
-    "$zx/system/ulib/zxtest",
+    "//src/devices:driver",
+    "//zircon/public/lib/amlogic",
+    "//zircon/public/lib/device-protocol-pdev",
+    "//zircon/public/lib/device-protocol-platform-device",
+    "//zircon/public/lib/fake_ddk",
+    "//zircon/public/lib/mock-mmio-reg",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/sync",
+    "//zircon/public/lib/zircon-internal",
+    "//zircon/public/lib/zx",
+    "//zircon/public/lib/zxtest",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
   ]
 }
+
+migrated_manifest("aml-axg-gpio-manifest") {
+  deps = [ ":aml-axg-gpio" ]
+}
+
+migrated_manifest("aml-axg-gpio-test-manifest") {
+  deps = [ ":aml-axg-gpio-test" ]
+}
diff --git a/zircon/system/dev/gpio/aml-gxl-gpio/BUILD.gn b/zircon/system/dev/gpio/aml-gxl-gpio/BUILD.gn
index b5c1213..d0fb3a6 100644
--- a/zircon/system/dev/gpio/aml-gxl-gpio/BUILD.gn
+++ b/zircon/system/dev/gpio/aml-gxl-gpio/BUILD.gn
@@ -2,20 +2,42 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_driver("aml-gxl-gpio") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/config/fuchsia/rules.gni")
+import("//build/unification/images/migrated_manifest.gni")
+
+driver_module("aml-gxl-gpio") {
+  defines = [ "_ALL_SOURCE" ]
+  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
+  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
+  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
+  configs += [ "//build/unification/config:zircon-migrated" ]
   sources = [ "aml-gxl-gpio.cc" ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/dev/lib/amlogic",
-    "$zx/system/dev/lib/device-protocol-platform-device",
-    "$zx/system/dev/lib/mmio",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zx",
+    "//src/devices:driver",
+    "//zircon/public/lib/amlogic",
+    "//zircon/public/lib/device-protocol-platform-device",
+    "//zircon/public/lib/mmio",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/zx",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
   ]
 }
+
+migrated_manifest("aml-gxl-gpio-manifest") {
+  deps = [ ":aml-gxl-gpio" ]
+}
diff --git a/zircon/system/dev/gpio/as370-gpio/BUILD.gn b/zircon/system/dev/gpio/as370-gpio/BUILD.gn
index fd9c09a..b3c3d46 100644
--- a/zircon/system/dev/gpio/as370-gpio/BUILD.gn
+++ b/zircon/system/dev/gpio/as370-gpio/BUILD.gn
@@ -2,42 +2,72 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_driver("as370-gpio") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/config/fuchsia/rules.gni")
+import("//build/test.gni")
+import("//build/unification/images/migrated_manifest.gni")
+
+driver_module("as370-gpio") {
+  defines = [ "_ALL_SOURCE" ]
+  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
+  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
+  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
+  configs += [ "//build/unification/config:zircon-migrated" ]
   sources = [ "as370-gpio.cc" ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/dev/lib/device-protocol-pdev",
-    "$zx/system/dev/lib/mmio",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/hwreg",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zx",
+    "//src/devices:driver",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/device-protocol-pdev",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/hwreg",
+    "//zircon/public/lib/mmio",
+    "//zircon/public/lib/zx",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
   ]
 }
 
-zx_test("as370-gpio-test") {
+test("as370-gpio-test") {
+  # Dependent manifests unfortunately cannot be marked as `testonly`.
+  # Remove when converting this file to proper GN build idioms.
+  testonly = false
+  configs += [ "//build/unification/config:zircon-migrated" ]
   output_name = "as370-gpio-test"
   sources = [
     "as370-gpio-test.cc",
     "as370-gpio.cc",
   ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/dev/lib/device-protocol-pdev",
-    "$zx/system/dev/lib/mock-mmio-reg",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/driver",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/fdio",
-    "$zx/system/ulib/hwreg",
-    "$zx/system/ulib/mock-function",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zx",
-    "$zx/system/ulib/zxtest",
+    "//src/devices:driver",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/device-protocol-pdev",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/fdio",
+    "//zircon/public/lib/hwreg",
+    "//zircon/public/lib/mock-function",
+    "//zircon/public/lib/mock-mmio-reg",
+    "//zircon/public/lib/zx",
+    "//zircon/public/lib/zxtest",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
   ]
 }
+
+migrated_manifest("as370-gpio-manifest") {
+  deps = [ ":as370-gpio" ]
+}
+
+migrated_manifest("as370-gpio-test-manifest") {
+  deps = [ ":as370-gpio-test" ]
+}
diff --git a/zircon/system/dev/gpio/gpio-test/BUILD.gn b/zircon/system/dev/gpio/gpio-test/BUILD.gn
index 9e2752df..74edeba 100644
--- a/zircon/system/dev/gpio/gpio-test/BUILD.gn
+++ b/zircon/system/dev/gpio/gpio-test/BUILD.gn
@@ -2,18 +2,41 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_driver("gpio-test") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/config/fuchsia/rules.gni")
+import("//build/unification/images/migrated_manifest.gni")
+
+driver_module("gpio-test") {
+  defines = [ "_ALL_SOURCE" ]
+  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
+  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
+  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
+  configs += [ "//build/unification/config:zircon-migrated" ]
+
   # TODO: testonly = true
   sources = [ "gpio-test.cc" ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.composite",
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/sync",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zx",
+    "//src/devices:driver",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/sync",
+    "//zircon/public/lib/zx",
+    "//zircon/system/banjo/ddk.protocol.composite",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
   ]
 }
+
+migrated_manifest("gpio-test-manifest") {
+  deps = [ ":gpio-test" ]
+}
diff --git a/zircon/system/dev/gpio/gpio/BUILD.gn b/zircon/system/dev/gpio/gpio/BUILD.gn
index d4ebd9c7..8a0684d 100644
--- a/zircon/system/dev/gpio/gpio/BUILD.gn
+++ b/zircon/system/dev/gpio/gpio/BUILD.gn
@@ -2,15 +2,37 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_driver("gpio") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/config/fuchsia/rules.gni")
+import("//build/unification/images/migrated_manifest.gni")
+
+driver_module("gpio") {
+  defines = [ "_ALL_SOURCE" ]
+  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
+  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
+  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
+  configs += [ "//build/unification/config:zircon-migrated" ]
   sources = [ "gpio.cc" ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zx",
+    "//src/devices:driver",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/zx",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
   ]
 }
+
+migrated_manifest("gpio-manifest") {
+  deps = [ ":gpio" ]
+}
diff --git a/zircon/system/dev/gpio/hi3660-gpio/BUILD.gn b/zircon/system/dev/gpio/hi3660-gpio/BUILD.gn
index 2f31894..d7d0ce5 100644
--- a/zircon/system/dev/gpio/hi3660-gpio/BUILD.gn
+++ b/zircon/system/dev/gpio/hi3660-gpio/BUILD.gn
@@ -2,18 +2,43 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_driver("hi3660-gpio") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/config/fuchsia/rules.gni")
+import("//build/unification/images/migrated_manifest.gni")
+
+driver_module("hi3660-gpio") {
+  defines = [ "_ALL_SOURCE" ]
+  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
+  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
+  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
+  configs += [ "//build/unification/config:zircon-migrated" ]
   sources = [ "hi3660-gpio.c" ]
+
+  include_dirs = [ "//zircon/system/dev/gpio/pl061/include" ]
+
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/dev/gpio/pl061",
-    "$zx/system/dev/lib/device-protocol-platform-device",
-    "$zx/system/dev/lib/hi3660",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/sync",
-    "$zx/system/ulib/zircon",
+    "//src/devices:driver",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/device-protocol-platform-device",
+    "//zircon/public/lib/hi3660",
+    "//zircon/public/lib/sync",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
+    "//zircon/system/dev/gpio/pl061",
   ]
 }
+
+migrated_manifest("hi3660-gpio-manifest") {
+  deps = [ ":hi3660-gpio" ]
+}
diff --git a/zircon/system/dev/gpio/mt-8167/BUILD.gn b/zircon/system/dev/gpio/mt-8167/BUILD.gn
index 518e3a8..9b8b7a8 100644
--- a/zircon/system/dev/gpio/mt-8167/BUILD.gn
+++ b/zircon/system/dev/gpio/mt-8167/BUILD.gn
@@ -2,51 +2,81 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_driver("mt-8167") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/config/fuchsia/rules.gni")
+import("//build/test.gni")
+import("//build/unification/images/migrated_manifest.gni")
+
+driver_module("mt-8167") {
+  defines = [ "_ALL_SOURCE" ]
+  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
+  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
+  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
+  configs += [ "//build/unification/config:zircon-migrated" ]
   sources = [
     "binding.cc",
     "mt8167-gpio.cc",
   ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/dev/lib/device-protocol-platform-device",
-    "$zx/system/dev/lib/mmio",
-    "$zx/system/dev/lib/mt8167",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/hwreg",
-    "$zx/system/ulib/sync",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zx",
+    "//src/devices:driver",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/device-protocol-platform-device",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/hwreg",
+    "//zircon/public/lib/mmio",
+    "//zircon/public/lib/mt8167",
+    "//zircon/public/lib/sync",
+    "//zircon/public/lib/zx",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
   ]
 }
 
-zx_test("mtk-gpio") {
+test("mtk-gpio") {
+  # Dependent manifests unfortunately cannot be marked as `testonly`.
+  # Remove when converting this file to proper GN build idioms.
+  testonly = false
+  configs += [ "//build/unification/config:zircon-migrated" ]
   sources = [
     "mt8167-gpio-test.cc",
     "mt8167-gpio.cc",
   ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/dev/lib/device-protocol-platform-device",
-    "$zx/system/dev/lib/fake_ddk",
-    "$zx/system/dev/lib/mock-mmio-reg",
-    "$zx/system/dev/lib/mt8167",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/driver",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/hwreg",
-    "$zx/system/ulib/sync",
-    "$zx/system/ulib/zircon",
-    "$zx/system/ulib/zx",
-    "$zx/system/ulib/zxtest",
+    "//src/devices:driver",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/device-protocol-platform-device",
+    "//zircon/public/lib/fake_ddk",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/hwreg",
+    "//zircon/public/lib/mock-mmio-reg",
+    "//zircon/public/lib/mt8167",
+    "//zircon/public/lib/sync",
+    "//zircon/public/lib/zx",
+    "//zircon/public/lib/zxtest",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
   ]
 }
+
+migrated_manifest("mt-8167-manifest") {
+  deps = [ ":mt-8167" ]
+}
+
+migrated_manifest("mtk-gpio-manifest") {
+  deps = [ ":mtk-gpio" ]
+}
diff --git a/zircon/system/dev/gpio/pl061/BUILD.gn b/zircon/system/dev/gpio/pl061/BUILD.gn
index 0393b49..e1955ba 100644
--- a/zircon/system/dev/gpio/pl061/BUILD.gn
+++ b/zircon/system/dev/gpio/pl061/BUILD.gn
@@ -2,14 +2,26 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_library("pl061") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/unification/images/migrated_manifest.gni")
+
+source_set("pl061") {
   sources = [ "pl061.c" ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpio",
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/driver",
-    "$zx/system/ulib/zircon",
+    "//zircon/public/lib/ddk",
+    "//zircon/system/banjo/ddk.protocol.gpio",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
   ]
+
+  include_dirs = [ "//zircon/system/dev/gpio/pl061/include" ]
 }
diff --git a/zircon/system/dev/gpio/qcom-gpio/BUILD.gn b/zircon/system/dev/gpio/qcom-gpio/BUILD.gn
index 111db69..7691542 100644
--- a/zircon/system/dev/gpio/qcom-gpio/BUILD.gn
+++ b/zircon/system/dev/gpio/qcom-gpio/BUILD.gn
@@ -2,47 +2,79 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-zx_driver("qcom-gpio") {
+##########################################
+# Though under //zircon, this build file #
+# is meant to be used in the Fuchsia GN  #
+# build.                                 #
+# See fxb/36139.                         #
+##########################################
+
+assert(!defined(zx) || zx != "/",
+       "This file can only be used in the Fuchsia GN build.")
+
+import("//build/config/fuchsia/rules.gni")
+import("//build/test.gni")
+import("//build/unification/images/migrated_manifest.gni")
+
+driver_module("qcom-gpio") {
+  defines = [ "_ALL_SOURCE" ]
+  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
+  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
+  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
+  configs += [ "//build/unification/config:zircon-migrated" ]
   sources = [
     "binding.cc",
     "qcom-gpio.cc",
   ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/dev/lib/device-protocol-pdev",
-    "$zx/system/dev/lib/device-protocol-platform-device",
-    "$zx/system/dev/lib/mmio",
-    "$zx/system/ulib/bitmap",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/hwreg",
-    "$zx/system/ulib/sync",
+    "//src/devices:driver",
+    "//zircon/public/lib/bitmap",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/device-protocol-pdev",
+    "//zircon/public/lib/device-protocol-platform-device",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/hwreg",
+    "//zircon/public/lib/mmio",
+    "//zircon/public/lib/sync",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
   ]
 }
 
-zx_test("qcom-gpio-test") {
+test("qcom-gpio-test") {
+  # Dependent manifests unfortunately cannot be marked as `testonly`.
+  # Remove when converting this file to proper GN build idioms.
+  testonly = false
+  configs += [ "//build/unification/config:zircon-migrated" ]
   output_name = "qcom-gpio-test"
   sources = [
     "qcom-gpio-test.cc",
     "qcom-gpio.cc",
   ]
   deps = [
-    "$zx/system/banjo/ddk.protocol.gpioimpl",
-    "$zx/system/banjo/ddk.protocol.platform.bus",
-    "$zx/system/banjo/ddk.protocol.platform.device",
-    "$zx/system/dev/lib/device-protocol-pdev",
-    "$zx/system/dev/lib/device-protocol-platform-device",
-    "$zx/system/dev/lib/fake_ddk",
-    "$zx/system/dev/lib/mock-mmio-reg",
-    "$zx/system/ulib/bitmap",
-    "$zx/system/ulib/ddk",
-    "$zx/system/ulib/ddktl",
-    "$zx/system/ulib/fbl",
-    "$zx/system/ulib/hwreg",
-    "$zx/system/ulib/sync",
-    "$zx/system/ulib/zxtest",
+    "//zircon/public/lib/bitmap",
+    "//zircon/public/lib/ddk",
+    "//zircon/public/lib/ddktl",
+    "//zircon/public/lib/device-protocol-pdev",
+    "//zircon/public/lib/device-protocol-platform-device",
+    "//zircon/public/lib/fake_ddk",
+    "//zircon/public/lib/fbl",
+    "//zircon/public/lib/hwreg",
+    "//zircon/public/lib/mock-mmio-reg",
+    "//zircon/public/lib/sync",
+    "//zircon/public/lib/zxtest",
+    "//zircon/system/banjo/ddk.protocol.gpioimpl",
+    "//zircon/system/banjo/ddk.protocol.platform.bus",
+    "//zircon/system/banjo/ddk.protocol.platform.device",
   ]
 }
+
+migrated_manifest("qcom-gpio-manifest") {
+  deps = [ ":qcom-gpio" ]
+}
+
+migrated_manifest("qcom-gpio-test-manifest") {
+  deps = [ ":qcom-gpio-test" ]
+}
diff --git a/zircon/system/utest/BUILD.gn b/zircon/system/utest/BUILD.gn
index d014fd1..b4b53e7 100644
--- a/zircon/system/utest/BUILD.gn
+++ b/zircon/system/utest/BUILD.gn
@@ -62,10 +62,6 @@
       "$zx/system/dev/ethernet/ethernet:ethernet-unittest",
       "$zx/system/dev/ethernet/ethertap:ethertap-unittest",
       "$zx/system/dev/ethernet/usb-cdc-ecm:usb-cdc-ecm-unittest",
-      "$zx/system/dev/gpio/aml-axg-gpio:aml-axg-gpio-test",
-      "$zx/system/dev/gpio/as370-gpio:as370-gpio-test",
-      "$zx/system/dev/gpio/mt-8167:mtk-gpio",
-      "$zx/system/dev/gpio/qcom-gpio:qcom-gpio-test",
       "$zx/system/dev/input/cypress:cypress-touch-test",
       "$zx/system/dev/input/goodix:gt92xx-test",
       "$zx/system/dev/input/hid:hid-test",