# 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/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/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/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/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/MathTests.cpp",
    "src/tests/unittests/ObjectBaseTests.cpp",
    "src/tests/unittests/PerStageTests.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/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/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/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",
  ]
}
