# Copyright 2020 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.

DawnJSONGenerator(
    TARGET "native_utils"
    PRINT_NAME "Dawn native utilities"
    RESULT_VARIABLE "DAWN_NATIVE_UTILS_GEN_SOURCES"
)

add_library(dawn_native ${DAWN_PLACEHOLDER_FILE})
common_compile_options(dawn_native)

target_compile_definitions(dawn_native PRIVATE "DAWN_NATIVE_IMPLEMENTATION")
if(BUILD_SHARED_LIBS)
    target_compile_definitions(dawn_native PRIVATE "DAWN_NATIVE_SHARED_LIBRARY")
endif()

target_sources(dawn_native PRIVATE
    "${DAWN_INCLUDE_DIR}/dawn/native/DawnNative.h"
    "${DAWN_INCLUDE_DIR}/dawn/native/dawn_native_export.h"
    ${DAWN_NATIVE_UTILS_GEN_SOURCES}
    "Adapter.cpp"
    "Adapter.h"
    "ApplyClearColorValueWithDrawHelper.cpp"
    "ApplyClearColorValueWithDrawHelper.h"
    "AsyncTask.cpp"
    "AsyncTask.h"
    "AttachmentState.cpp"
    "AttachmentState.h"
    "BackendConnection.cpp"
    "BackendConnection.h"
    "BindGroup.cpp"
    "BindGroup.h"
    "BindGroupLayout.cpp"
    "BindGroupLayout.h"
    "BindGroupTracker.h"
    "BindingInfo.cpp"
    "BindingInfo.h"
    "BlitBufferToDepthStencil.cpp"
    "BlitBufferToDepthStencil.h"
    "BlitDepthToDepth.cpp"
    "BlitDepthToDepth.h"
    "Blob.cpp"
    "Blob.h"
    "BlobCache.cpp"
    "BlobCache.h"
    "BuddyAllocator.cpp"
    "BuddyAllocator.h"
    "BuddyMemoryAllocator.cpp"
    "BuddyMemoryAllocator.h"
    "Buffer.cpp"
    "Buffer.h"
    "CachedObject.cpp"
    "CachedObject.h"
    "CacheKey.cpp"
    "CacheKey.h"
    "CacheRequest.cpp"
    "CacheRequest.h"
    "CacheResult.h"
    "CallbackTaskManager.cpp"
    "CallbackTaskManager.h"
    "CommandAllocator.cpp"
    "CommandAllocator.h"
    "CommandBuffer.cpp"
    "CommandBuffer.h"
    "CommandBufferStateTracker.cpp"
    "CommandBufferStateTracker.h"
    "CommandEncoder.cpp"
    "CommandEncoder.h"
    "CommandValidation.cpp"
    "CommandValidation.h"
    "Commands.cpp"
    "Commands.h"
    "CompilationMessages.cpp"
    "CompilationMessages.h"
    "ComputePassEncoder.cpp"
    "ComputePassEncoder.h"
    "ComputePipeline.cpp"
    "ComputePipeline.h"
    "CopyTextureForBrowserHelper.cpp"
    "CopyTextureForBrowserHelper.h"
    "CreatePipelineAsyncTask.cpp"
    "CreatePipelineAsyncTask.h"
    "Device.cpp"
    "Device.h"
    "DynamicUploader.cpp"
    "DynamicUploader.h"
    "EncodingContext.cpp"
    "EncodingContext.h"
    "EnumClassBitmasks.h"
    "EnumMaskIterator.h"
    "Error.cpp"
    "Error.h"
    "ErrorData.cpp"
    "ErrorData.h"
    "ErrorInjector.cpp"
    "ErrorInjector.h"
    "ErrorScope.cpp"
    "ErrorScope.h"
    "Features.cpp"
    "Features.h"
    "ExternalTexture.cpp"
    "ExternalTexture.h"
    "IndirectDrawMetadata.cpp"
    "IndirectDrawMetadata.h"
    "IndirectDrawValidationEncoder.cpp"
    "IndirectDrawValidationEncoder.h"
    "ObjectContentHasher.cpp"
    "ObjectContentHasher.h"
    "Format.cpp"
    "Format.h"
    "Forward.h"
    "Instance.cpp"
    "Instance.h"
    "InternalPipelineStore.cpp"
    "InternalPipelineStore.h"
    "IntegerTypes.h"
    "Limits.cpp"
    "Limits.h"
    "ObjectBase.cpp"
    "ObjectBase.h"
    "PassResourceUsage.cpp"
    "PassResourceUsage.h"
    "PassResourceUsageTracker.cpp"
    "PassResourceUsageTracker.h"
    "PerStage.cpp"
    "PerStage.h"
    "Pipeline.cpp"
    "Pipeline.h"
    "PipelineCache.cpp"
    "PipelineCache.h"
    "PipelineLayout.cpp"
    "PipelineLayout.h"
    "PooledResourceMemoryAllocator.cpp"
    "PooledResourceMemoryAllocator.h"
    "ProgrammableEncoder.cpp"
    "ProgrammableEncoder.h"
    "QueryHelper.cpp"
    "QueryHelper.h"
    "QuerySet.cpp"
    "QuerySet.h"
    "Queue.cpp"
    "Queue.h"
    "RefCountedWithExternalCount.cpp"
    "RefCountedWithExternalCount.h"
    "RenderBundle.cpp"
    "RenderBundle.h"
    "RenderBundleEncoder.cpp"
    "RenderBundleEncoder.h"
    "RenderEncoderBase.cpp"
    "RenderEncoderBase.h"
    "RenderPassEncoder.cpp"
    "RenderPassEncoder.h"
    "RenderPipeline.cpp"
    "RenderPipeline.h"
    "ResourceHeap.h"
    "ResourceHeapAllocator.h"
    "ResourceMemoryAllocation.cpp"
    "ResourceMemoryAllocation.h"
    "RingBufferAllocator.cpp"
    "RingBufferAllocator.h"
    "Sampler.cpp"
    "Sampler.h"
    "ScratchBuffer.cpp"
    "ScratchBuffer.h"
    "Serializable.h"
    "ShaderModule.cpp"
    "ShaderModule.h"
    "StreamImplTint.cpp"
    "Subresource.cpp"
    "Subresource.h"
    "SubresourceStorage.h"
    "Surface.cpp"
    "Surface.h"
    "SwapChain.cpp"
    "SwapChain.h"
    "Texture.cpp"
    "Texture.h"
    "TintUtils.cpp"
    "TintUtils.h"
    "ToBackend.h"
    "Toggles.cpp"
    "Toggles.h"
    "UsageValidationMode.h"
    "VertexFormat.cpp"
    "VertexFormat.h"
    "VisitableMembers.h"
    "dawn_platform.h"
    "webgpu_absl_format.cpp"
    "webgpu_absl_format.h"
    "stream/BlobSource.cpp"
    "stream/BlobSource.h"
    "stream/ByteVectorSink.cpp"
    "stream/ByteVectorSink.h"
    "stream/Sink.h"
    "stream/Source.h"
    "stream/Stream.cpp"
    "stream/Stream.h"
    "utils/WGPUHelpers.cpp"
    "utils/WGPUHelpers.h"
)
target_link_libraries(dawn_native
    PUBLIC dawncpp_headers
    PRIVATE dawn_common
            dawn_platform
            dawn_internal_config
            libtint
            SPIRV-Tools-opt
            absl_strings
            absl_str_format_internal
)

