# 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")

###############################################################################
# Template to wrap the Dawn code generator
###############################################################################

# Template to help with invocation of the Dawn code generator, looks like this:
#
#   dawn_json_generator("my_target_gen") {
#     # Which generator target to output
#     target = "my_target"
#     # The list of expected outputs, generation fails if there's a mismatch
#     outputs = [
#       "MyTarget.cpp",
#       "MyTarget.h",
#     ]
#   }
#
# Using the generated files is done like so:
#
#   shared_library("my_target") {
#     deps = [ ":my_target_gen "]
#     sources = get_target_outputs(":my_target_gen")
#   }
#
###############################################################################
# Common dawn libraries and configs
###############################################################################

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([
                          "src/common/Assert.cpp",
                          "src/common/Assert.h",
                          "src/common/BitSetIterator.h",
                          "src/common/Compiler.h",
                          "src/common/DynamicLib.cpp",
                          "src/common/DynamicLib.h",
                          "src/common/HashUtils.h",
                          "src/common/Math.cpp",
                          "src/common/Math.h",
                          "src/common/Platform.h",
                          "src/common/Result.cpp",
                          "src/common/Result.h",
                          "src/common/Serial.h",
                          "src/common/SerialMap.h",
                          "src/common/SerialQueue.h",
                          "src/common/SerialStorage.h",
                          "src/common/SwapChainUtils.h",
                          "src/common/vulkan_platform.h",
                          "src/common/windows_with_undefs.h",
                        ],
                        ".",
                        "$dawn_root")

  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_proc_table.h",
    "src/include/dawn/dawn.h",
  ]
}

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

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

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

source_set("dawncpp") {
  deps = [
    ":dawn_headers",
    ":dawncpp_gen",
  ]
  sources = get_target_outputs(":dawncpp_gen")
  sources += [ "${dawn_root}/src/include/dawn/EnumClassBitmasks.h" ]
}

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

static_library("libdawn_proc") {
  public_deps = [
    ":dawn_headers",
  ]

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

###############################################################################
# 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.so
###############################################################################

config("libdawn_native_internal") {
  configs = [ ":dawn_internal" ]
  defines = [ "DAWN_NATIVE_IMPLEMENTATION" ]

  # Suppress warnings that Metal isn't in the deployment target of Chrome
  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/dawn_structs_autogen.h",
    "src/dawn_native/dawn_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 = [
    ":dawn_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")
}

# The meat of the compilation for libdawn_native so that we can cheaply have
# shared_library / static_library / component versions of it.
source_set("libdawn_native_sources") {
  deps = [
    ":dawn_common",
    ":libdawn_native_utils_gen",
    "//third_party/spirv-cross:spirv_cross",
    "//third_party/spirv-tools:spvtools_val",
  ]

  # Put the internal config public so that unittests can see internal headers
  public_configs = [ ":libdawn_native_internal" ]

  # Set the headers as a public dependency so they are visible to unittests
  public_deps = [
    ":dawn_platform",
    ":libdawn_native_headers",
  ]

  libs = []

  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/Buffer.cpp",
                           "src/dawn_native/Buffer.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/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/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/CommittedResourceAllocatorD3D12.cpp",
              "src/dawn_native/d3d12/CommittedResourceAllocatorD3D12.h",
              "src/dawn_native/d3d12/ComputePipelineD3D12.cpp",
              "src/dawn_native/d3d12/ComputePipelineD3D12.h",
              "src/dawn_native/d3d12/D3D12Backend.cpp",
              "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/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/ResourceAllocator.cpp",
              "src/dawn_native/d3d12/ResourceAllocator.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/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/MemoryAllocator.cpp",
              "src/dawn_native/vulkan/MemoryAllocator.h",
              "src/dawn_native/vulkan/MemoryResourceAllocatorVk.cpp",
              "src/dawn_native/vulkan/MemoryResourceAllocatorVk.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/ResourceMemoryVk.cpp",
              "src/dawn_native/vulkan/ResourceMemoryVk.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")
    }
  }
}

# The shared library for libdawn_native for use by samples, tests, etc.
shared_library("libdawn_native") {
  deps = [
    ":libdawn_native_sources",
  ]

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

  # Tell dependents where to find this shared library
  if (is_mac) {
    ldflags = [
      "-install_name",
      "@rpath/${target_name}.dylib",
    ]
  }
}
