# Copyright 2018 The Dawn Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build_overrides/build.gni")
import("//build_overrides/vulkan_validation_layers.gni")
import("generator/dawn_generator.gni")
import("scripts/dawn_component.gni")
import("scripts/dawn_features.gni")
import("scripts/dawn_overrides_with_defaults.gni")

import("//testing/test.gni")

# Swiftshader is an optional dependency of Dawn so we only use it if the path
# to it has been set.
use_swiftshader = dawn_use_swiftshader && dawn_swiftshader_dir != ""

if (use_swiftshader) {
  assert(dawn_enable_vulkan,
         "dawn_use_swiftshader requires dawn_enable_vulkan=true")
  import("${dawn_swiftshader_dir}/src/Vulkan/vulkan.gni")
}

# Import mac_min_system_version
if (is_mac) {
  import("//build/config/mac/mac_sdk.gni")
}

###############################################################################
# dawn_platform
###############################################################################

source_set("dawn_platform") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]

  sources = [
    "${dawn_root}/src/include/dawn_platform/DawnPlatform.h",
    "src/dawn_platform/tracing/EventTracer.cpp",
    "src/dawn_platform/tracing/EventTracer.h",
    "src/dawn_platform/tracing/TraceEvent.h",
  ]

  deps = [
    "${dawn_root}/src/common",
  ]
}

###############################################################################
# libdawn_native
###############################################################################

config("libdawn_native_internal") {
  configs = [ "${dawn_root}/src/common:dawn_internal" ]

  # Suppress warnings that Metal isn't in the deployment target of Chrome:
  # initialization of the Metal backend is behind a IsMetalSupported check so
  # Dawn won't call Metal functions on macOS 10.10.
  # At the time this is written Chromium supports 10.10.0 and above, so if we
  # aren't on 10.11 it means we are on 10.11 and above, and Metal is available.
  # Skipping this check on 10.11 and above is important as it allows getting
  # proper compilation warning when using 10.12 and above feature for example.
  # TODO(cwallez@chromium.org): Consider using API_AVAILABLE annotations on all
  # metal code in dawn once crbug.com/1004024 is sorted out if Chromium still
  # supports 10.10 then.
  if (is_mac && mac_min_system_version == "10.10.0") {
    cflags_objcc = [ "-Wno-unguarded-availability" ]
  }
}

config("libdawn_native_weak_framework") {
  if (is_mac && dawn_enable_metal) {
    ldflags = [
      "-weak_framework",
      "Metal",
    ]
  }
}

dawn_json_generator("libdawn_native_utils_gen") {
  target = "dawn_native_utils"
  outputs = [
    "src/dawn_native/ProcTable.cpp",
    "src/dawn_native/wgpu_structs_autogen.h",
    "src/dawn_native/wgpu_structs_autogen.cpp",
    "src/dawn_native/ValidationUtils_autogen.h",
    "src/dawn_native/ValidationUtils_autogen.cpp",
  ]
}

if (dawn_enable_opengl) {
  dawn_generator("libdawn_native_opengl_loader_gen") {
    script = "generator/opengl_loader_generator.py"
    args = [
      "--gl-xml",
      rebase_path("third_party/khronos/gl.xml", root_build_dir),
      "--supported-extensions",
      rebase_path("src/dawn_native/opengl/supported_extensions.json",
                  root_build_dir),
    ]
    outputs = [
      "src/dawn_native/opengl/OpenGLFunctionsBase_autogen.cpp",
      "src/dawn_native/opengl/OpenGLFunctionsBase_autogen.h",
      "src/dawn_native/opengl/opengl_platform_autogen.h",
    ]
  }
}

# Public libdawn_native headers so they can be publically visible for
# dependencies of libdawn_native
source_set("libdawn_native_headers") {
  public_deps = [
    "${dawn_root}/src/dawn:dawncpp_headers",
  ]
  all_dependent_configs = [ "${dawn_root}/src/common:dawn_public_include_dirs" ]
  sources = [
    "src/include/dawn_native/DawnNative.h",
    "src/include/dawn_native/dawn_native_export.h",

    # Include all backend's public headers so that dependencies can include
    # them even when the backends are disabled.
    "src/include/dawn_native/D3D12Backend.h",
    "src/include/dawn_native/MetalBackend.h",
    "src/include/dawn_native/NullBackend.h",
    "src/include/dawn_native/OpenGLBackend.h",
    "src/include/dawn_native/VulkanBackend.h",
  ]
}