target_include_directories(dawn_native PRIVATE ${DAWN_ABSEIL_DIR})

if (DAWN_USE_X11)
    find_package(X11 REQUIRED)
    target_link_libraries(dawn_native PRIVATE ${X11_LIBRARIES})
    target_include_directories(dawn_native PRIVATE ${X11_INCLUDE_DIR})
    target_sources(dawn_native PRIVATE
        "XlibXcbFunctions.cpp"
        "XlibXcbFunctions.h"
    )
endif()

# Only win32 app needs to link with user32.lib
# In UWP, all availiable APIs are defined in WindowsApp.lib
# and is automatically linked when WINDOWS_STORE set
if (WIN32 AND NOT WINDOWS_STORE)
    target_link_libraries(dawn_native PRIVATE user32.lib)
endif()

# DXGIGetDebugInterface1 is defined in dxgi.lib
# But this API is tagged as a development-only capability
# which implies that linking to this function will cause
# the application to fail Windows store certification
# So we only link to it in debug build when compiling for UWP.
# In win32 we load dxgi.dll using LoadLibrary
# so no need for static linking.
if (WINDOWS_STORE)
    target_link_libraries(dawn_native PRIVATE debug dxgi.lib)
endif()

if (DAWN_ENABLE_D3D12)
    target_sources(dawn_native PRIVATE
        "d3d/AdapterD3D.cpp"
        "d3d/AdapterD3D.h"
        "d3d/BackendD3D.cpp"
        "d3d/BackendD3D.h"
        "d3d/BlobD3D.cpp"
        "d3d/BlobD3D.h"
        "d3d/D3DError.cpp"
        "d3d/D3DError.h"
        "d3d/PlatformFunctions.cpp"
        "d3d/PlatformFunctions.h"
        "d3d/UtilsD3D.cpp"
        "d3d/UtilsD3D.h"
        "d3d/d3d_platform.h"
    )
