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

assert(is_fuchsia)

import("//build/packages/prebuilt_package.gni")

prebuilt_package("flutter_jit_runner") {
  archive = "//prebuilt/third_party/flutter/$target_cpu/debug/jit/flutter_jit_runner-0.far"
}

prebuilt_package("flutter_jit_product_runner") {
  archive = "//prebuilt/third_party/flutter/$target_cpu/release/jit/flutter_jit_product_runner-0.far"
}

prebuilt_package("flutter_aot_runner") {
  archive = "//prebuilt/third_party/flutter/$target_cpu/debug/aot/flutter_aot_runner-0.far"
}

prebuilt_package("flutter_aot_product_runner") {
  archive = "//prebuilt/third_party/flutter/$target_cpu/release/aot/flutter_aot_product_runner-0.far"
}

copy("flutter_tester") {
  sources = [
    "//prebuilt/third_party/flutter/${target_cpu}/debug/jit/flutter_binaries/flutter_tester",
  ]
  outputs = [
    "$target_gen_dir/flutter_tester",
  ]
}