# The meat of the compilation for libdawn_native so that we can cheaply have
# shared_library / static_library versions of it. It compiles all the files
# except those that define exported symbols.
source_set("libdawn_native_sources") {
  deps = [
    ":libdawn_native_headers",
    ":libdawn_native_utils_gen",
    "${dawn_root}/src/common",
    "${dawn_shaderc_dir}:spirv_cross",
    "${dawn_spirv_tools_dir}:spvtools_val",
  ]
  defines = []
  libs = []
  data_deps = []

  configs += [ ":libdawn_native_internal" ]

  # Dependencies that are needed to compile libdawn_native entry points in
  # FooBackend.cpp need to be public deps so they are propagated to the
  # libdawn_native target
  public_deps = [
    ":dawn_platform",
    "${dawn_shaderc_dir}:libshaderc_spvc",
  ]

  sources = get_target_outputs(":libdawn_native_utils_gen")
  sources += [
    "src/dawn_native/Adapter.cpp",
    "src/dawn_native/Adapter.h",
    "src/dawn_native/AttachmentState.cpp",
    "src/dawn_native/AttachmentState.h",
    "src/dawn_native/BackendConnection.cpp",
    "src/dawn_native/BackendConnection.h",
    "src/dawn_native/BindGroup.cpp",
    "src/dawn_native/BindGroup.h",
    "src/dawn_native/BindGroupAndStorageBarrierTracker.h",
    "src/dawn_native/BindGroupLayout.cpp",
    "src/dawn_native/BindGroupLayout.h",
    "src/dawn_native/BindGroupTracker.h",
    "src/dawn_native/BuddyAllocator.cpp",
    "src/dawn_native/BuddyAllocator.h",
    "src/dawn_native/BuddyMemoryAllocator.cpp",
    "src/dawn_native/BuddyMemoryAllocator.h",
    "src/dawn_native/Buffer.cpp",
    "src/dawn_native/Buffer.h",
    "src/dawn_native/CachedObject.cpp",
    "src/dawn_native/CachedObject.h",
    "src/dawn_native/CommandAllocator.cpp",
    "src/dawn_native/CommandAllocator.h",
    "src/dawn_native/CommandBuffer.cpp",
    "src/dawn_native/CommandBuffer.h",
    "src/dawn_native/CommandBufferStateTracker.cpp",
    "src/dawn_native/CommandBufferStateTracker.h",
    "src/dawn_native/CommandEncoder.cpp",
    "src/dawn_native/CommandEncoder.h",
    "src/dawn_native/CommandValidation.cpp",
    "src/dawn_native/CommandValidation.h",
    "src/dawn_native/Commands.cpp",
    "src/dawn_native/Commands.h",
    "src/dawn_native/ComputePassEncoder.cpp",
    "src/dawn_native/ComputePassEncoder.h",
    "src/dawn_native/ComputePipeline.cpp",
    "src/dawn_native/ComputePipeline.h",
    "src/dawn_native/Device.cpp",
    "src/dawn_native/Device.h",
    "src/dawn_native/DynamicUploader.cpp",
    "src/dawn_native/DynamicUploader.h",
    "src/dawn_native/EncodingContext.cpp",
    "src/dawn_native/EncodingContext.h",
    "src/dawn_native/Error.cpp",
    "src/dawn_native/Error.h",
    "src/dawn_native/ErrorData.cpp",
    "src/dawn_native/ErrorData.h",
    "src/dawn_native/ErrorInjector.cpp",
    "src/dawn_native/ErrorInjector.h",
    "src/dawn_native/ErrorScope.cpp",
    "src/dawn_native/ErrorScope.h",
    "src/dawn_native/ErrorScopeTracker.cpp",
    "src/dawn_native/ErrorScopeTracker.h",
    "src/dawn_native/Extensions.cpp",
    "src/dawn_native/Extensions.h",
    "src/dawn_native/Fence.cpp",
    "src/dawn_native/Fence.h",
    "src/dawn_native/FenceSignalTracker.cpp",
    "src/dawn_native/FenceSignalTracker.h",
    "src/dawn_native/Format.cpp",
    "src/dawn_native/Format.h",
    "src/dawn_native/Forward.h",
    "src/dawn_native/Instance.cpp",
    "src/dawn_native/Instance.h",
    "src/dawn_native/ObjectBase.cpp",
    "src/dawn_native/ObjectBase.h",
    "src/dawn_native/PassResourceUsage.h",
    "src/dawn_native/PassResourceUsageTracker.cpp",
    "src/dawn_native/PassResourceUsageTracker.h",
    "src/dawn_native/PerStage.cpp",
    "src/dawn_native/PerStage.h",
    "src/dawn_native/Pipeline.cpp",
    "src/dawn_native/Pipeline.h",
    "src/dawn_native/PipelineLayout.cpp",
    "src/dawn_native/PipelineLayout.h",
    "src/dawn_native/ProgrammablePassEncoder.cpp",
    "src/dawn_native/ProgrammablePassEncoder.h",
    "src/dawn_native/Queue.cpp",
    "src/dawn_native/Queue.h",
    "src/dawn_native/RefCounted.cpp",
    "src/dawn_native/RefCounted.h",
    "src/dawn_native/RenderBundle.cpp",
    "src/dawn_native/RenderBundle.h",
    "src/dawn_native/RenderBundleEncoder.cpp",
    "src/dawn_native/RenderBundleEncoder.h",
    "src/dawn_native/RenderEncoderBase.cpp",
    "src/dawn_native/RenderEncoderBase.h",
    "src/dawn_native/RenderPassEncoder.cpp",
    "src/dawn_native/RenderPassEncoder.h",
    "src/dawn_native/RenderPipeline.cpp",
    "src/dawn_native/RenderPipeline.h",
    "src/dawn_native/ResourceHeap.h",
    "src/dawn_native/ResourceHeapAllocator.h",
    "src/dawn_native/ResourceMemoryAllocation.cpp",
    "src/dawn_native/ResourceMemoryAllocation.h",
    "src/dawn_native/RingBufferAllocator.cpp",
    "src/dawn_native/RingBufferAllocator.h",
    "src/dawn_native/Sampler.cpp",
    "src/dawn_native/Sampler.h",
    "src/dawn_native/ShaderModule.cpp",
    "src/dawn_native/ShaderModule.h",
    "src/dawn_native/StagingBuffer.cpp",
    "src/dawn_native/StagingBuffer.h",
    "src/dawn_native/Surface.cpp",
    "src/dawn_native/Surface.h",
    "src/dawn_native/SwapChain.cpp",
    "src/dawn_native/SwapChain.h",
    "src/dawn_native/Texture.cpp",
    "src/dawn_native/Texture.h",
    "src/dawn_native/ToBackend.h",
    "src/dawn_native/Toggles.cpp",
    "src/dawn_native/Toggles.h",
    "src/dawn_native/dawn_platform.h",
  ]

  if (dawn_enable_d3d12) {
    libs += [ "dxguid.lib" ]
    sources += [
      "src/dawn_native/d3d12/AdapterD3D12.cpp",
      "src/dawn_native/d3d12/AdapterD3D12.h",
      "src/dawn_native/d3d12/BackendD3D12.cpp",
      "src/dawn_native/d3d12/BackendD3D12.h",
      "src/dawn_native/d3d12/BindGroupD3D12.cpp",
      "src/dawn_native/d3d12/BindGroupD3D12.h",
      "src/dawn_native/d3d12/BindGroupLayoutD3D12.cpp",
      "src/dawn_native/d3d12/BindGroupLayoutD3D12.h",
      "src/dawn_native/d3d12/BufferD3D12.cpp",
      "src/dawn_native/d3d12/BufferD3D12.h",
      "src/dawn_native/d3d12/CommandAllocatorManager.cpp",
      "src/dawn_native/d3d12/CommandAllocatorManager.h",
      "src/dawn_native/d3d12/CommandBufferD3D12.cpp",
      "src/dawn_native/d3d12/CommandBufferD3D12.h",
      "src/dawn_native/d3d12/CommandRecordingContext.cpp",
      "src/dawn_native/d3d12/CommandRecordingContext.h",
      "src/dawn_native/d3d12/ComputePipelineD3D12.cpp",
      "src/dawn_native/d3d12/ComputePipelineD3D12.h",
      "src/dawn_native/d3d12/D3D12Error.cpp",
      "src/dawn_native/d3d12/D3D12Error.h",
      "src/dawn_native/d3d12/D3D12Info.cpp",
      "src/dawn_native/d3d12/D3D12Info.h",
      "src/dawn_native/d3d12/DescriptorHeapAllocationD3D12.cpp",
      "src/dawn_native/d3d12/DescriptorHeapAllocationD3D12.h",
      "src/dawn_native/d3d12/DescriptorHeapAllocator.cpp",
      "src/dawn_native/d3d12/DescriptorHeapAllocator.h",
      "src/dawn_native/d3d12/DeviceD3D12.cpp",
      "src/dawn_native/d3d12/DeviceD3D12.h",
      "src/dawn_native/d3d12/Forward.h",
      "src/dawn_native/d3d12/HeapAllocatorD3D12.cpp",
      "src/dawn_native/d3d12/HeapAllocatorD3D12.h",
      "src/dawn_native/d3d12/HeapD3D12.cpp",
      "src/dawn_native/d3d12/HeapD3D12.h",
      "src/dawn_native/d3d12/NativeSwapChainImplD3D12.cpp",
      "src/dawn_native/d3d12/NativeSwapChainImplD3D12.h",
      "src/dawn_native/d3d12/PipelineLayoutD3D12.cpp",
      "src/dawn_native/d3d12/PipelineLayoutD3D12.h",
      "src/dawn_native/d3d12/PlatformFunctions.cpp",
      "src/dawn_native/d3d12/PlatformFunctions.h",
      "src/dawn_native/d3d12/QueueD3D12.cpp",
      "src/dawn_native/d3d12/QueueD3D12.h",
      "src/dawn_native/d3d12/RenderPassBuilderD3D12.cpp",
      "src/dawn_native/d3d12/RenderPassBuilderD3D12.h",
      "src/dawn_native/d3d12/RenderPipelineD3D12.cpp",
      "src/dawn_native/d3d12/RenderPipelineD3D12.h",
      "src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.cpp",
      "src/dawn_native/d3d12/ResourceAllocatorManagerD3D12.h",
      "src/dawn_native/d3d12/ResourceHeapAllocationD3D12.cpp",
      "src/dawn_native/d3d12/ResourceHeapAllocationD3D12.h",
      "src/dawn_native/d3d12/SamplerD3D12.cpp",
      "src/dawn_native/d3d12/SamplerD3D12.h",
      "src/dawn_native/d3d12/ShaderModuleD3D12.cpp",
      "src/dawn_native/d3d12/ShaderModuleD3D12.h",
      "src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.cpp",
      "src/dawn_native/d3d12/ShaderVisibleDescriptorAllocatorD3D12.h",
      "src/dawn_native/d3d12/StagingBufferD3D12.cpp",
      "src/dawn_native/d3d12/StagingBufferD3D12.h",
      "src/dawn_native/d3d12/SwapChainD3D12.cpp",
      "src/dawn_native/d3d12/SwapChainD3D12.h",
      "src/dawn_native/d3d12/TextureCopySplitter.cpp",
      "src/dawn_native/d3d12/TextureCopySplitter.h",
      "src/dawn_native/d3d12/TextureD3D12.cpp",
      "src/dawn_native/d3d12/TextureD3D12.h",
      "src/dawn_native/d3d12/UtilsD3D12.cpp",
      "src/dawn_native/d3d12/UtilsD3D12.h",
      "src/dawn_native/d3d12/d3d12_platform.h",
    ]
  }

  if (dawn_enable_metal) {
    libs += [
      "Cocoa.framework",
      "IOKit.framework",
      "IOSurface.framework",
      "QuartzCore.framework",
    ]
    sources += [
      "src/dawn_native/Surface_metal.mm",
      "src/dawn_native/metal/BackendMTL.h",
      "src/dawn_native/metal/BackendMTL.mm",
      "src/dawn_native/metal/BindGroupLayoutMTL.h",
      "src/dawn_native/metal/BindGroupLayoutMTL.mm",
      "src/dawn_native/metal/BindGroupMTL.h",
      "src/dawn_native/metal/BindGroupMTL.mm",
      "src/dawn_native/metal/BufferMTL.h",
      "src/dawn_native/metal/BufferMTL.mm",
      "src/dawn_native/metal/CommandBufferMTL.h",
      "src/dawn_native/metal/CommandBufferMTL.mm",
      "src/dawn_native/metal/CommandRecordingContext.h",
      "src/dawn_native/metal/CommandRecordingContext.mm",
      "src/dawn_native/metal/ComputePipelineMTL.h",
      "src/dawn_native/metal/ComputePipelineMTL.mm",
      "src/dawn_native/metal/DeviceMTL.h",
      "src/dawn_native/metal/DeviceMTL.mm",
      "src/dawn_native/metal/Forward.h",
      "src/dawn_native/metal/PipelineLayoutMTL.h",
      "src/dawn_native/metal/PipelineLayoutMTL.mm",
      "src/dawn_native/metal/QueueMTL.h",
      "src/dawn_native/metal/QueueMTL.mm",
      "src/dawn_native/metal/RenderPipelineMTL.h",
      "src/dawn_native/metal/RenderPipelineMTL.mm",
      "src/dawn_native/metal/SamplerMTL.h",
      "src/dawn_native/metal/SamplerMTL.mm",
      "src/dawn_native/metal/ShaderModuleMTL.h",
      "src/dawn_native/metal/ShaderModuleMTL.mm",
      "src/dawn_native/metal/StagingBufferMTL.h",
      "src/dawn_native/metal/StagingBufferMTL.mm",
      "src/dawn_native/metal/SwapChainMTL.h",
      "src/dawn_native/metal/SwapChainMTL.mm",
      "src/dawn_native/metal/TextureMTL.h",
      "src/dawn_native/metal/TextureMTL.mm",
      "src/dawn_native/metal/UtilsMetal.h",
      "src/dawn_native/metal/UtilsMetal.mm",
    ]
  }

  if (dawn_enable_null) {
    sources += [
      "src/dawn_native/null/DeviceNull.cpp",
      "src/dawn_native/null/DeviceNull.h",
    ]
  }

  if (dawn_enable_opengl) {
    public_deps += [
      ":libdawn_native_opengl_loader_gen",
      "third_party:khronos_platform",
    ]
    sources += get_target_outputs(":libdawn_native_opengl_loader_gen")
    sources += [
      "src/dawn_native/opengl/BackendGL.cpp",
      "src/dawn_native/opengl/BackendGL.h",
      "src/dawn_native/opengl/BindGroupGL.cpp",
      "src/dawn_native/opengl/BindGroupGL.h",
      "src/dawn_native/opengl/BindGroupLayoutGL.cpp",
      "src/dawn_native/opengl/BindGroupLayoutGL.h",
      "src/dawn_native/opengl/BufferGL.cpp",
      "src/dawn_native/opengl/BufferGL.h",
      "src/dawn_native/opengl/CommandBufferGL.cpp",
      "src/dawn_native/opengl/CommandBufferGL.h",
      "src/dawn_native/opengl/ComputePipelineGL.cpp",
      "src/dawn_native/opengl/ComputePipelineGL.h",
      "src/dawn_native/opengl/DeviceGL.cpp",
      "src/dawn_native/opengl/DeviceGL.h",
      "src/dawn_native/opengl/Forward.h",
      "src/dawn_native/opengl/GLFormat.cpp",
      "src/dawn_native/opengl/GLFormat.h",
      "src/dawn_native/opengl/NativeSwapChainImplGL.cpp",
      "src/dawn_native/opengl/NativeSwapChainImplGL.h",
      "src/dawn_native/opengl/OpenGLFunctions.cpp",
      "src/dawn_native/opengl/OpenGLFunctions.h",
      "src/dawn_native/opengl/PersistentPipelineStateGL.cpp",
      "src/dawn_native/opengl/PersistentPipelineStateGL.h",
      "src/dawn_native/opengl/PipelineGL.cpp",
      "src/dawn_native/opengl/PipelineGL.h",
      "src/dawn_native/opengl/PipelineLayoutGL.cpp",
      "src/dawn_native/opengl/PipelineLayoutGL.h",
      "src/dawn_native/opengl/QueueGL.cpp",
      "src/dawn_native/opengl/QueueGL.h",
      "src/dawn_native/opengl/RenderPipelineGL.cpp",
      "src/dawn_native/opengl/RenderPipelineGL.h",
      "src/dawn_native/opengl/SamplerGL.cpp",
      "src/dawn_native/opengl/SamplerGL.h",
      "src/dawn_native/opengl/ShaderModuleGL.cpp",
      "src/dawn_native/opengl/ShaderModuleGL.h",
      "src/dawn_native/opengl/SwapChainGL.cpp",
      "src/dawn_native/opengl/SwapChainGL.h",
      "src/dawn_native/opengl/TextureGL.cpp",
      "src/dawn_native/opengl/TextureGL.h",
      "src/dawn_native/opengl/UtilsGL.cpp",
      "src/dawn_native/opengl/UtilsGL.h",
      "src/dawn_native/opengl/opengl_platform.h",
    ]
  }

  if (dawn_enable_vulkan) {
    public_deps += [ "third_party:vulkan_headers" ]
    sources += [
      "src/dawn_native/vulkan/AdapterVk.cpp",
      "src/dawn_native/vulkan/AdapterVk.h",
      "src/dawn_native/vulkan/BackendVk.cpp",
      "src/dawn_native/vulkan/BackendVk.h",
      "src/dawn_native/vulkan/BindGroupLayoutVk.cpp",
      "src/dawn_native/vulkan/BindGroupLayoutVk.h",
      "src/dawn_native/vulkan/BindGroupVk.cpp",
      "src/dawn_native/vulkan/BindGroupVk.h",
      "src/dawn_native/vulkan/BufferVk.cpp",
      "src/dawn_native/vulkan/BufferVk.h",
      "src/dawn_native/vulkan/CommandBufferVk.cpp",
      "src/dawn_native/vulkan/CommandBufferVk.h",
      "src/dawn_native/vulkan/CommandRecordingContext.h",
      "src/dawn_native/vulkan/ComputePipelineVk.cpp",
      "src/dawn_native/vulkan/ComputePipelineVk.h",
      "src/dawn_native/vulkan/DescriptorSetService.cpp",
      "src/dawn_native/vulkan/DescriptorSetService.h",
      "src/dawn_native/vulkan/DeviceVk.cpp",
      "src/dawn_native/vulkan/DeviceVk.h",
      "src/dawn_native/vulkan/ExternalHandle.h",
      "src/dawn_native/vulkan/FencedDeleter.cpp",
      "src/dawn_native/vulkan/FencedDeleter.h",
      "src/dawn_native/vulkan/Forward.h",
      "src/dawn_native/vulkan/NativeSwapChainImplVk.cpp",
      "src/dawn_native/vulkan/NativeSwapChainImplVk.h",
      "src/dawn_native/vulkan/PipelineLayoutVk.cpp",
      "src/dawn_native/vulkan/PipelineLayoutVk.h",
      "src/dawn_native/vulkan/QueueVk.cpp",
      "src/dawn_native/vulkan/QueueVk.h",
      "src/dawn_native/vulkan/RenderPassCache.cpp",
      "src/dawn_native/vulkan/RenderPassCache.h",
      "src/dawn_native/vulkan/RenderPipelineVk.cpp",
      "src/dawn_native/vulkan/RenderPipelineVk.h",
      "src/dawn_native/vulkan/ResourceHeapVk.cpp",
      "src/dawn_native/vulkan/ResourceHeapVk.h",
      "src/dawn_native/vulkan/ResourceMemoryAllocatorVk.cpp",
      "src/dawn_native/vulkan/ResourceMemoryAllocatorVk.h",
      "src/dawn_native/vulkan/SamplerVk.cpp",
      "src/dawn_native/vulkan/SamplerVk.h",
      "src/dawn_native/vulkan/ShaderModuleVk.cpp",
      "src/dawn_native/vulkan/ShaderModuleVk.h",
      "src/dawn_native/vulkan/StagingBufferVk.cpp",
      "src/dawn_native/vulkan/StagingBufferVk.h",
      "src/dawn_native/vulkan/SwapChainVk.cpp",
      "src/dawn_native/vulkan/SwapChainVk.h",
      "src/dawn_native/vulkan/TextureVk.cpp",
      "src/dawn_native/vulkan/TextureVk.h",
      "src/dawn_native/vulkan/UtilsVulkan.cpp",
      "src/dawn_native/vulkan/UtilsVulkan.h",
      "src/dawn_native/vulkan/VulkanError.cpp",
      "src/dawn_native/vulkan/VulkanError.h",
      "src/dawn_native/vulkan/VulkanFunctions.cpp",
      "src/dawn_native/vulkan/VulkanFunctions.h",
      "src/dawn_native/vulkan/VulkanInfo.cpp",
      "src/dawn_native/vulkan/VulkanInfo.h",
      "src/dawn_native/vulkan/external_memory/MemoryService.h",
      "src/dawn_native/vulkan/external_semaphore/SemaphoreService.h",
    ]

    if (is_chromeos) {
      sources += [
        "src/dawn_native/vulkan/external_memory/MemoryServiceDmaBuf.cpp",
        "src/dawn_native/vulkan/external_semaphore/SemaphoreServiceOpaqueFD.cpp",
      ]
    } else if (is_linux) {
      sources += [
        "src/dawn_native/vulkan/external_memory/MemoryServiceOpaqueFD.cpp",
        "src/dawn_native/vulkan/external_semaphore/SemaphoreServiceOpaqueFD.cpp",
      ]
    } else if (is_fuchsia) {
      sources += [
        "src/dawn_native/vulkan/external_memory/MemoryServiceZirconHandle.cpp",
        "src/dawn_native/vulkan/external_semaphore/SemaphoreServiceZirconHandle.cpp",
      ]
    } else {
      sources += [
        "src/dawn_native/vulkan/external_memory/MemoryServiceNull.cpp",
        "src/dawn_native/vulkan/external_semaphore/SemaphoreServiceNull.cpp",
      ]
    }
    if (build_with_chromium && is_fuchsia) {
      # Necessary to ensure that the Vulkan libraries will be in the
      # final Fuchsia package.
      data_deps = [
        # NOTE: The line below is a work around for http://crbug.com/1001081
        "//third_party/fuchsia-sdk/sdk:trace_engine",
        "//third_party/fuchsia-sdk:vulkan_base",
        "//third_party/fuchsia-sdk:vulkan_validation",
      ]
    }
    if (dawn_enable_vulkan_validation_layers) {
      defines += [
        "DAWN_ENABLE_VULKAN_VALIDATION_LAYERS",
        "DAWN_VK_DATA_DIR=\"$vulkan_data_subdir\"",
      ]
    }

    if (use_swiftshader) {
      data_deps += [
        "${dawn_swiftshader_dir}/src/Vulkan:icd_file",
        "${dawn_swiftshader_dir}/src/Vulkan:swiftshader_libvulkan",
      ]
      defines += [
        "DAWN_ENABLE_SWIFTSHADER",
        "DAWN_SWIFTSHADER_VK_ICD_JSON=\"${swiftshader_icd_file_name}\"",
      ]
    }
  }

  if (dawn_use_x11) {
    libs += [ "X11" ]
  }
}