endif()

if (DAWN_ENABLE_D3D12)
    target_sources(dawn_native PRIVATE
        "${DAWN_INCLUDE_DIR}/dawn/native/D3D12Backend.h"
        "d3d12/AdapterD3D12.cpp"
        "d3d12/AdapterD3D12.h"
        "d3d12/BackendD3D12.cpp"
        "d3d12/BackendD3D12.h"
        "d3d12/BindGroupD3D12.cpp"
        "d3d12/BindGroupD3D12.h"
        "d3d12/BindGroupLayoutD3D12.cpp"
        "d3d12/BindGroupLayoutD3D12.h"
        "d3d12/BufferD3D12.cpp"
        "d3d12/BufferD3D12.h"
        "d3d12/CPUDescriptorHeapAllocationD3D12.cpp"
        "d3d12/CPUDescriptorHeapAllocationD3D12.h"
        "d3d12/CommandAllocatorManager.cpp"
        "d3d12/CommandAllocatorManager.h"
        "d3d12/CommandBufferD3D12.cpp"
        "d3d12/CommandBufferD3D12.h"
        "d3d12/CommandRecordingContext.cpp"
        "d3d12/CommandRecordingContext.h"
        "d3d12/ComputePipelineD3D12.cpp"
        "d3d12/ComputePipelineD3D12.h"
        "d3d12/D3D11on12Util.cpp"
        "d3d12/D3D11on12Util.h"
        "d3d12/D3D12Info.cpp"
        "d3d12/D3D12Info.h"
        "d3d12/DeviceD3D12.cpp"
        "d3d12/DeviceD3D12.h"
        "d3d12/ExternalImageDXGIImpl.cpp"
        "d3d12/ExternalImageDXGIImpl.h"
        "d3d12/FenceD3D12.cpp"
        "d3d12/FenceD3D12.h"
        "d3d12/Forward.h"
        "d3d12/GPUDescriptorHeapAllocationD3D12.cpp"
        "d3d12/GPUDescriptorHeapAllocationD3D12.h"
        "d3d12/HeapAllocatorD3D12.cpp"
        "d3d12/HeapAllocatorD3D12.h"
        "d3d12/HeapD3D12.cpp"
        "d3d12/HeapD3D12.h"
        "d3d12/IntegerTypes.h"
        "d3d12/NativeSwapChainImplD3D12.cpp"
        "d3d12/NativeSwapChainImplD3D12.h"
        "d3d12/PageableD3D12.cpp"
        "d3d12/PageableD3D12.h"
        "d3d12/PipelineLayoutD3D12.cpp"
        "d3d12/PipelineLayoutD3D12.h"
        "d3d12/PlatformFunctionsD3D12.cpp"
        "d3d12/PlatformFunctionsD3D12.h"
        "d3d12/QuerySetD3D12.cpp"
        "d3d12/QuerySetD3D12.h"
        "d3d12/QueueD3D12.cpp"
        "d3d12/QueueD3D12.h"
        "d3d12/RenderPassBuilderD3D12.cpp"
        "d3d12/RenderPassBuilderD3D12.h"
        "d3d12/RenderPipelineD3D12.cpp"
        "d3d12/RenderPipelineD3D12.h"
        "d3d12/ResidencyManagerD3D12.cpp"
        "d3d12/ResidencyManagerD3D12.h"
        "d3d12/ResourceAllocatorManagerD3D12.cpp"
        "d3d12/ResourceAllocatorManagerD3D12.h"
        "d3d12/ResourceHeapAllocationD3D12.cpp"
        "d3d12/ResourceHeapAllocationD3D12.h"
        "d3d12/SamplerD3D12.cpp"
        "d3d12/SamplerD3D12.h"
        "d3d12/SamplerHeapCacheD3D12.cpp"
        "d3d12/SamplerHeapCacheD3D12.h"
        "d3d12/ShaderModuleD3D12.cpp"
        "d3d12/ShaderModuleD3D12.h"
        "d3d12/ShaderVisibleDescriptorAllocatorD3D12.cpp"
        "d3d12/ShaderVisibleDescriptorAllocatorD3D12.h"
        "d3d12/StagingDescriptorAllocatorD3D12.cpp"
        "d3d12/StagingDescriptorAllocatorD3D12.h"
        "d3d12/StreamImplD3D12.cpp"
        "d3d12/SwapChainD3D12.cpp"
        "d3d12/SwapChainD3D12.h"
        "d3d12/TextureCopySplitter.cpp"
        "d3d12/TextureCopySplitter.h"
        "d3d12/TextureD3D12.cpp"
        "d3d12/TextureD3D12.h"
        "d3d12/UtilsD3D12.cpp"
        "d3d12/UtilsD3D12.h"
        "d3d12/d3d12_platform.h"
    )
    target_link_libraries(dawn_native PRIVATE dxguid.lib)
