# Copyright 2020 The Fuchsia Authors
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT

if (zx != "/") {
  import("//build/unification/global_variables.gni")
}

# TODO(mcgrathr): declare_args() { qemu_boot_format = "multiboot"/"zeropage" }

if (current_cpu == "x64") {
  # Environment for building raw QEMU kernels.
  # x86-64 QEMU loads 32-bit (i686) binaries (Multiboot or Linux zero page).
  qemu_environment = "$zx/kernel/arch/x86/phys:kernel.phys32"
} else {
  # Environment for building raw QEMU kernels (64-bit physical memory).
  qemu_environment = "$zx/kernel/phys:kernel.phys"
  if (zx != "/") {
    qemu_environment += "_$current_cpu"
  }
}

if (toolchain.environment == "kernel.phys") {
  # What to link into a raw QEMU kernel executable (direct physical memory).
  qemu_deps = [ "$zx/kernel/phys:qemu-header" ]
} else {
  assert(current_cpu == "x64")
  if (zx == "/") {
    assert(toolchain.environment_label == qemu_environment)
  } else {
    assert(toolchain.environment == get_label_info(qemu_environment, "name"),
           "Bad toolchain environment ${toolchain.environment}, expected " +
               get_label_info(qemu_environment, "name"))
  }

  # What to link into a raw QEMU kernel executable (x86-32 Multiboot).
  qemu_deps = [ "$zx/kernel/arch/x86/phys:multiboot" ]
}

# zbi_test() $timeout value for short-running tests launched via QEMU.
qemu_short_timeout = 30
