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

declare_args() {
  # This is used only by Simple Chrome to bind its value to test-runner scripts
  # generated at build-time.
  cros_board = ""

  # Similar to cros_board above, this used only by test-runner scripts in
  # Simple Chrome.
  cros_sdk_version = ""
}

# Ensure that if one is set, the other is as well.
assert(cros_board == "" == (cros_sdk_version == ""))

declare_args() {
  # Determines if we're building for a Chrome OS device (or VM) and not just
  # linux-chromeos. NOTE: Most test targets in Chrome expect to run under
  # linux-chromeos, so some have compile-time asserts that intentionally fail
  # when this build flag is set. Build and run the tests for linux-chromeos
  # instead.
  # https://chromium.googlesource.com/chromium/src/+/main/docs/chromeos_build_instructions.md
  # https://chromium.googlesource.com/chromiumos/docs/+/main/simple_chrome_workflow.md
  is_chromeos_device = false

  # Determines if we run the test in skylab, aka the CrOS labs.
  is_skylab = false

  # Determines if we collect hardware information in chrome://system and
  # feedback logs. A similar build flag "hw_details" is defined in Chrome OS
  # (see https://crrev.com/c/3123455).
  is_chromeos_with_hw_details = false

  # Determines if we're willing to link against libinput
  use_libinput = false

  # Refers to the separate branding required for the reven build.
  is_reven = false

  # Build Mojo Proxy binary, to be used as a IPCZ <=> Mojo Core translation layer.
  build_mojo_proxy = true
}