endif()

if (DAWN_ENABLE_METAL)
    target_sources(dawn_native PRIVATE
        "${DAWN_INCLUDE_DIR}/dawn/native/MetalBackend.h"
        "Surface_metal.mm"
        "metal/BackendMTL.h"
        "metal/BackendMTL.mm"
        "metal/BindGroupLayoutMTL.h"
        "metal/BindGroupLayoutMTL.mm"
        "metal/BindGroupMTL.h"
        "metal/BindGroupMTL.mm"
        "metal/BufferMTL.h"
        "metal/BufferMTL.mm"
        "metal/CommandBufferMTL.h"
        "metal/CommandBufferMTL.mm"
        "metal/CommandRecordingContext.h"
        "metal/CommandRecordingContext.mm"
        "metal/ComputePipelineMTL.h"
        "metal/ComputePipelineMTL.mm"
        "metal/DeviceMTL.h"
        "metal/DeviceMTL.mm"
        "metal/Forward.h"
        "metal/PipelineLayoutMTL.h"
        "metal/PipelineLayoutMTL.mm"
        "metal/QueueMTL.h"
        "metal/QueueMTL.mm"
        "metal/QuerySetMTL.h"
        "metal/QuerySetMTL.mm"
        "metal/RenderPipelineMTL.h"
        "metal/RenderPipelineMTL.mm"
        "metal/SamplerMTL.h"
        "metal/SamplerMTL.mm"
        "metal/ShaderModuleMTL.h"
        "metal/ShaderModuleMTL.mm"
        "metal/SwapChainMTL.h"
        "metal/SwapChainMTL.mm"
        "metal/TextureMTL.h"
        "metal/TextureMTL.mm"
        "metal/UtilsMetal.h"
        "metal/UtilsMetal.mm"
    )
    target_link_libraries(dawn_native PRIVATE
        "-framework Cocoa"
        "-framework IOKit"
        "-framework IOSurface"
        "-framework QuartzCore"
        "-framework Metal"
    )
endif()

if (DAWN_ENABLE_NULL)
    target_sources(dawn_native PRIVATE
        "${DAWN_INCLUDE_DIR}/dawn/native/NullBackend.h"
        "null/DeviceNull.cpp"
        "null/DeviceNull.h"
    )
endif()

if (DAWN_ENABLE_OPENGL OR DAWN_ENABLE_VULKAN)
    target_compile_definitions(dawn_native PRIVATE "DAWN_ENABLE_SPIRV_VALIDATION")
    target_sources(dawn_native PRIVATE
        "SpirvValidation.cpp"
        "SpirvValidation.h"
    )
endif()

