| # Copyright 2021 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| # Dawn's Tint libraries are needed to compile SPIR-V into WGSL source code. | |
| # Tint also requires Abseil and SPIRV-Tools, which requires SPIRV-Headers. | |
| # | |
| # NOTE: these can be synced by referencing one of these repositories: | |
| # * https://dawn.googlesource.com/dawn/ | |
| # * https://chromium.googlesource.com/vulkan-deps/+/refs/heads/main/DEPS | |
| # or they can be updated independently | |
| set(IREE_DAWN_TAG "851ba3e50c354ef66d16c518d4341c01ed6828cc") | |
| set(IREE_ABSEIL_TAG "04f3bc01d12cf58c90a1bb68990f087fa3c3ed19") | |
| set(IREE_SPIRV_HEADERS_TAG "465055f6c9128772e20082e893d974146acf7a02") | |
| set(IREE_SPIRV_TOOLS_TAG "5a1eea1546c372a945a27d9b10e0a059db6cc651") | |
| message(STATUS "Configuring WebGPU target deps (SPIRV-Headers, SPIRV-Tools, Abseil, Dawn/Tint)") | |
| list(APPEND CMAKE_MESSAGE_INDENT " ") | |
| add_subdirectory(spirv-headers EXCLUDE_FROM_ALL) | |
| add_subdirectory(spirv-tools EXCLUDE_FROM_ALL) | |
| add_subdirectory(dawn EXCLUDE_FROM_ALL) | |
| list(POP_BACK CMAKE_MESSAGE_INDENT) | |
| add_subdirectory(test) | |
| iree_compiler_register_plugin( | |
| PLUGIN_ID | |
| hal_target_webgpu_spirv | |
| TARGET | |
| ::WebGPUSPIRV | |
| ) | |
| iree_cc_library( | |
| NAME | |
| SPIRVToWGSL | |
| HDRS | |
| "SPIRVToWGSL.h" | |
| SRCS | |
| "SPIRVToWGSL.cpp" | |
| DEPS | |
| LLVMSupport | |
| SPIRV-Tools | |
| libtint | |
| PUBLIC | |
| ) | |
| # Tint's public headers use C++20 features such as concepts and std::span. | |
| iree_package_name(_WEBGPU_SPIRV_PACKAGE_NAME) | |
| set_property( | |
| TARGET ${_WEBGPU_SPIRV_PACKAGE_NAME}_SPIRVToWGSL.objects | |
| PROPERTY CXX_STANDARD 20 | |
| ) | |
| if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") | |
| target_compile_options(${_WEBGPU_SPIRV_PACKAGE_NAME}_SPIRVToWGSL.objects | |
| PRIVATE | |
| -Wno-unknown-warning-option | |
| ) | |
| endif() | |
| iree_cc_library( | |
| NAME | |
| WebGPUSPIRV | |
| SRCS | |
| "WebGPUSPIRVTarget.cpp" | |
| DEPS | |
| ::SPIRVToWGSL | |
| LLVMSupport | |
| MLIRGPUDialect | |
| MLIRIR | |
| MLIRSPIRVDialect | |
| MLIRSPIRVSerialization | |
| MLIRSPIRVTransforms | |
| iree::compiler::Codegen::Common::PassHeaders | |
| iree::compiler::Codegen::Dialect::Codegen::IR::IREECodegenDialect | |
| iree::compiler::Codegen::Dialect::GPU::TargetUtils::KnownTargets | |
| iree::compiler::Codegen::SPIRV | |
| iree::compiler::Codegen::WGSL | |
| iree::compiler::Dialect::Flow::IR | |
| iree::compiler::Dialect::HAL::Target | |
| iree::compiler::Dialect::HAL::Utils::ExecutableDebugInfoUtils | |
| iree::compiler::PluginAPI | |
| iree::compiler::Utils | |
| iree::schemas::executable_debug_info_c_fbs | |
| iree::schemas::webgpu_executable_def_c_fbs | |
| PUBLIC | |
| ) |