# The static and shared libraries for libdawn_native. Most of the files are
# already compiled in libdawn_native_sources, but we still need to compile
# files defining exported symbols.
dawn_component("libdawn_native") {
  DEFINE_PREFIX = "DAWN_NATIVE"

  #Make headers publically visible
  public_deps = [
    ":libdawn_native_headers",
  ]

  deps = [
    ":libdawn_native_sources",
    "${dawn_root}/src/common",
  ]
  sources = [
    "src/dawn_native/DawnNative.cpp",
  ]
  configs = [ ":libdawn_native_internal" ]
  public_configs = [ ":libdawn_native_weak_framework" ]

  if (dawn_enable_d3d12) {
    sources += [ "src/dawn_native/d3d12/D3D12Backend.cpp" ]
  }
  if (dawn_enable_metal) {
    sources += [ "src/dawn_native/metal/MetalBackend.mm" ]
  }
  if (dawn_enable_null) {
    sources += [ "src/dawn_native/null/NullBackend.cpp" ]
  }
  if (dawn_enable_opengl) {
    sources += [ "src/dawn_native/opengl/OpenGLBackend.cpp" ]
  }
  if (dawn_enable_vulkan) {
    sources += [ "src/dawn_native/vulkan/VulkanBackend.cpp" ]

    if (dawn_enable_vulkan_validation_layers) {
      data_deps = [
        "${dawn_vulkan_validation_layers_dir}:vulkan_validation_layers",
      ]
      if (!is_android) {
        data_deps +=
            [ "${dawn_vulkan_validation_layers_dir}:vulkan_gen_json_files" ]
      }
    }
  }
}