if (DAWN_ENABLE_OPENGL)
    DawnGenerator(
        SCRIPT "${Dawn_SOURCE_DIR}/generator/opengl_loader_generator.py"
        PRINT_NAME "OpenGL function loader"
        ARGS "--gl-xml"
             "${Dawn_SOURCE_DIR}/third_party/khronos/gl.xml"
             "--supported-extensions"
             "${Dawn_SOURCE_DIR}/src/dawn/native/opengl/supported_extensions.json"
        RESULT_VARIABLE "DAWN_NATIVE_OPENGL_AUTOGEN_SOURCES"
    )

    target_sources(dawn_native PRIVATE
        "${DAWN_INCLUDE_DIR}/dawn/native/OpenGLBackend.h"
        ${DAWN_NATIVE_OPENGL_AUTOGEN_SOURCES}
        "opengl/AdapterGL.cpp"
        "opengl/AdapterGL.h"
        "opengl/BackendGL.cpp"
        "opengl/BackendGL.h"
        "opengl/BindGroupGL.cpp"
        "opengl/BindGroupGL.h"
        "opengl/BindGroupLayoutGL.cpp"
        "opengl/BindGroupLayoutGL.h"
        "opengl/BufferGL.cpp"
        "opengl/BufferGL.h"
        "opengl/CommandBufferGL.cpp"
        "opengl/CommandBufferGL.h"
        "opengl/ComputePipelineGL.cpp"
        "opengl/ComputePipelineGL.h"
        "opengl/ContextEGL.cpp"
        "opengl/ContextEGL.h"
        "opengl/DeviceGL.cpp"
        "opengl/DeviceGL.h"
        "opengl/EGLFunctions.cpp"
        "opengl/EGLFunctions.h"
        "opengl/Forward.h"
        "opengl/GLFormat.cpp"
        "opengl/GLFormat.h"
        "opengl/NativeSwapChainImplGL.cpp"
        "opengl/NativeSwapChainImplGL.h"
        "opengl/OpenGLFunctions.cpp"
        "opengl/OpenGLFunctions.h"
        "opengl/OpenGLVersion.cpp"
        "opengl/OpenGLVersion.h"
        "opengl/PersistentPipelineStateGL.cpp"
        "opengl/PersistentPipelineStateGL.h"
        "opengl/PipelineGL.cpp"
        "opengl/PipelineGL.h"
        "opengl/PipelineLayoutGL.cpp"
        "opengl/PipelineLayoutGL.h"
        "opengl/QuerySetGL.cpp"
        "opengl/QuerySetGL.h"
        "opengl/QueueGL.cpp"
        "opengl/QueueGL.h"
        "opengl/RenderPipelineGL.cpp"
        "opengl/RenderPipelineGL.h"
        "opengl/SamplerGL.cpp"
        "opengl/SamplerGL.h"
        "opengl/ShaderModuleGL.cpp"
        "opengl/ShaderModuleGL.h"
        "opengl/SwapChainGL.cpp"
        "opengl/SwapChainGL.h"
        "opengl/TextureGL.cpp"
        "opengl/TextureGL.h"
        "opengl/UtilsEGL.cpp"
        "opengl/UtilsEGL.h"
        "opengl/UtilsGL.cpp"
        "opengl/UtilsGL.h"
        "opengl/opengl_platform.h"
    )

    target_include_directories(dawn_native PRIVATE ${DAWN_KHRONOS_DIR})
    target_link_libraries(dawn_native PRIVATE dawn_khronos_platform)
endif()

if (DAWN_ENABLE_SWIFTSHADER)
    target_compile_definitions(dawn_native PRIVATE "DAWN_ENABLE_SWIFTSHADER")
endif()

