# Copyright 2013 The Flutter 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("//flutter/tools/fuchsia/dart/dart_build_config.gni")

declare_args() {
  # TODO(fxbug.dev/86941) enable dart_runner_integration_tests
  # TODO(fxbug.dev/64153) renable dart runner aot builds
  # if (flutter_runtime_mode == "release") {
  #   # Product AOT
  #   dart_default_build_cfg = dart_release_build_cfg
  # } else if (flutter_runtime_mode == "jit_release") {
  #   # Product JIT
  #   dart_default_build_cfg = dart_jit_release_build_cfg
  # } else if (flutter_runtime_mode == "debug") {
  # Non-product JIT
  dart_default_build_cfg = dart_debug_build_cfg
  # } else { # "profile"
  #   # Non-product AOT
  #   dart_default_build_cfg = dart_profile_build_cfg
  # }
}