###############################################################################
# libdawn_wire
###############################################################################

dawn_json_generator("libdawn_wire_gen") {
  target = "dawn_wire"
  outputs = [
    "src/dawn_wire/WireCmd_autogen.h",
    "src/dawn_wire/WireCmd_autogen.cpp",
    "src/dawn_wire/client/ApiObjects_autogen.h",
    "src/dawn_wire/client/ApiProcs_autogen.cpp",
    "src/dawn_wire/client/ApiProcs_autogen.h",
    "src/dawn_wire/client/ClientBase_autogen.h",
    "src/dawn_wire/client/ClientHandlers_autogen.cpp",
    "src/dawn_wire/client/ClientPrototypes_autogen.inc",
    "src/dawn_wire/server/ServerBase_autogen.h",
    "src/dawn_wire/server/ServerDoers_autogen.cpp",
    "src/dawn_wire/server/ServerHandlers_autogen.cpp",
    "src/dawn_wire/server/ServerPrototypes_autogen.inc",
  ]
}

dawn_component("libdawn_wire") {
  DEFINE_PREFIX = "DAWN_WIRE"

  deps = [
    ":libdawn_wire_gen",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn_wire:libdawn_wire_headers",
  ]

  configs = [ "${dawn_root}/src/common:dawn_internal" ]
  sources = get_target_outputs(":libdawn_wire_gen")
  sources += [
    "src/dawn_wire/WireClient.cpp",
    "src/dawn_wire/WireDeserializeAllocator.cpp",
    "src/dawn_wire/WireDeserializeAllocator.h",
    "src/dawn_wire/WireServer.cpp",
    "src/dawn_wire/client/ApiObjects.h",
    "src/dawn_wire/client/ApiProcs.cpp",
    "src/dawn_wire/client/Buffer.cpp",
    "src/dawn_wire/client/Buffer.h",
    "src/dawn_wire/client/Client.cpp",
    "src/dawn_wire/client/Client.h",
    "src/dawn_wire/client/ClientDoers.cpp",
    "src/dawn_wire/client/ClientInlineMemoryTransferService.cpp",
    "src/dawn_wire/client/Device.cpp",
    "src/dawn_wire/client/Device.h",
    "src/dawn_wire/client/Fence.cpp",
    "src/dawn_wire/client/Fence.h",
    "src/dawn_wire/client/ObjectAllocator.h",
    "src/dawn_wire/server/ObjectStorage.h",
    "src/dawn_wire/server/Server.cpp",
    "src/dawn_wire/server/Server.h",
    "src/dawn_wire/server/ServerBuffer.cpp",
    "src/dawn_wire/server/ServerDevice.cpp",
    "src/dawn_wire/server/ServerFence.cpp",
    "src/dawn_wire/server/ServerInlineMemoryTransferService.cpp",
    "src/dawn_wire/server/ServerQueue.cpp",
  ]

  # Make headers publically visible
  public_deps = [
    "${dawn_root}/src/dawn_wire:libdawn_wire_headers",
  ]
}

