# 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/flutter/flutter_build_config.gni")

declare_args() {
  # If set to true, will force the runners to be built in
  # product mode which means they will not have an exposed vm service
  flutter_force_product = false
}

declare_args() {
  if (flutter_force_product) {
    # Product AOT
    flutter_default_build_cfg = flutter_release_build_cfg
  } else if (is_debug) {
    # Non-product JIT
    flutter_default_build_cfg = flutter_debug_build_cfg
  } else {
    # Non-product AOT
    flutter_default_build_cfg = flutter_profile_build_cfg
  }
}