if (DAWN_ENABLE_VULKAN)
    target_sources(dawn_native PRIVATE
        "${DAWN_INCLUDE_DIR}/dawn/native/VulkanBackend.h"
        "vulkan/AdapterVk.cpp"
        "vulkan/AdapterVk.h"
        "vulkan/BackendVk.cpp"
        "vulkan/BackendVk.h"
        "vulkan/BindGroupLayoutVk.cpp"
        "vulkan/BindGroupLayoutVk.h"
        "vulkan/BindGroupVk.cpp"
        "vulkan/BindGroupVk.h"
        "vulkan/BufferVk.cpp"
        "vulkan/BufferVk.h"
        "vulkan/CommandBufferVk.cpp"
        "vulkan/CommandBufferVk.h"
        "vulkan/CommandRecordingContext.h"
        "vulkan/ComputePipelineVk.cpp"
        "vulkan/ComputePipelineVk.h"
        "vulkan/DescriptorSetAllocation.h"
        "vulkan/DescriptorSetAllocator.cpp"
        "vulkan/DescriptorSetAllocator.h"
        "vulkan/DeviceVk.cpp"
        "vulkan/DeviceVk.h"
        "vulkan/ExternalHandle.h"
        "vulkan/FencedDeleter.cpp"
        "vulkan/FencedDeleter.h"
        "vulkan/Forward.h"
        "vulkan/NativeSwapChainImplVk.cpp"
        "vulkan/NativeSwapChainImplVk.h"
        "vulkan/PipelineCacheVk.cpp"
        "vulkan/PipelineCacheVk.h"
        "vulkan/PipelineLayoutVk.cpp"
        "vulkan/PipelineLayoutVk.h"
        "vulkan/QuerySetVk.cpp"
        "vulkan/QuerySetVk.h"
        "vulkan/QueueVk.cpp"
        "vulkan/QueueVk.h"
        "vulkan/RenderPassCache.cpp"
        "vulkan/RenderPassCache.h"
        "vulkan/RenderPipelineVk.cpp"
        "vulkan/RenderPipelineVk.h"
        "vulkan/ResourceHeapVk.cpp"
        "vulkan/ResourceHeapVk.h"
        "vulkan/ResourceMemoryAllocatorVk.cpp"
        "vulkan/ResourceMemoryAllocatorVk.h"
        "vulkan/SamplerVk.cpp"
        "vulkan/SamplerVk.h"
        "vulkan/ShaderModuleVk.cpp"
        "vulkan/ShaderModuleVk.h"
        "vulkan/StreamImplVk.cpp"
        "vulkan/SwapChainVk.cpp"
        "vulkan/SwapChainVk.h"
        "vulkan/TextureVk.cpp"
        "vulkan/TextureVk.h"
        "vulkan/UtilsVulkan.cpp"
        "vulkan/UtilsVulkan.h"
        "vulkan/VulkanError.cpp"
        "vulkan/VulkanError.h"
        "vulkan/VulkanExtensions.cpp"
        "vulkan/VulkanExtensions.h"
        "vulkan/VulkanFunctions.cpp"
        "vulkan/VulkanFunctions.h"
        "vulkan/VulkanInfo.cpp"
        "vulkan/VulkanInfo.h"
        "vulkan/external_memory/MemoryService.cpp"
        "vulkan/external_memory/MemoryService.h"
        "vulkan/external_semaphore/SemaphoreService.cpp"
        "vulkan/external_semaphore/SemaphoreService.h"
        "vulkan/external_semaphore/ServiceImplementation.cpp"
        "vulkan/external_semaphore/ServiceImplementation.h"
    )

    target_link_libraries(dawn_native PUBLIC Vulkan-Headers)
    target_include_directories(dawn_native PRIVATE ${DAWN_VULKAN_TOOLS_DIR})

    if (UNIX AND NOT APPLE)
        target_sources(dawn_native PRIVATE
            "vulkan/external_memory/MemoryServiceOpaqueFD.cpp"
            "vulkan/external_semaphore/ServiceImplementationFD.cpp"
            "vulkan/external_semaphore/ServiceImplementationFD.h"
        )
    else()
        target_sources(dawn_native PRIVATE
            "vulkan/external_memory/MemoryServiceNull.cpp"
        )
    endif()
endif()

# TODO how to do the component build in CMake?
target_sources(dawn_native PRIVATE "DawnNative.cpp")
if (DAWN_ENABLE_D3D12)
    target_sources(dawn_native PRIVATE "d3d12/D3D12Backend.cpp")
endif()
if (DAWN_ENABLE_METAL)
    target_sources(dawn_native PRIVATE "metal/MetalBackend.mm")
endif()
if (DAWN_ENABLE_NULL)
    target_sources(dawn_native PRIVATE "null/NullBackend.cpp")
endif()
if (DAWN_ENABLE_OPENGL)
    target_sources(dawn_native PRIVATE "opengl/OpenGLBackend.cpp")
endif()
if (DAWN_ENABLE_VULKAN)
    target_sources(dawn_native PRIVATE "vulkan/VulkanBackend.cpp")
endif()

DawnJSONGenerator(
    TARGET "webgpu_dawn_native_proc"
    PRINT_NAME "Dawn native WebGPU procs"
    RESULT_VARIABLE "WEBGPU_DAWN_NATIVE_PROC_GEN"
)

add_library(webgpu_dawn ${DAWN_PLACEHOLDER_FILE})
common_compile_options(webgpu_dawn)
target_link_libraries(webgpu_dawn PRIVATE dawn_native)
target_link_libraries(webgpu_dawn PUBLIC dawn_headers)
target_compile_definitions(webgpu_dawn PRIVATE "WGPU_IMPLEMENTATION")
if(BUILD_SHARED_LIBS)
    target_compile_definitions(webgpu_dawn PRIVATE "WGPU_SHARED_LIBRARY")
endif()
target_sources(webgpu_dawn PRIVATE ${WEBGPU_DAWN_NATIVE_PROC_GEN})