###############################################################################
# GLFW wrapping target
###############################################################################

supports_glfw_for_windowing = is_win || (is_linux && !is_chromeos) || is_mac

# GLFW does not support ChromeOS, Android or Fuchsia, so provide a small mock
# library that can be linked into the Dawn tests on these platforms. Otherwise,
# use the real library from third_party/.
if (supports_glfw_for_windowing) {
  group("dawn_glfw") {
    public_deps = [
      "third_party:glfw",
    ]
  }
} else if (is_fuchsia) {
  # The mock implementation of GLFW on Fuchsia
  config("dawn_glfw_public_config") {
    # Allow inclusion of <GLFW/glfw3.h>
    include_dirs = [ "${dawn_glfw_dir}/include" ]

    # The GLFW/glfw3.h header includes <GL/gl.h> by default, but the latter
    # does not exist on Fuchsia. Defining GLFW_INCLUDE_NONE helps work around
    # the issue, but it needs to be defined for any file that includes the
    # header.
    defines = [
      "GLFW_INCLUDE_NONE",
      "GLFW_INCLUDE_VULKAN",
    ]
  }

  static_library("dawn_glfw") {
    sources = [
      # NOTE: The header below is required to pass "gn check".
      "${dawn_glfw_dir}/include/GLFW/glfw3.h",
      "src/utils/Glfw3Fuchsia.cpp",
    ]
    public_configs = [ ":dawn_glfw_public_config" ]
    deps = [
      "${dawn_root}/src/common",
    ]
  }
} else {
  # Just skip GLFW on other systems
  group("dawn_glfw") {
  }
}

