# 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/common/config.gni")
import("//flutter/shell/config.gni")

gpu_dir = "//flutter/shell/gpu"

gpu_common_deps = [
  "//flutter/common",
  "//flutter/fml",
  "//third_party/skia",
]

gpu_common_deps_legacy_and_next = [
  "//flutter/flow:flow",
  "//flutter/shell/common:common",
]

source_set_maybe_fuchsia_legacy("gpu_surface_software") {
  sources = [
    "$gpu_dir/gpu_surface_delegate.h",
    "$gpu_dir/gpu_surface_software.cc",
    "$gpu_dir/gpu_surface_software.h",
    "$gpu_dir/gpu_surface_software_delegate.cc",
    "$gpu_dir/gpu_surface_software_delegate.h",
  ]

  deps = gpu_common_deps

  deps_legacy_and_next = gpu_common_deps_legacy_and_next
}

source_set_maybe_fuchsia_legacy("gpu_surface_gl") {
  sources = [
    "$gpu_dir/gpu_surface_delegate.h",
    "$gpu_dir/gpu_surface_gl.cc",
    "$gpu_dir/gpu_surface_gl.h",
    "$gpu_dir/gpu_surface_gl_delegate.cc",
    "$gpu_dir/gpu_surface_gl_delegate.h",
  ]

  deps = gpu_common_deps

  deps_legacy_and_next = gpu_common_deps_legacy_and_next
}

source_set_maybe_fuchsia_legacy("gpu_surface_vulkan") {
  sources = [
    "$gpu_dir/gpu_surface_delegate.h",
    "$gpu_dir/gpu_surface_vulkan.cc",
    "$gpu_dir/gpu_surface_vulkan.h",
    "$gpu_dir/gpu_surface_vulkan_delegate.cc",
    "$gpu_dir/gpu_surface_vulkan_delegate.h",
  ]

  deps = gpu_common_deps + [ "//flutter/vulkan" ]

  deps_legacy_and_next = gpu_common_deps_legacy_and_next
}

source_set_maybe_fuchsia_legacy("gpu_surface_metal") {
  sources = [
    "$gpu_dir/gpu_surface_delegate.h",
    "$gpu_dir/gpu_surface_metal.h",
    "$gpu_dir/gpu_surface_metal.mm",
  ]

  deps = gpu_common_deps

  deps_legacy_and_next = gpu_common_deps_legacy_and_next
}
