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

import("//build/dart/args.gni")
import("//build/dart/dart_build_config.gni")

declare_args() {
  if (dart_force_product) {
    # Product AOT
    dart_default_build_cfg = dart_release_build_cfg
  } else if (is_debug && dart_force_aot) {
    # Non-product debug AOT
    dart_default_build_cfg = dart_aot_debug_build_cfg
  } else if (is_debug && !dart_force_aot) {
    # Non-product JIT
    dart_default_build_cfg = dart_debug_build_cfg
  } else {
    # Non-product AOT
    dart_default_build_cfg = dart_profile_build_cfg
  }
}
