# Copyright (c) 2013 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.

# The files here go into the "gpu" component in a component build (with
# "command_buffer_common" just forwarding) and goes into a static library in
# non-component build. This needs to match the GYP build which was likely an
# attempt to make larger components to help with loading.

import("//build/config/jumbo.gni")

group("common") {
  if (is_component_build) {
    public_deps = [
      "//gpu",
    ]
  } else {
    public_deps = [
      ":common_sources",
    ]
  }
}

group("gles2") {
  if (is_component_build) {
    public_deps = [
      "//gpu:gles2",
    ]
  } else {
    public_deps = [
      ":gles2_sources",
    ]
  }
}

group("raster") {
  if (is_component_build) {
    public_deps = [
      "//gpu:gles2",
    ]
  } else {
    public_deps = [
      ":raster_sources",
    ]
  }
}

group("webgpu") {
  public_deps = [
    ":webgpu_sources",
  ]
}

jumbo_source_set("common_sources") {
  visibility = [ "//gpu/*" ]

  sources = [
    "activity_flags.cc",
    "activity_flags.h",
    "bitfield_helpers.h",
    "buffer.cc",
    "buffer.h",
    "capabilities.cc",
    "capabilities.h",
    "cmd_buffer_common.cc",
    "cmd_buffer_common.h",
    "command_buffer.h",
    "command_buffer_id.h",
    "common_cmd_format.h",
    "constants.h",
    "context_creation_attribs.cc",
    "context_creation_attribs.h",
    "context_result.cc",
    "context_result.h",
    "debug_marker_manager.cc",
    "debug_marker_manager.h",
    "discardable_handle.cc",
    "discardable_handle.h",
    "gl2_types.h",
    "gpu_memory_buffer_support.cc",
    "gpu_memory_buffer_support.h",
    "id_allocator.cc",
    "id_allocator.h",
    "id_type.h",
    "mailbox.cc",
    "mailbox.h",
    "mailbox_holder.cc",
    "mailbox_holder.h",
    "scheduling_priority.cc",
    "scheduling_priority.h",
    "shared_image_trace_utils.cc",
    "shared_image_trace_utils.h",
    "shared_image_usage.h",
    "swap_buffers_complete_params.cc",
    "swap_buffers_complete_params.h",
    "swap_buffers_flags.h",
    "sync_token.cc",
    "sync_token.h",
    "texture_in_use_response.h",
    "thread_local.h",
    "time.h",
  ]

  configs += [ "//gpu:gpu_implementation" ]

  public_deps = [
    "//mojo/public/cpp/system",
    "//ui/gfx:memory_buffer",
    "//ui/gfx/geometry",
  ]

  deps = [
    "//base",
  ]

  # TODO(piman): needed for gpu_memory_buffer_support.cc. Split common vs gles2
  # specifics.
  configs += [ "//third_party/khronos:khronos_headers" ]
}

source_set("gles2_sources") {
  visibility = [ "//gpu/*" ]

  sources = [
    "gles2_cmd_format.cc",
    "gles2_cmd_format.h",
    "gles2_cmd_format_autogen.h",
    "gles2_cmd_ids.h",
    "gles2_cmd_ids_autogen.h",
  ]

  configs += [
    "//gpu:gpu_gles2_implementation",
    "//build/config/compiler:no_shorten_64_warnings",
  ]

  deps = [
    ":gles2_utils",
    "//base",
  ]
  public_deps = [
    ":common",
  ]
}

source_set("raster_sources") {
  visibility = [ "//gpu/*" ]

  sources = [
    "raster_cmd_format.cc",
    "raster_cmd_format.h",
    "raster_cmd_format_autogen.h",
    "raster_cmd_ids.h",
    "raster_cmd_ids_autogen.h",
    "skia_utils.cc",
    "skia_utils.h",
  ]

  configs += [ "//gpu:raster_implementation" ]

  deps = [
    ":gles2_utils",
    "//base",
    "//skia",
    "//ui/gl:gl",
  ]
  public_deps = [
    ":common",
    "//components/viz/common:resource_format",
  ]
}

source_set("webgpu_sources") {
  visibility = [ "//gpu/*" ]

  sources = [
    "webgpu_cmd_format.cc",
    "webgpu_cmd_format.h",
    "webgpu_cmd_format_autogen.h",
    "webgpu_cmd_ids.h",
    "webgpu_cmd_ids_autogen.h",
  ]

  configs += [ "//gpu:webgpu_implementation" ]

  deps = [
    ":gles2_utils",
    "//base",
  ]
  public_deps = [
    ":common",
  ]
}

component("gles2_utils") {
  sources = [
    "gles2_cmd_utils.cc",
    "gles2_cmd_utils.h",
    "gles2_utils_export.h",
  ]

  defines = [ "GLES2_UTILS_IMPLEMENTATION" ]

  deps = [
    "//base",
  ]

  all_dependent_configs = [ "//third_party/khronos:khronos_headers" ]
}
