# Copyright 2020 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.

declare_args() {
  # Builds the component in a non-product JIT build. This will
  # launch the vm service in the runner.
  dart_debug_build_cfg = {
    runtime_meta = "//build/dart/meta/jit_runtime.cmx"
    runtime_meta_v2 = "//build/dart/meta/jit_runtime.cml"
    runner_dep = "//src/dart:dart_jit_runner"
    platform_name = "dart_runner"
    is_aot = false
    is_product = false
    enable_asserts = true
    is_debug = true
  }

  # Builds the component in a non-product AOT build. This will
  # launch the vm service in the runner.
  # This configuration is not compatible with a --release build since the
  # profile aot runner is built without asserts.
  dart_aot_debug_build_cfg = {
    runtime_meta = "//build/dart/meta/aot_runtime.cmx"
    runtime_meta_v2 = "//build/dart/meta/aot_runtime.cml"
    runner_dep = "//src/dart:dart_aot_runner"
    platform_name = "dart_runner"
    is_aot = true
    is_product = false
    enable_asserts = true
    is_debug = true
  }

  # Builds the component in a non-product AOT build. This will
  # launch the vm service in the runner.
  dart_profile_build_cfg = {
    runtime_meta = "//build/dart/meta/aot_runtime.cmx"
    runtime_meta_v2 = "//build/dart/meta/aot_runtime.cml"
    runner_dep = "//src/dart:dart_aot_runner"
    platform_name = "dart_runner"
    is_aot = true
    is_product = false
    enable_asserts = false
    is_debug = false
  }

  # Builds the component in a product AOT build. This will
  # not launch the vm service in the runner.
  dart_release_build_cfg = {
    runtime_meta = "//build/dart/meta/aot_product_runtime.cmx"
    runtime_meta_v2 = "//build/dart/meta/aot_product_runtime.cml"
    runner_dep = "//src/dart:dart_aot_product_runner"
    platform_name = "dart_runner"
    is_aot = true
    is_product = true
    enable_asserts = false
    is_debug = false
  }
}
