# 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("../externals/dawn/generator/dawn_generator.gni")
import("../externals/dawn/scripts/dawn_features.gni")

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

source_set("dawn_platform") {
  configs += [ ":dawn_internal" ]

  sources =
      rebase_path([
                    "${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",
                  ],
                  ".",
                  "$dawn_root")
}

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

config("libdawn_native_internal") {
  configs = [ ":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.
  # TODO(cwallez@chromium.org): Consider using API_AVAILABLE annotations on all
  # metal code in dawn once crbug.com/1004024 is sorted out.
  if (is_mac) {
    cflags_objcc = [ "-Wno-unguarded-availability" ]
  }
}

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 = "${dawn_root}/generator/opengl_loader_generator.py"
    args = [
      "--gl-xml",
      rebase_path("../externals/opengl-registry/xml/gl.xml", root_build_dir),
      "--supported-extensions",
      rebase_path("$dawn_root/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 = [
    ":dawncpp_headers",
  ]
  sources = rebase_path(
          [
            "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",
          ],
          ".",
          "$dawn_root")
}

static_library("libdawn_native") {
  deps = [
    ":dawn_common",
    ":libdawn_native_headers",
    ":libdawn_native_utils_gen",
    "//third_party/spirv-cross:spirv_cross",
    "//third_party/spirv-tools:spvtools_val",
  ]

  configs += [ ":libdawn_native_internal" ]
  libs = []

  # 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",
  ]

  sources = rebase_path(get_target_outputs(":libdawn_native_utils_gen"),
                        ".",
                        "$dawn_root")
  sources += rebase_path([
                           "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/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/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/DawnNative.cpp",
                           "src/dawn_native/Device.cpp",
                           "src/dawn_native/Device.h",
                           "src/dawn_native/DynamicUploader.cpp",
                           "src/dawn_native/DynamicUploader.h",
                           "src/dawn_native/Device.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/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.h",
                           "src/dawn_native/ObjectBase.cpp",
                           "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/SwapChain.cpp",
                           "src/dawn_native/SwapChain.h",
                           "src/dawn_native/Texture.cpp",
                           "src/dawn_native/Texture.h",
                           "src/dawn_native/Toggles.cpp",
                           "src/dawn_native/Toggles.h",
                           "src/dawn_native/ToBackend.h",
                           "src/dawn_native/dawn_platform.h",
                         ],
                         ".",
                         "$dawn_root")

  if (dawn_enable_d3d12) {
    libs += [ "dxguid.lib" ]
    sources +=
        rebase_path([
                      "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/D3D12Backend.cpp",
                      "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/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/HeapD3D12.cpp",
                      "src/dawn_native/d3d12/HeapD3D12.h",
                      "src/dawn_native/d3d12/HeapAllocatorD3D12.cpp",
                      "src/dawn_native/d3d12/HeapAllocatorD3D12.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/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/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",
                    ],
                    ".",
                    "$dawn_root")
  }

  if (dawn_enable_metal) {
    libs += [
      "Metal.framework",
      "Cocoa.framework",
      "IOKit.framework",
      "IOSurface.framework",
    ]
    sources += rebase_path([
                             "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/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/MetalBackend.mm",
                             "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",
                           ],
                           ".",
                           "$dawn_root")
  }

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

  if (dawn_enable_opengl) {
    deps += [ ":libdawn_native_opengl_loader_gen" ]
    sources += get_target_outputs(":libdawn_native_opengl_loader_gen")
    sources +=
        rebase_path([
                      "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.h",
                      "src/dawn_native/opengl/GLFormat.cpp",
                      "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/OpenGLBackend.cpp",
                      "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",
                    ],
                    ".",
                    "$dawn_root")
  }

  configs -= [ "//gn:warnings" ]
  if (dawn_enable_vulkan) {
    configs += [ "//:our_vulkan_headers" ]
    include_dirs = [ "../.." ]  # for "include/third_party/vulkan/vulkan/vk_platform.h" in vulkan.h
    sources += rebase_path(
            [
              "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/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/VulkanBackend.cpp",
              "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",
            ],
            ".",
            "$dawn_root")
    if (is_linux) {
      sources += rebase_path(
              [
                "src/dawn_native/vulkan/external_memory/MemoryServiceOpaqueFD.cpp",
                "src/dawn_native/vulkan/external_semaphore/SemaphoreServiceOpaqueFD.cpp",
              ],
              ".",
              "$dawn_root")
    } else {
      sources += rebase_path(
              [
                "src/dawn_native/vulkan/external_memory/MemoryServiceNull.cpp",
                "src/dawn_native/vulkan/external_semaphore/SemaphoreServiceNull.cpp",
              ],
              ".",
              "$dawn_root")
    }
  }
}

