# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

assert(is_chromeos)

declare_args() {
  cros_board = getenv("SDK_BOARD")
  cros_sdk_version = getenv("SDK_VERSION")
}

template("generate_vm_runner_script") {
  _cache_path_prefix =
      "//build/cros_cache/chrome-sdk/tarballs/${cros_board}+${cros_sdk_version}"
  _vm_image_path = "${_cache_path_prefix}+chromiumos_qemu_image.tar.xz/"
  _qemu_dir = "${_cache_path_prefix}+app-emulation/"

  action(target_name) {
    forward_variables_from(invoker,
                           [
                             "testonly",
                             "need_toolchain",
                           ])

    script = "//build/chromeos/create_vm_test_script.py"

    outputs = [
      invoker.generated_script,
    ]

    data = [
      # We use android test-runner's results libs to construct gtest output
      # json.
      "//build/android/pylib/__init__.py",
      "//build/android/pylib/base/",
      "//build/android/pylib/results/",
      invoker.generated_script,
      "//build/chromeos/",
      "//build/cros_cache/chrome-sdk/misc/",

      # The LKGM file controls what version of the VM image to download. Add it
      # as data here so that changes to it will trigger analyze.
      "//chromeos/CHROMEOS_LKGM",
      "//third_party/chromite/",
      _vm_image_path,
      _qemu_dir,
    ]
    if (defined(need_toolchain) && need_toolchain) {
      data += [ "${_cache_path_prefix}+target_toolchain/" ]
    }

    # Required arguments used at build time by the runner script generator.
    args = [
      "--script-output-path",
      rebase_path(invoker.generated_script, root_build_dir),
      "--cros-cache",
      rebase_path("//build/cros_cache/", root_build_dir),
      "--board",
      cros_board,
    ]

    # When --test-exe is specified, run_vm_test will push the exe to the VM and
    # execute it. Otherwise it wraps a host-side command and just takes care
    # launching & tearing-down the VM.
    if (defined(invoker.test_exe)) {
      args += [
        "--test-exe",
        rebase_path(invoker.test_exe, root_build_dir),
        "--output-directory",
        rebase_path(root_out_dir, root_build_dir),
      ]
      if (defined(invoker.runtime_deps_file)) {
        args += [
          "--runtime-deps-path",
          rebase_path(invoker.runtime_deps_file, root_build_dir),
        ]
      }
    }
  }
}
