| # 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/go/go_library.gni") |
| import("//build/go/go_test.gni") |
| import("//build/testing/host_test_data.gni") |
| |
| group("tests") { |
| testonly = true |
| deps = [] |
| if (host_os == "linux") { |
| deps = [ ":emulator_tests($host_toolchain)" ] |
| } |
| } |
| |
| # Currently, we only support working with QEMU or FEMU on Linux. |
| if (is_linux) { |
| # The infrastructure does not provide a way for host tests to access |
| # qemu, so we need to archive our own copy of qemu from the source |
| # tree. |
| action("archive-qemu") { |
| testonly = true |
| visibility = [ ":*" ] |
| |
| archive_path = "$root_out_dir/test_data/emulator/qemu.tar.gz" |
| outputs = [ archive_path ] |
| |
| depfile = "${archive_path}.d" |
| |
| script = "archive.py" |
| |
| args = [ |
| "--src", |
| rebase_path("//prebuilt/third_party/qemu/${host_platform}", |
| root_build_dir), |
| "--dst", |
| rebase_path(archive_path, root_build_dir), |
| "--depfile", |
| rebase_path(depfile, root_build_dir), |
| ] |
| } |
| |
| action("archive-femu") { |
| testonly = true |
| visibility = [ ":*" ] |
| |
| archive_path = "$root_out_dir/test_data/emulator/femu.tar.gz" |
| outputs = [ archive_path ] |
| |
| depfile = "${archive_path}.d" |
| |
| script = "archive.py" |
| |
| args = [ |
| "--src", |
| rebase_path( |
| "//prebuilt/third_party/android/aemu/release/${host_platform}", |
| root_build_dir), |
| "--dst", |
| rebase_path(archive_path, root_build_dir), |
| "--depfile", |
| rebase_path(depfile, root_build_dir), |
| ] |
| } |
| |
| host_test_data("kernel") { |
| visibility = [ ":*" ] |
| |
| if (target_cpu == "arm64") { |
| kernel_binary = "qemu-boot-shim.bin" |
| deps = [ "//zircon/kernel/target/arm64/boot-shim:qemu" ] |
| } else if (target_cpu == "x64") { |
| kernel_binary = "multiboot.bin" |
| deps = [ "//zircon/kernel/arch/x86/phys/boot-shim:multiboot-shim" ] |
| } else { |
| assert(false, "CPU not supported") |
| } |
| |
| sources = [ "$root_build_dir/$kernel_binary" ] |
| } |
| |
| generated_file("buildinfo.ini") { |
| testonly = true |
| contents = [ |
| # The path to images.json relative to the test data directory. This must be relative |
| # the test data directory specifically, rather than the build directory because the |
| # build directory is not guaranteed to exist at runtime, especially on CI. |
| "image_manifest_path=" + rebase_path("$root_build_dir/images.json", |
| "$root_out_dir/test_data/emulator"), |
| "target_cpu=$target_cpu", |
| ] |
| outputs = [ "$root_out_dir/test_data/emulator/buildinfo.ini" ] |
| } |
| |
| host_test_data("test_data") { |
| sources = get_target_outputs(":buildinfo.ini") + |
| get_target_outputs(":archive-qemu") + |
| get_target_outputs(":archive-femu") + |
| [ |
| # Any files referenced by :buildinfo.ini should be listed here. |
| "$root_build_dir/images.json", |
| ] |
| |
| deps = [ |
| ":archive-femu", |
| ":archive-qemu", |
| ":buildinfo.ini", |
| ":kernel", |
| ] |
| } |
| |
| go_library("emulator") { |
| testonly = true |
| non_go_deps = [ |
| ":archive-femu", |
| ":archive-qemu", |
| ":test_data", |
| ] |
| sources = [ |
| "emulator.go", |
| "emulator_test.go", |
| ] |
| deps = [ |
| "//tools/qemu", |
| "//tools/virtual_device", |
| "//tools/virtual_device:proto", |
| ] |
| } |
| |
| go_test("emulator_tests") { |
| gopackages = [ "go.fuchsia.dev/fuchsia/tools/emulator" ] |
| deps = [ ":emulator" ] |
| } |
| } |