###############################################################################
# Utils for tests and samples
###############################################################################

static_library("dawn_utils") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]

  sources = [
    "src/utils/ComboRenderBundleEncoderDescriptor.cpp",
    "src/utils/ComboRenderBundleEncoderDescriptor.h",
    "src/utils/ComboRenderPipelineDescriptor.cpp",
    "src/utils/ComboRenderPipelineDescriptor.h",
    "src/utils/SystemUtils.cpp",
    "src/utils/SystemUtils.h",
    "src/utils/TerribleCommandBuffer.cpp",
    "src/utils/TerribleCommandBuffer.h",
    "src/utils/TextureFormatUtils.cpp",
    "src/utils/TextureFormatUtils.h",
    "src/utils/Timer.h",
    "src/utils/WGPUHelpers.cpp",
    "src/utils/WGPUHelpers.h",
  ]
  deps = [
    ":libdawn_native",
    ":libdawn_wire",
    "${dawn_root}/src/common",
    "${dawn_shaderc_dir}:libshaderc",
  ]
  libs = []

  if (is_win) {
    sources += [ "src/utils/WindowsTimer.cpp" ]
  } else if (is_mac) {
    sources += [
      "src/utils/OSXTimer.cpp",
      "src/utils/ObjCUtils.h",
      "src/utils/ObjCUtils.mm",
    ]
    libs += [ "QuartzCore.framework" ]
  } else {
    sources += [ "src/utils/PosixTimer.cpp" ]
  }

  if (supports_glfw_for_windowing) {
    sources += [
      "src/utils/GLFWUtils.cpp",
      "src/utils/GLFWUtils.h",
    ]
    deps += [ ":dawn_glfw" ]

    if (dawn_enable_metal) {
      sources += [ "src/utils/GLFWUtils_metal.mm" ]
      libs += [ "Metal.framework" ]
    }
  }

  public_deps = [
    "${dawn_root}/src/dawn:dawncpp_headers",
  ]
}

###############################################################################
# Dawn test targets
###############################################################################

dawn_json_generator("mock_webgpu_gen") {
  target = "mock_webgpu"
  outputs = [
    "src/dawn/mock_webgpu.h",
    "src/dawn/mock_webgpu.cpp",
  ]
}

test("dawn_unittests") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]

  deps = [
    ":dawn_utils",
    ":libdawn_native",
    ":libdawn_native_sources",
    ":libdawn_wire",
    ":mock_webgpu_gen",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn:libdawn_proc",
    "third_party:gmock_and_gtest",
  ]

  # Add internal Dawn Native headers and config for internal unittests.
  deps += [ ":libdawn_native_headers" ]
  configs += [ ":libdawn_native_internal" ]

  sources = get_target_outputs(":mock_webgpu_gen")
  sources += [
    "src/dawn_wire/client/ClientMemoryTransferService_mock.cpp",
    "src/dawn_wire/client/ClientMemoryTransferService_mock.h",
    "src/dawn_wire/server/ServerMemoryTransferService_mock.cpp",
    "src/dawn_wire/server/ServerMemoryTransferService_mock.h",
    "src/tests/unittests/BitSetIteratorTests.cpp",
    "src/tests/unittests/BuddyAllocatorTests.cpp",
    "src/tests/unittests/BuddyMemoryAllocatorTests.cpp",
    "src/tests/unittests/CommandAllocatorTests.cpp",
    "src/tests/unittests/EnumClassBitmasksTests.cpp",
    "src/tests/unittests/ErrorTests.cpp",
    "src/tests/unittests/ExtensionTests.cpp",
    "src/tests/unittests/GetProcAddressTests.cpp",
    "src/tests/unittests/LinkedListTests.cpp",
    "src/tests/unittests/MathTests.cpp",
    "src/tests/unittests/ObjectBaseTests.cpp",
    "src/tests/unittests/PerStageTests.cpp",
    "src/tests/unittests/PlacementAllocatedTests.cpp",
    "src/tests/unittests/RefCountedTests.cpp",
    "src/tests/unittests/ResultTests.cpp",
    "src/tests/unittests/RingBufferAllocatorTests.cpp",
    "src/tests/unittests/SerialMapTests.cpp",
    "src/tests/unittests/SerialQueueTests.cpp",
    "src/tests/unittests/SlabAllocatorTests.cpp",
    "src/tests/unittests/SystemUtilsTests.cpp",
    "src/tests/unittests/ToBackendTests.cpp",
    "src/tests/unittests/validation/BindGroupValidationTests.cpp",
    "src/tests/unittests/validation/BufferValidationTests.cpp",
    "src/tests/unittests/validation/CommandBufferValidationTests.cpp",
    "src/tests/unittests/validation/ComputeIndirectValidationTests.cpp",
    "src/tests/unittests/validation/ComputePassValidationTests.cpp",
    "src/tests/unittests/validation/ComputeValidationTests.cpp",
    "src/tests/unittests/validation/CopyCommandsValidationTests.cpp",
    "src/tests/unittests/validation/DebugMarkerValidationTests.cpp",
    "src/tests/unittests/validation/DrawIndirectValidationTests.cpp",
    "src/tests/unittests/validation/DynamicStateCommandValidationTests.cpp",
    "src/tests/unittests/validation/ErrorScopeValidationTests.cpp",
    "src/tests/unittests/validation/FenceValidationTests.cpp",
    "src/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp",
    "src/tests/unittests/validation/QueueSubmitValidationTests.cpp",
    "src/tests/unittests/validation/RenderBundleValidationTests.cpp",
    "src/tests/unittests/validation/RenderPassDescriptorValidationTests.cpp",
    "src/tests/unittests/validation/RenderPassValidationTests.cpp",
    "src/tests/unittests/validation/RenderPipelineValidationTests.cpp",
    "src/tests/unittests/validation/SamplerValidationTests.cpp",
    "src/tests/unittests/validation/ShaderModuleValidationTests.cpp",
    "src/tests/unittests/validation/StorageTextureValidationTests.cpp",
    "src/tests/unittests/validation/TextureValidationTests.cpp",
    "src/tests/unittests/validation/TextureViewValidationTests.cpp",
    "src/tests/unittests/validation/ToggleValidationTests.cpp",
    "src/tests/unittests/validation/ValidationTest.cpp",
    "src/tests/unittests/validation/ValidationTest.h",
    "src/tests/unittests/validation/VertexBufferValidationTests.cpp",
    "src/tests/unittests/validation/VertexStateValidationTests.cpp",
    "src/tests/unittests/wire/WireArgumentTests.cpp",
    "src/tests/unittests/wire/WireBasicTests.cpp",
    "src/tests/unittests/wire/WireBufferMappingTests.cpp",
    "src/tests/unittests/wire/WireErrorCallbackTests.cpp",
    "src/tests/unittests/wire/WireFenceTests.cpp",
    "src/tests/unittests/wire/WireInjectTextureTests.cpp",
    "src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp",
    "src/tests/unittests/wire/WireOptionalTests.cpp",
    "src/tests/unittests/wire/WireTest.cpp",
    "src/tests/unittests/wire/WireTest.h",
    "src/tests/unittests/wire/WireWGPUDevicePropertiesTests.cpp",
  ]

  if (dawn_enable_d3d12) {
    sources += [ "src/tests/unittests/d3d12/CopySplitTests.cpp" ]
  }

  # When building inside Chromium, use their gtest main function because it is
  # needed to run in swarming correctly.
  if (build_with_chromium) {
    sources += [ "//gpu/dawn_unittests_main.cc" ]
  } else {
    sources += [ "src/tests/UnittestsMain.cpp" ]
  }
}

