# 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("//build/fuchsia/sdk.gni")
import("//flutter/impeller/tools/impeller.gni")
import("//flutter/shell/gpu/gpu.gni")

shell_gpu_configuration("tester_gpu_configuration") {
  enable_software = true
  enable_gl = true
  enable_vulkan = true
  enable_metal = false
}

executable("testing") {
  output_name = "flutter_tester"

  public_configs = [
    "//flutter:config",
    "//flutter:export_dynamic_test_symbols",
  ]

  sources = [ "tester_main.cc" ]
  libs = []
  if (is_win) {
    libs += [
      "psapi.lib",
      "user32.lib",
      "FontSub.lib",
      "shlwapi.lib",
    ]
  }

  deps = [
    "//flutter/assets",
    "//flutter/common",
    "//flutter/flow",
    "//flutter/fml",
    "//flutter/lib/snapshot",
    "//flutter/shell/common",
    "//flutter/shell/gpu:gpu_surface_software",
    "//flutter/skia",
    "//flutter/third_party/tonic",
    "//third_party/abseil-cpp/absl/base:no_destructor",
    "//third_party/dart/runtime:libdart_jit",
    "//third_party/dart/runtime/bin:dart_io_api",
  ]

  if (impeller_supports_rendering) {
    deps += [
      ":tester_gpu_configuration",
      "//flutter/impeller",
      "//flutter/third_party/swiftshader/src/Vulkan:swiftshader_libvulkan_static",
    ]
  }

  metadata = {
    entitlement_file_path = [ "flutter_tester" ]
  }
}
