| # Copyright 2017 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. |
| |
| set(DAWN_NATIVE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) |
| set(D3D12_DIR ${CMAKE_CURRENT_SOURCE_DIR}/d3d12) |
| set(METAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/metal) |
| set(NULL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/null) |
| set(OPENGL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/opengl) |
| set(VULKAN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vulkan) |
| set(DAWN_NATIVE_INCLUDE_DIR ${INCLUDE_DIR}/dawn_native) |
| |
| Generate( |
| LIB_NAME dawn_native_utils_autogen |
| LIB_TYPE STATIC |
| FOLDER "dawn_native" |
| PRINT_NAME "Autogenerated dawn_native utilities" |
| COMMAND_LINE_ARGS |
| ${GENERATOR_COMMON_ARGS} |
| -T dawn_native_utils |
| ) |
| |
| set(DAWN_NATIVE_SOURCES) |
| set(DAWN_NATIVE_DEPS dawn_common spirv_cross dawn_native_utils_autogen SPIRV-Tools) |
| set(DAWN_NATIVE_INCLUDE_DIRS ${SPIRV_CROSS_INCLUDE_DIR} ${SPIRV_TOOLS_INCLUDE_DIR}) |
| |
| ################################################################################ |
| # OpenGL Backend |
| ################################################################################ |
| |
| if (DAWN_ENABLE_OPENGL) |
| list(APPEND DAWN_NATIVE_DEPS glad) |
| list(APPEND DAWN_NATIVE_INCLUDE_DIRS ${GLAD_INCLUDE_DIR}) |
| list(APPEND DAWN_NATIVE_SOURCES |
| ${OPENGL_DIR}/BlendStateGL.cpp |
| ${OPENGL_DIR}/BlendStateGL.h |
| ${OPENGL_DIR}/BufferGL.cpp |
| ${OPENGL_DIR}/BufferGL.h |
| ${OPENGL_DIR}/CommandBufferGL.cpp |
| ${OPENGL_DIR}/CommandBufferGL.h |
| ${OPENGL_DIR}/ComputePipelineGL.cpp |
| ${OPENGL_DIR}/ComputePipelineGL.h |
| ${OPENGL_DIR}/DepthStencilStateGL.cpp |
| ${OPENGL_DIR}/DepthStencilStateGL.h |
| ${OPENGL_DIR}/DeviceGL.cpp |
| ${OPENGL_DIR}/DeviceGL.h |
| ${OPENGL_DIR}/Forward.h |
| ${OPENGL_DIR}/InputStateGL.cpp |
| ${OPENGL_DIR}/InputStateGL.h |
| ${OPENGL_DIR}/PersistentPipelineStateGL.cpp |
| ${OPENGL_DIR}/PersistentPipelineStateGL.h |
| ${OPENGL_DIR}/PipelineGL.cpp |
| ${OPENGL_DIR}/PipelineGL.h |
| ${OPENGL_DIR}/PipelineLayoutGL.cpp |
| ${OPENGL_DIR}/PipelineLayoutGL.h |
| ${OPENGL_DIR}/QueueGL.cpp |
| ${OPENGL_DIR}/QueueGL.h |
| ${OPENGL_DIR}/RenderPipelineGL.cpp |
| ${OPENGL_DIR}/RenderPipelineGL.h |
| ${OPENGL_DIR}/SamplerGL.cpp |
| ${OPENGL_DIR}/SamplerGL.h |
| ${OPENGL_DIR}/ShaderModuleGL.cpp |
| ${OPENGL_DIR}/ShaderModuleGL.h |
| ${OPENGL_DIR}/SwapChainGL.cpp |
| ${OPENGL_DIR}/SwapChainGL.h |
| ${OPENGL_DIR}/TextureGL.cpp |
| ${OPENGL_DIR}/TextureGL.h |
| ${DAWN_NATIVE_INCLUDE_DIR}/OpenGLBackend.h |
| ) |
| endif() |
| |
| ################################################################################ |
| # Null Backend |
| ################################################################################ |
| |
| if (DAWN_ENABLE_NULL) |
| list(APPEND DAWN_NATIVE_SOURCES |
| ${NULL_DIR}/NullBackend.cpp |
| ${NULL_DIR}/NullBackend.h |
| ${DAWN_NATIVE_INCLUDE_DIR}/NullBackend.h |
| ) |
| endif() |
| |
| ################################################################################ |
| # Metal Backend |
| ################################################################################ |
| |
| if (DAWN_ENABLE_METAL) |
| list(APPEND DAWN_NATIVE_DEPS "-framework Metal" "-framework Cocoa") |
| |
| list(APPEND DAWN_NATIVE_SOURCES |
| ${METAL_DIR}/BlendStateMTL.mm |
| ${METAL_DIR}/BlendStateMTL.h |
| ${METAL_DIR}/BufferMTL.mm |
| ${METAL_DIR}/BufferMTL.h |
| ${METAL_DIR}/CommandBufferMTL.mm |
| ${METAL_DIR}/CommandBufferMTL.h |
| ${METAL_DIR}/ComputePipelineMTL.mm |
| ${METAL_DIR}/ComputePipelineMTL.h |
| ${METAL_DIR}/DepthStencilStateMTL.mm |
| ${METAL_DIR}/DepthStencilStateMTL.h |
| ${METAL_DIR}/DeviceMTL.mm |
| ${METAL_DIR}/DeviceMTL.h |
| ${METAL_DIR}/Forward.h |
| ${METAL_DIR}/InputStateMTL.mm |
| ${METAL_DIR}/InputStateMTL.h |
| ${METAL_DIR}/PipelineLayoutMTL.mm |
| ${METAL_DIR}/PipelineLayoutMTL.h |
| ${METAL_DIR}/QueueMTL.mm |
| ${METAL_DIR}/QueueMTL.h |
| ${METAL_DIR}/RenderPipelineMTL.mm |
| ${METAL_DIR}/RenderPipelineMTL.h |
| ${METAL_DIR}/ResourceUploader.mm |
| ${METAL_DIR}/ResourceUploader.h |
| ${METAL_DIR}/SamplerMTL.mm |
| ${METAL_DIR}/SamplerMTL.h |
| ${METAL_DIR}/ShaderModuleMTL.mm |
| ${METAL_DIR}/ShaderModuleMTL.h |
| ${METAL_DIR}/SwapChainMTL.mm |
| ${METAL_DIR}/SwapChainMTL.h |
| ${METAL_DIR}/TextureMTL.mm |
| ${METAL_DIR}/TextureMTL.h |
| ${DAWN_NATIVE_INCLUDE_DIR}/MetalBackend.h |
| ) |
| endif() |
| |
| ################################################################################ |
| # D3D12 Backend |
| ################################################################################ |
| |
| if (DAWN_ENABLE_D3D12) |
| # WIN10_SDK_PATH will be something like C:\Program Files (x86)\Windows Kits\10 |
| get_filename_component(WIN10_SDK_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;InstallationFolder]" ABSOLUTE CACHE) |
| |
| # TEMP_WIN10_SDK_VERSION will be something like ${CMAKE_CURRENT_SOURCE_DIR}\10.0.14393 or ${CMAKE_CURRENT_SOURCE_DIR}\10.0.14393.0 |
| get_filename_component(TEMP_WIN10_SDK_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;ProductVersion]" ABSOLUTE CACHE) |
| |
| # strip off ${CMAKE_CURRENT_SOURCE_DIR} to get just the version number |
| get_filename_component(WIN10_SDK_VERSION ${TEMP_WIN10_SDK_VERSION} NAME) |
| # WIN10_SDK_VERSION will be something like 10.0.14393 or 10.0.14393.0; we need the one that matches the directory name. |
| if (IS_DIRECTORY "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}.0") |
| set(WIN10_SDK_VERSION "${WIN10_SDK_VERSION}.0") |
| endif() |
| |
| # Find the d3d12 and dxgi include path, it will typically look something like this. |
| # C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\d3d12.h |
| # C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared\dxgi1_4.h |
| find_path(D3D12_INCLUDE_DIR # Set variable D3D12_INCLUDE_DIR |
| d3d12.h # Find a path with d3d12.h |
| HINTS "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}/um" |
| DOC "path to WIN10 SDK header files" |
| HINTS |
| ) |
| |
| find_path(DXGI_INCLUDE_DIR # Set variable DXGI_INCLUDE_DIR |
| dxgi1_4.h # Find a path with dxgi1_4.h |
| HINTS "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}/shared" |
| DOC "path to WIN10 SDK header files" |
| HINTS |
| ) |
| |
| if (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" ) |
| set(WIN10_SDK_LIB_PATH ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm) |
| elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" ) |
| set(WIN10_SDK_LIB_PATH ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm64) |
| elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*Win64" ) |
| set(WIN10_SDK_LIB_PATH ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x64) |
| else() |
| set(WIN10_SDK_LIB_PATH ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x86) |
| endif() |
| |
| find_library(D3D12_LIBRARY NAMES d3d12.lib HINTS ${WIN10_SDK_LIB_PATH}) |
| find_library(DXGI_LIBRARY NAMES dxgi.lib HINTS ${WIN10_SDK_LIB_PATH}) |
| find_library(D3DCOMPILER_LIBRARY NAMES d3dcompiler.lib HINTS ${WIN10_SDK_LIB_PATH}) |
| |
| list(APPEND D3D12_LIBRARIES |
| ${D3D12_LIBRARY} |
| ${DXGI_LIBRARY} |
| ${D3DCOMPILER_LIBRARY} |
| ) |
| |
| if (CMAKE_BUILD_TYPE STREQUAL "Debug") |
| find_library(DXGUID_LIBRARY NAMES dxguid.lib HINTS ${WIN10_SDK_LIB_PATH}) |
| list(APPEND D3D12_LIBRARIES ${DXGUID_LIBRARY}) |
| endif() |
| |
| list(APPEND DAWN_NATIVE_DEPS ${D3D12_LIBRARIES}) |
| list(APPEND DAWN_NATIVE_INCLUDE_DIRS ${D3D12_INCLUDE_DIR} ${DXGI_INCLUDE_DIR}) |
| list(APPEND DAWN_NATIVE_SOURCES |
| ${D3D12_DIR}/d3d12_platform.h |
| ${D3D12_DIR}/BindGroupD3D12.cpp |
| ${D3D12_DIR}/BindGroupD3D12.h |
| ${D3D12_DIR}/BindGroupLayoutD3D12.cpp |
| ${D3D12_DIR}/BindGroupLayoutD3D12.h |
| ${D3D12_DIR}/BlendStateD3D12.cpp |
| ${D3D12_DIR}/BlendStateD3D12.h |
| ${D3D12_DIR}/BufferD3D12.cpp |
| ${D3D12_DIR}/BufferD3D12.h |
| ${D3D12_DIR}/CommandAllocatorManager.cpp |
| ${D3D12_DIR}/CommandAllocatorManager.h |
| ${D3D12_DIR}/CommandBufferD3D12.cpp |
| ${D3D12_DIR}/CommandBufferD3D12.h |
| ${D3D12_DIR}/ComputePipelineD3D12.cpp |
| ${D3D12_DIR}/ComputePipelineD3D12.h |
| ${D3D12_DIR}/DepthStencilStateD3D12.cpp |
| ${D3D12_DIR}/DepthStencilStateD3D12.h |
| ${D3D12_DIR}/DescriptorHeapAllocator.cpp |
| ${D3D12_DIR}/DescriptorHeapAllocator.h |
| ${D3D12_DIR}/DeviceD3D12.cpp |
| ${D3D12_DIR}/DeviceD3D12.h |
| ${D3D12_DIR}/Forward.h |
| ${D3D12_DIR}/InputStateD3D12.cpp |
| ${D3D12_DIR}/InputStateD3D12.h |
| ${D3D12_DIR}/NativeSwapChainImplD3D12.cpp |
| ${D3D12_DIR}/NativeSwapChainImplD3D12.h |
| ${D3D12_DIR}/PipelineLayoutD3D12.cpp |
| ${D3D12_DIR}/PipelineLayoutD3D12.h |
| ${D3D12_DIR}/PlatformFunctions.cpp |
| ${D3D12_DIR}/PlatformFunctions.h |
| ${D3D12_DIR}/QueueD3D12.cpp |
| ${D3D12_DIR}/QueueD3D12.h |
| ${D3D12_DIR}/RenderPassDescriptorD3D12.cpp |
| ${D3D12_DIR}/RenderPassDescriptorD3D12.h |
| ${D3D12_DIR}/RenderPipelineD3D12.cpp |
| ${D3D12_DIR}/RenderPipelineD3D12.h |
| ${D3D12_DIR}/ResourceAllocator.cpp |
| ${D3D12_DIR}/ResourceAllocator.h |
| ${D3D12_DIR}/ResourceUploader.cpp |
| ${D3D12_DIR}/ResourceUploader.h |
| ${D3D12_DIR}/SamplerD3D12.cpp |
| ${D3D12_DIR}/SamplerD3D12.h |
| ${D3D12_DIR}/ShaderModuleD3D12.cpp |
| ${D3D12_DIR}/ShaderModuleD3D12.h |
| ${D3D12_DIR}/SwapChainD3D12.cpp |
| ${D3D12_DIR}/SwapChainD3D12.h |
| ${D3D12_DIR}/TextureCopySplitter.cpp |
| ${D3D12_DIR}/TextureCopySplitter.h |
| ${D3D12_DIR}/TextureD3D12.cpp |
| ${D3D12_DIR}/TextureD3D12.h |
| ${DAWN_NATIVE_INCLUDE_DIR}/D3D12Backend.h |
| ) |
| endif() |
| |
| ################################################################################ |
| # Vulkan Backend |
| ################################################################################ |
| |
| if (DAWN_ENABLE_VULKAN) |
| list(APPEND DAWN_NATIVE_INCLUDE_DIRS ${VULKAN_HEADERS_INCLUDE_DIR}) |
| list(APPEND DAWN_NATIVE_SOURCES |
| ${VULKAN_DIR}/BindGroupVk.cpp |
| ${VULKAN_DIR}/BindGroupVk.h |
| ${VULKAN_DIR}/BindGroupLayoutVk.cpp |
| ${VULKAN_DIR}/BindGroupLayoutVk.h |
| ${VULKAN_DIR}/BlendStateVk.cpp |
| ${VULKAN_DIR}/BlendStateVk.h |
| ${VULKAN_DIR}/BufferUploader.cpp |
| ${VULKAN_DIR}/BufferUploader.h |
| ${VULKAN_DIR}/BufferVk.cpp |
| ${VULKAN_DIR}/BufferVk.h |
| ${VULKAN_DIR}/CommandBufferVk.cpp |
| ${VULKAN_DIR}/CommandBufferVk.h |
| ${VULKAN_DIR}/ComputePipelineVk.cpp |
| ${VULKAN_DIR}/ComputePipelineVk.h |
| ${VULKAN_DIR}/DeviceVk.cpp |
| ${VULKAN_DIR}/DeviceVk.h |
| ${VULKAN_DIR}/DepthStencilStateVk.cpp |
| ${VULKAN_DIR}/DepthStencilStateVk.h |
| ${VULKAN_DIR}/FencedDeleter.cpp |
| ${VULKAN_DIR}/FencedDeleter.h |
| ${VULKAN_DIR}/Forward.h |
| ${VULKAN_DIR}/InputStateVk.cpp |
| ${VULKAN_DIR}/InputStateVk.h |
| ${VULKAN_DIR}/MemoryAllocator.cpp |
| ${VULKAN_DIR}/MemoryAllocator.h |
| ${VULKAN_DIR}/NativeSwapChainImplVk.cpp |
| ${VULKAN_DIR}/NativeSwapChainImplVk.h |
| ${VULKAN_DIR}/PipelineLayoutVk.cpp |
| ${VULKAN_DIR}/PipelineLayoutVk.h |
| ${VULKAN_DIR}/QueueVk.cpp |
| ${VULKAN_DIR}/QueueVk.h |
| ${VULKAN_DIR}/RenderPassCache.cpp |
| ${VULKAN_DIR}/RenderPassCache.h |
| ${VULKAN_DIR}/RenderPassDescriptorVk.cpp |
| ${VULKAN_DIR}/RenderPassDescriptorVk.h |
| ${VULKAN_DIR}/RenderPipelineVk.cpp |
| ${VULKAN_DIR}/RenderPipelineVk.h |
| ${VULKAN_DIR}/SamplerVk.cpp |
| ${VULKAN_DIR}/SamplerVk.h |
| ${VULKAN_DIR}/ShaderModuleVk.cpp |
| ${VULKAN_DIR}/ShaderModuleVk.h |
| ${VULKAN_DIR}/SwapChainVk.cpp |
| ${VULKAN_DIR}/SwapChainVk.h |
| ${VULKAN_DIR}/TextureVk.cpp |
| ${VULKAN_DIR}/TextureVk.h |
| ${VULKAN_DIR}/VulkanFunctions.cpp |
| ${VULKAN_DIR}/VulkanFunctions.h |
| ${VULKAN_DIR}/VulkanInfo.cpp |
| ${VULKAN_DIR}/VulkanInfo.h |
| ${DAWN_NATIVE_INCLUDE_DIR}/VulkanBackend.h |
| ) |
| endif() |
| |
| ################################################################################ |
| # Common sources and definition of the library |
| ################################################################################ |
| |
| list(APPEND DAWN_NATIVE_SOURCES |
| ${DAWN_NATIVE_DIR}/dawn_platform.h |
| ${DAWN_NATIVE_DIR}/BindGroup.cpp |
| ${DAWN_NATIVE_DIR}/BindGroup.h |
| ${DAWN_NATIVE_DIR}/BindGroupLayout.cpp |
| ${DAWN_NATIVE_DIR}/BindGroupLayout.h |
| ${DAWN_NATIVE_DIR}/BlendState.cpp |
| ${DAWN_NATIVE_DIR}/BlendState.h |
| ${DAWN_NATIVE_DIR}/Builder.cpp |
| ${DAWN_NATIVE_DIR}/Builder.h |
| ${DAWN_NATIVE_DIR}/Buffer.cpp |
| ${DAWN_NATIVE_DIR}/Buffer.h |
| ${DAWN_NATIVE_DIR}/Commands.cpp |
| ${DAWN_NATIVE_DIR}/Commands.h |
| ${DAWN_NATIVE_DIR}/CommandAllocator.cpp |
| ${DAWN_NATIVE_DIR}/CommandAllocator.h |
| ${DAWN_NATIVE_DIR}/CommandBuffer.cpp |
| ${DAWN_NATIVE_DIR}/CommandBuffer.h |
| ${DAWN_NATIVE_DIR}/ComputePassEncoder.cpp |
| ${DAWN_NATIVE_DIR}/ComputePassEncoder.h |
| ${DAWN_NATIVE_DIR}/ComputePipeline.cpp |
| ${DAWN_NATIVE_DIR}/ComputePipeline.h |
| ${DAWN_NATIVE_DIR}/CommandBufferStateTracker.cpp |
| ${DAWN_NATIVE_DIR}/CommandBufferStateTracker.h |
| ${DAWN_NATIVE_DIR}/DawnNative.cpp |
| ${DAWN_NATIVE_DIR}/DepthStencilState.cpp |
| ${DAWN_NATIVE_DIR}/DepthStencilState.h |
| ${DAWN_NATIVE_DIR}/Device.cpp |
| ${DAWN_NATIVE_DIR}/Device.h |
| ${DAWN_NATIVE_DIR}/Error.cpp |
| ${DAWN_NATIVE_DIR}/Error.h |
| ${DAWN_NATIVE_DIR}/ErrorData.cpp |
| ${DAWN_NATIVE_DIR}/ErrorData.h |
| ${DAWN_NATIVE_DIR}/Forward.h |
| ${DAWN_NATIVE_DIR}/InputState.cpp |
| ${DAWN_NATIVE_DIR}/InputState.h |
| ${DAWN_NATIVE_DIR}/ObjectBase.cpp |
| ${DAWN_NATIVE_DIR}/ObjectBase.h |
| ${DAWN_NATIVE_DIR}/PassResourceUsage.h |
| ${DAWN_NATIVE_DIR}/PerStage.cpp |
| ${DAWN_NATIVE_DIR}/PerStage.h |
| ${DAWN_NATIVE_DIR}/Pipeline.cpp |
| ${DAWN_NATIVE_DIR}/Pipeline.h |
| ${DAWN_NATIVE_DIR}/PipelineLayout.cpp |
| ${DAWN_NATIVE_DIR}/PipelineLayout.h |
| ${DAWN_NATIVE_DIR}/ProgrammablePassEncoder.cpp |
| ${DAWN_NATIVE_DIR}/ProgrammablePassEncoder.h |
| ${DAWN_NATIVE_DIR}/Queue.cpp |
| ${DAWN_NATIVE_DIR}/Queue.h |
| ${DAWN_NATIVE_DIR}/RefCounted.cpp |
| ${DAWN_NATIVE_DIR}/RefCounted.h |
| ${DAWN_NATIVE_DIR}/RenderPassDescriptor.cpp |
| ${DAWN_NATIVE_DIR}/RenderPassDescriptor.h |
| ${DAWN_NATIVE_DIR}/RenderPassEncoder.cpp |
| ${DAWN_NATIVE_DIR}/RenderPassEncoder.h |
| ${DAWN_NATIVE_DIR}/RenderPipeline.cpp |
| ${DAWN_NATIVE_DIR}/RenderPipeline.h |
| ${DAWN_NATIVE_DIR}/Sampler.cpp |
| ${DAWN_NATIVE_DIR}/Sampler.h |
| ${DAWN_NATIVE_DIR}/ShaderModule.cpp |
| ${DAWN_NATIVE_DIR}/ShaderModule.h |
| ${DAWN_NATIVE_DIR}/SwapChain.cpp |
| ${DAWN_NATIVE_DIR}/SwapChain.h |
| ${DAWN_NATIVE_DIR}/Texture.cpp |
| ${DAWN_NATIVE_DIR}/Texture.h |
| ${DAWN_NATIVE_DIR}/ToBackend.h |
| ${DAWN_NATIVE_INCLUDE_DIR}/dawn_native_export.h |
| ${DAWN_NATIVE_INCLUDE_DIR}/DawnNative.h |
| ) |
| |
| # We want to produce both a static and a shared libdawn_native library. The static one is for |
| # unittests that need access to all the symbols of the library. The shared one is for the other |
| # users that access libdawn_native through the regular interface. |
| # We use a CMake "OBJECT" library type which allows precompiling the source files and reusing |
| # them for both the static and the shared library. Recent CMake versions make it so if you |
| # depend on an OBJECT library you get its dependencies and source files, which is very similar to |
| # GN's source_set. However the versions of CMake on our test bots is too old and doesn't support |
| # this, so instead we duplicate the deps everywhere. |
| add_library(libdawn_native_objects OBJECT ${DAWN_NATIVE_SOURCES}) |
| DawnInternalTarget("dawn_native" libdawn_native_objects) |
| target_compile_definitions(libdawn_native_objects PRIVATE DAWN_NATIVE_IMPLEMENTATION SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS) |
| target_include_directories(libdawn_native_objects PRIVATE ${DAWN_NATIVE_INCLUDE_DIRS}) |
| add_dependencies(libdawn_native_objects dawn_native_utils_autogen) |
| |
| add_library(libdawn_native SHARED $<TARGET_OBJECTS:libdawn_native_objects>) |
| DawnInternalTarget("dawn_native" libdawn_native) |
| target_link_libraries(libdawn_native PRIVATE ${DAWN_NATIVE_DEPS}) |
| set_property(TARGET libdawn_native PROPERTY OUTPUT_NAME "dawn_native") |
| |
| add_library(libdawn_native_static STATIC $<TARGET_OBJECTS:libdawn_native_objects>) |
| DawnInternalTarget("dawn_native" libdawn_native_static) |
| target_link_libraries(libdawn_native_static ${DAWN_NATIVE_DEPS}) |