source_set("dawn_end2end_tests_sources") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]
  testonly = true

  deps = [
    ":dawn_utils",
    ":libdawn_native",
    ":libdawn_wire",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn:libdawn_proc",
    "third_party:gmock_and_gtest",
  ]

  sources = [
    "src/tests/DawnTest.h",
    "src/tests/end2end/BasicTests.cpp",
    "src/tests/end2end/BindGroupTests.cpp",
    "src/tests/end2end/BufferTests.cpp",
    "src/tests/end2end/ClipSpaceTests.cpp",
    "src/tests/end2end/ColorStateTests.cpp",
    "src/tests/end2end/CompressedTextureFormatTests.cpp",
    "src/tests/end2end/ComputeCopyStorageBufferTests.cpp",
    "src/tests/end2end/ComputeIndirectTests.cpp",
    "src/tests/end2end/ComputeSharedMemoryTests.cpp",
    "src/tests/end2end/ComputeStorageBufferBarrierTests.cpp",
    "src/tests/end2end/CopyTests.cpp",
    "src/tests/end2end/CullingTests.cpp",
    "src/tests/end2end/DebugMarkerTests.cpp",
    "src/tests/end2end/DepthStencilStateTests.cpp",
    "src/tests/end2end/DestroyTests.cpp",
    "src/tests/end2end/DeviceLostTests.cpp",
    "src/tests/end2end/DrawIndexedIndirectTests.cpp",
    "src/tests/end2end/DrawIndexedTests.cpp",
    "src/tests/end2end/DrawIndirectTests.cpp",
    "src/tests/end2end/DrawTests.cpp",
    "src/tests/end2end/DynamicBufferOffsetTests.cpp",
    "src/tests/end2end/FenceTests.cpp",
    "src/tests/end2end/GpuMemorySynchronizationTests.cpp",
    "src/tests/end2end/IndexFormatTests.cpp",
    "src/tests/end2end/MultisampledRenderingTests.cpp",
    "src/tests/end2end/NonzeroTextureCreationTests.cpp",
    "src/tests/end2end/ObjectCachingTests.cpp",
    "src/tests/end2end/OpArrayLengthTests.cpp",
    "src/tests/end2end/PrimitiveTopologyTests.cpp",
    "src/tests/end2end/RenderBundleTests.cpp",
    "src/tests/end2end/RenderPassLoadOpTests.cpp",
    "src/tests/end2end/RenderPassTests.cpp",
    "src/tests/end2end/SamplerTests.cpp",
    "src/tests/end2end/ScissorTests.cpp",
    "src/tests/end2end/StorageTextureTests.cpp",
    "src/tests/end2end/TextureFormatTests.cpp",
    "src/tests/end2end/TextureViewTests.cpp",
    "src/tests/end2end/TextureZeroInitTests.cpp",
    "src/tests/end2end/VertexFormatTests.cpp",
    "src/tests/end2end/VertexStateTests.cpp",
    "src/tests/end2end/ViewportOrientationTests.cpp",
    "src/tests/end2end/ViewportTests.cpp",
  ]

  # Validation tests that need OS windows live in end2end tests.
  sources += [
    "src/tests/unittests/validation/ValidationTest.cpp",
    "src/tests/unittests/validation/ValidationTest.h",
  ]

  libs = []

  if (dawn_enable_d3d12) {
    sources += [ "src/tests/end2end/D3D12ResourceWrappingTests.cpp" ]
    libs += [
      "d3d11.lib",
      "dxgi.lib",
    ]
  }

  if (dawn_enable_metal) {
    sources += [ "src/tests/end2end/IOSurfaceWrappingTests.cpp" ]
    libs += [ "IOSurface.framework" ]
  }

  if (dawn_enable_opengl) {
    assert(supports_glfw_for_windowing)
  }

  if (supports_glfw_for_windowing) {
    sources += [
      "src/tests/end2end/SwapChainValidationTests.cpp",
      "src/tests/end2end/WindowSurfaceTests.cpp",
    ]
    deps += [ ":dawn_glfw" ]
  }
}

source_set("dawn_white_box_tests_sources") {
  configs += [ ":libdawn_native_internal" ]
  testonly = true

  deps = [
    ":dawn_utils",
    ":libdawn_native_sources",
    ":libdawn_native_static",  # Static because the tests both link against and have libdawn_native
                               # sources. MSVC errors when both importing and exporting symbols.
    ":libdawn_wire",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn:libdawn_proc",
    "third_party:gmock_and_gtest",
  ]

  sources = [
    "src/tests/DawnTest.h",
  ]

  if (dawn_enable_vulkan) {
    deps += [ "third_party:vulkan_headers" ]

    if (is_chromeos) {
      sources += [ "src/tests/white_box/VulkanImageWrappingTestsDmaBuf.cpp" ]
    } else if (is_linux) {
      sources += [ "src/tests/white_box/VulkanImageWrappingTestsOpaqueFD.cpp" ]
    }

    if (dawn_enable_error_injection) {
      sources += [ "src/tests/white_box/VulkanErrorInjectorTests.cpp" ]
    }
  }

  if (dawn_enable_d3d12) {
    sources += [
      "src/tests/white_box/D3D12DescriptorHeapTests.cpp",
      "src/tests/white_box/D3D12SmallTextureTests.cpp",
    ]
  }

  if (dawn_enable_metal) {
    sources += [ "src/tests/white_box/MetalAutoreleasePoolTests.mm" ]
  }

  if (dawn_enable_opengl) {
    deps += [ ":dawn_glfw" ]
  }

  libs = []
}