config("libdawn_public") {
  include_dirs = [
    "$dawn_gen_root/src/include",
    "$dawn_gen_root/src",
    "$dawn_root/src/include",
    "$dawn_root/src",
  ]
}

config("dawn_internal") {
  include_dirs = [ "$dawn_root/src" ]

  defines = []
  if (dawn_always_assert || is_debug) {
    defines += [ "DAWN_ENABLE_ASSERTS" ]
  }

  if (dawn_enable_d3d12) {
    defines += [ "DAWN_ENABLE_BACKEND_D3D12" ]
  }
  if (dawn_enable_metal) {
    defines += [ "DAWN_ENABLE_BACKEND_METAL" ]
  }
  if (dawn_enable_null) {
    defines += [ "DAWN_ENABLE_BACKEND_NULL" ]
  }
  if (dawn_enable_opengl) {
    defines += [ "DAWN_ENABLE_BACKEND_OPENGL" ]
  }
  if (dawn_enable_vulkan) {
    defines += [ "DAWN_ENABLE_BACKEND_VULKAN" ]
  }

  configs = [ ":libdawn_public" ]

  # Only internal Dawn targets can use this config, this means only targets in
  # this BUILD.gn file.
  visibility = [ ":*" ]
}

static_library("dawn_common") {
  sources = rebase_path([
                          "Assert.cpp",
                          "Assert.h",
                          "BitSetIterator.h",
                          "Compiler.h",
                          "DynamicLib.cpp",
                          "DynamicLib.h",
                          "HashUtils.h",
                          "Math.cpp",
                          "Math.h",
                          "Platform.h",
                          "Result.cpp",
                          "Result.h",
                          "Serial.h",
                          "SerialMap.h",
                          "SerialQueue.h",
                          "SerialStorage.h",
                          "SwapChainUtils.h",
                          "vulkan_platform.h",
                          "windows_with_undefs.h",
                        ],
                        ".",
                        "$dawn_root/src/common")

  configs += [ ":dawn_internal" ]
  deps = [
    ":dawn_headers",
  ]
}

###############################################################################
# Dawn headers and libdawn.so
###############################################################################

dawn_json_generator("dawn_headers_gen") {
  target = "dawn_headers"
  outputs = [
    "src/include/dawn/dawn.h",
    "src/include/dawn/dawn_proc_table.h",
    "src/include/dawn/webgpu.h",
  ]
}

source_set("dawn_headers") {
  public_configs = [ ":libdawn_public" ]
  public_deps = [
    ":dawn_headers_gen",
  ]

  sources = get_target_outputs(":dawn_headers_gen")
  sources += [
    "${dawn_root}/src/include/dawn/dawn_export.h",
    "${dawn_root}/src/include/dawn/dawn_wsi.h",
  ]
}

###############################################################################
# Dawn C++ headers
###############################################################################

dawn_json_generator("dawncpp_headers_gen") {
  target = "dawncpp_headers"
  outputs = [
    "src/include/dawn/dawncpp.h",
    "src/include/dawn/webgpu_cpp.h",
  ]
}

source_set("dawncpp_headers") {
  public_deps = [
    ":dawn_headers",
    ":dawncpp_headers_gen",
  ]

  sources = get_target_outputs(":dawncpp_headers_gen")
  sources += [ "${dawn_root}/src/include/dawn/EnumClassBitmasks.h" ]
}

###############################################################################
# Dawn C++ wrapper
###############################################################################

dawn_json_generator("dawncpp_gen") {
  target = "dawncpp"
  outputs = [
    "src/dawn/webgpu_cpp.cpp",
  ]
}

source_set("dawncpp") {
  deps = [
    ":dawncpp_gen",
    ":dawncpp_headers",
  ]
  sources = get_target_outputs(":dawncpp_gen")
}

###############################################################################
# libdawn_proc
###############################################################################

dawn_json_generator("libdawn_proc_gen") {
  target = "dawn_proc"
  outputs = [
    "src/dawn/dawn_proc.c",
  ]
}

static_library("libdawn_proc") {
  public_deps = [
    ":dawn_headers",
  ]
  deps = [
    ":libdawn_proc_gen",
  ]
  sources = get_target_outputs(":libdawn_proc_gen")
  sources += [ "${dawn_root}/src/include/dawn/dawn_proc.h" ]
}
