Specify initrd image contents as a list of files

The init RAM disk is just a container for various files, and
should be agnostic about their contents (e.g., primary manifest,
kernel, etc...).

Change the build so that a list of files is specified instead of
having the image creator handle different types differently.

This facilitates adding other types of files later, e.g., an FDT
for secondary VMs.

Change-Id: I5ca79dcc5c8810fce0c248201c24f00dd439e392
diff --git a/test/linux/BUILD.gn b/test/linux/BUILD.gn
index 282d6c0..8ef7381 100644
--- a/test/linux/BUILD.gn
+++ b/test/linux/BUILD.gn
@@ -37,28 +37,49 @@
 
   # Always use the aarch64_linux_clang toolchain to build test_binary
   test_binary_target = ":test_binary(//build/toolchain:aarch64_linux_clang)"
-  sources = [
-    get_label_info(test_binary_target, "root_out_dir") + "/test_binary",
-    get_label_info("//driver/linux", "target_out_dir") + "/hafnium.ko",
+
+  files = [
+    [
+      get_label_info(test_binary_target, "root_out_dir") + "/test_binary",
+      test_binary_target,
+    ],
+    [
+      get_label_info("//driver/linux", "target_out_dir") + "/hafnium.ko",
+      "//driver/linux",
+    ],
   ]
-  deps = [
-    "//driver/linux",
-    test_binary_target,
-  ]
+}
+
+manifest("linux_test_manifest") {
+  source = "manifest.dts"
+  overlay = hftest_manifest_overlay
 }
 
 initrd("linux_test") {
   testonly = true
 
-  manifest = "manifest.dts"
-  manifest_overlay = hftest_manifest_overlay
-  primary_name = "vmlinuz"
-  primary_vm = "//third_party/linux:linux__prebuilt"
-  primary_initrd = ":linux_test_initrd"
-  secondary_vms = [ [
-        "socket0",
-        ":socket_vm1",
-      ] ]
+  files = [
+    [
+      "manifest.dtb",
+      ":linux_test_manifest",
+      "manifest.dtb",
+    ],
+    [
+      "vmlinuz",
+      "//third_party/linux:linux__prebuilt",
+      "linux__prebuilt.bin",
+    ],
+    [
+      "initrd.img",
+      ":linux_test_initrd",
+      "linux_test_initrd/initrd.img",
+    ],
+    [
+      "socket0",
+      ":socket_vm1",
+      "socket_vm1.bin",
+    ],
+  ]
 }
 
 group("linux") {
diff --git a/test/vmapi/arch/aarch64/BUILD.gn b/test/vmapi/arch/aarch64/BUILD.gn
index 2b41162..3ddbb2b 100644
--- a/test/vmapi/arch/aarch64/BUILD.gn
+++ b/test/vmapi/arch/aarch64/BUILD.gn
@@ -32,11 +32,24 @@
   ]
 }
 
+manifest("aarch64_test_manifest") {
+  source = "manifest.dts"
+  overlay = hftest_manifest_overlay
+}
+
 initrd("aarch64_test") {
   testonly = true
 
-  manifest = "manifest.dts"
-  manifest_overlay = hftest_manifest_overlay
-  primary_name = "aarch64_test"
-  primary_vm = ":aarch64_test_vm"
+  files = [
+    [
+      "manifest.dtb",
+      ":aarch64_test_manifest",
+      "manifest.dtb",
+    ],
+    [
+      "aarch64_test",
+      ":aarch64_test_vm",
+      "aarch64_test_vm.bin",
+    ],
+  ]
 }
diff --git a/test/vmapi/arch/aarch64/gicv3/BUILD.gn b/test/vmapi/arch/aarch64/gicv3/BUILD.gn
index bc8b72a..965a70f 100644
--- a/test/vmapi/arch/aarch64/gicv3/BUILD.gn
+++ b/test/vmapi/arch/aarch64/gicv3/BUILD.gn
@@ -32,15 +32,29 @@
   ]
 }
 
+manifest("gicv3_test_manifest") {
+  source = "manifest.dts"
+  overlay = hftest_manifest_overlay
+}
+
 initrd("gicv3_test") {
   testonly = true
 
-  manifest = "manifest.dts"
-  manifest_overlay = hftest_manifest_overlay
-  primary_name = "gicv3_test"
-  primary_vm = ":gicv3_test_vm"
-  secondary_vms = [ [
-        "services1",
-        "services:gicv3_service_vm1",
-      ] ]
+  files = [
+    [
+      "manifest.dtb",
+      ":gicv3_test_manifest",
+      "manifest.dtb",
+    ],
+    [
+      "gicv3_test",
+      ":gicv3_test_vm",
+      "gicv3_test_vm.bin",
+    ],
+    [
+      "services1",
+      "services:gicv3_service_vm1",
+      "gicv3_service_vm1.bin",
+    ],
+  ]
 }
diff --git a/test/vmapi/primary_only/BUILD.gn b/test/vmapi/primary_only/BUILD.gn
index a8e366c..bd50f7e 100644
--- a/test/vmapi/primary_only/BUILD.gn
+++ b/test/vmapi/primary_only/BUILD.gn
@@ -21,10 +21,23 @@
   ]
 }
 
+manifest("primary_only_test_manifest") {
+  source = "manifest.dts"
+  overlay = hftest_manifest_overlay
+}
+
 initrd("primary_only_test") {
   testonly = true
-  manifest = "manifest.dts"
-  manifest_overlay = hftest_manifest_overlay
-  primary_name = "primary_only_test"
-  primary_vm = ":primary_only_test_vm"
+  files = [
+    [
+      "manifest.dtb",
+      ":primary_only_test_manifest",
+      "manifest.dtb",
+    ],
+    [
+      "primary_only_test",
+      ":primary_only_test_vm",
+      "primary_only_test_vm.bin",
+    ],
+  ]
 }
diff --git a/test/vmapi/primary_with_secondaries/BUILD.gn b/test/vmapi/primary_with_secondaries/BUILD.gn
index e36169f..18c5cf1 100644
--- a/test/vmapi/primary_with_secondaries/BUILD.gn
+++ b/test/vmapi/primary_with_secondaries/BUILD.gn
@@ -43,26 +43,39 @@
   ]
 }
 
+manifest("primary_with_secondaries_test_manifest") {
+  source = "manifest.dts"
+  overlay = hftest_manifest_overlay
+}
+
 initrd("primary_with_secondaries_test") {
   testonly = true
 
-  manifest = "manifest.dts"
-  manifest_overlay = hftest_manifest_overlay
-
-  primary_name = "primary_with_secondaries_test"
-  primary_vm = ":primary_with_secondaries_test_vm"
-  secondary_vms = [
+  files = [
+    [
+      "manifest.dtb",
+      ":primary_with_secondaries_test_manifest",
+      "manifest.dtb",
+    ],
+    [
+      "primary_with_secondaries_test",
+      ":primary_with_secondaries_test_vm",
+      "primary_with_secondaries_test_vm.bin",
+    ],
     [
       "services1",
       "services:service_vm1",
+      "service_vm1.bin",
     ],
     [
       "services2",
       "services:service_vm2",
+      "service_vm2.bin",
     ],
     [
       "services3",
       "services:service_vm3",
+      "service_vm3.bin",
     ],
   ]
 }