test("dawn_end2end_tests") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]

  deps = [
    ":dawn_end2end_tests_sources",
    ":dawn_utils",
    ":dawn_white_box_tests_sources",
    ":libdawn_native",
    ":libdawn_wire",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn:libdawn_proc",
    "third_party:gmock_and_gtest",
  ]

  sources = [
    "src/tests/DawnTest.cpp",
    "src/tests/DawnTest.h",
  ]

  libs = []

  # When building inside Chromium, use their gtest main function because it is
  # needed to run in swarming correctly.
  if (build_with_chromium) {
    sources += [ "//gpu/dawn_end2end_tests_main.cc" ]
  } else {
    sources += [ "src/tests/End2EndTestsMain.cpp" ]
  }

  if (dawn_enable_opengl) {
    deps += [ ":dawn_glfw" ]
  }

  if (is_chromeos) {
    libs += [ "gbm" ]
  }
}

test("dawn_perf_tests") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]

  deps = [
    ":dawn_platform",
    ":dawn_utils",
    ":libdawn_native",
    ":libdawn_wire",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn:libdawn_proc",
    "third_party:gmock_and_gtest",
  ]

  sources = [
    "src/tests/DawnTest.cpp",
    "src/tests/DawnTest.h",
    "src/tests/ParamGenerator.h",
    "src/tests/perf_tests/BufferUploadPerf.cpp",
    "src/tests/perf_tests/DawnPerfTest.cpp",
    "src/tests/perf_tests/DawnPerfTest.h",
    "src/tests/perf_tests/DawnPerfTestPlatform.cpp",
    "src/tests/perf_tests/DawnPerfTestPlatform.h",
    "src/tests/perf_tests/DrawCallPerf.cpp",
  ]

  libs = []

  # When building inside Chromium, use their gtest main function because it is
  # needed to run in swarming correctly.
  if (build_with_chromium) {
    sources += [ "//gpu/dawn_perf_tests_main.cc" ]
  } else {
    sources += [ "src/tests/PerfTestsMain.cpp" ]
  }

  if (dawn_enable_metal) {
    libs += [ "IOSurface.framework" ]
  }

  if (dawn_enable_opengl) {
    deps += [ ":dawn_glfw" ]
  }
}

# Temporary groups to make a 5-way patch to fix crbug.com/913171
group("dawn_unittests_temp_group") {
  testonly = true
  deps = [
    ":dawn_unittests",
  ]
}

group("dawn_end2end_tests_temp_group") {
  testonly = true
  deps = [
    ":dawn_end2end_tests",
  ]
}

group("dawn_perf_tests_temp_group") {
  testonly = true
  deps = [
    ":dawn_perf_tests",
  ]
  data_deps = [
    ":dawn_perf_tests",
  ]
}

###############################################################################
# Dawn samples, only in standalone builds
###############################################################################

if (dawn_standalone) {
  # Library to handle the interaction of Dawn with GLFW windows in samples
  static_library("dawn_bindings") {
    configs += [ "${dawn_root}/src/common:dawn_internal" ]

    sources = [
      "src/utils/BackendBinding.cpp",
      "src/utils/BackendBinding.h",
    ]

    public_deps = [
      "${dawn_root}/src/dawn:dawn_headers",
    ]

    deps = [
      ":dawn_glfw",
      ":libdawn_native",
      "${dawn_root}/src/common",
    ]
    libs = []

    if (dawn_enable_d3d12) {
      sources += [ "src/utils/D3D12Binding.cpp" ]
    }

    if (dawn_enable_metal) {
      sources += [ "src/utils/MetalBinding.mm" ]
      libs += [
        "Metal.framework",
        "QuartzCore.framework",
      ]

      # Suppress warnings that Metal isn't in the deployment target of Chrome
      if (is_mac) {
        cflags_objcc = [ "-Wno-unguarded-availability" ]
      }
    }

    if (dawn_enable_null) {
      sources += [ "src/utils/NullBinding.cpp" ]
    }

    if (dawn_enable_opengl) {
      sources += [ "src/utils/OpenGLBinding.cpp" ]
    }

    if (dawn_enable_vulkan) {
      sources += [ "src/utils/VulkanBinding.cpp" ]
    }
  }

  # Static library to contain code and dependencies common to all samples
  static_library("dawn_sample_utils") {
    sources = [
      "examples/SampleUtils.cpp",
      "examples/SampleUtils.h",
    ]

    # Export all of these as public deps so that `gn check` allows includes
    public_deps = [
      ":dawn_bindings",
      ":dawn_glfw",
      ":dawn_utils",
      ":libdawn_native",
      ":libdawn_wire",
      "${dawn_root}/src/common",
      "${dawn_root}/src/dawn:dawncpp",
      "${dawn_root}/src/dawn:libdawn_proc",
    ]
    public_configs = [ "${dawn_root}/src/common:dawn_internal" ]
  }

  # Template for samples to avoid listing dawn_sample_utils as a dep every time
  template("dawn_sample") {
    executable(target_name) {
      deps = [
        ":dawn_sample_utils",
      ]
      forward_variables_from(invoker, "*", [ "deps" ])

      if (defined(invoker.deps)) {
        deps += invoker.deps
      }
    }
  }

  dawn_sample("CppHelloTriangle") {
    sources = [
      "examples/CppHelloTriangle.cpp",
    ]
  }

  dawn_sample("CHelloTriangle") {
    sources = [
      "examples/CHelloTriangle.cpp",
    ]
  }

  dawn_sample("ComputeBoids") {
    sources = [
      "examples/ComputeBoids.cpp",
    ]
    deps = [
      "third_party:glm",
    ]
  }

  dawn_sample("Animometer") {
    sources = [
      "examples/Animometer.cpp",
    ]
  }

  dawn_sample("CubeReflection") {
    sources = [
      "examples/CubeReflection.cpp",
    ]
    deps = [
      "third_party:glm",
    ]
  }

  group("dawn_samples") {
    deps = [
      ":Animometer",
      ":CHelloTriangle",
      ":ComputeBoids",
      ":CppHelloTriangle",
      ":CubeReflection",
    ]
  }
}

###############################################################################
# Fuzzers
###############################################################################

group("dawn_fuzzers") {
  testonly = true
  deps = [
    "src/fuzzers:dawn_spirv_cross_glsl_fast_fuzzer",
    "src/fuzzers:dawn_spirv_cross_hlsl_fast_fuzzer",
    "src/fuzzers:dawn_spirv_cross_msl_fast_fuzzer",
    "src/fuzzers:dawn_spvc_glsl_fast_fuzzer",
    "src/fuzzers:dawn_spvc_hlsl_fast_fuzzer",
    "src/fuzzers:dawn_spvc_msl_fast_fuzzer",
    "src/fuzzers:dawn_wire_server_and_frontend_fuzzer",
  ]
}
