blob: dc3d8a75c3892da3f700be9a8644f3b74c17eb71 [file]
# Copyright 2024 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
"""Bzlmod extension for IREE repository rules."""
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository", "new_local_repository")
load("//build_tools/bazel:amdgpu_device_toolchain_repo.bzl", "amdgpu_device_toolchain_repo")
load("//build_tools/bazel:workspace.bzl", "cuda_auto_configure")
load("//build_tools/wasm:wasi_sdk_repo.bzl", "wasi_sdk_repo")
def _iree_extension_impl(module_ctx):
"""Implementation of the IREE module extension."""
iree_is_root = any([m.is_root and m.name == "iree_core" for m in module_ctx.modules])
# Create MLIR-adjacent source repositories only when IREE is the root
# module. Downstream consumers can provide their own LLVM, StableHLO, and
# torch-mlir repositories when IREE is part of a larger project.
if iree_is_root:
new_local_repository(
name = "llvm-raw",
build_file_content = "# empty",
path = "third_party/llvm-project",
)
local_repository(
name = "stablehlo",
path = "third_party/stablehlo",
)
new_local_repository(
name = "torch-mlir-raw",
build_file_content = "# empty - BUILD files overlaid by torch_mlir_configure",
path = "third_party/torch-mlir",
)
# Googletest
local_repository(
name = "com_google_googletest",
path = "third_party/googletest",
)
# Flatcc
new_local_repository(
name = "com_github_dvidelabs_flatcc",
build_file = "@iree_core//:build_tools/third_party/flatcc/BUILD.overlay",
path = "third_party/flatcc",
)
# Vulkan headers
new_local_repository(
name = "vulkan_headers",
build_file = "@iree_core//:build_tools/third_party/vulkan_headers/BUILD.overlay",
path = "third_party/vulkan_headers",
)
# Benchmark
local_repository(
name = "com_google_benchmark",
path = "third_party/benchmark",
)
# SPIRV-Cross
new_local_repository(
name = "spirv_cross",
build_file = "@iree_core//:build_tools/third_party/spirv_cross/BUILD.overlay",
path = "third_party/spirv_cross",
)
# Tracy
new_local_repository(
name = "tracy_client",
build_file = "@iree_core//:build_tools/third_party/tracy_client/BUILD.overlay",
path = "third_party/tracy",
)
# NCCL
new_local_repository(
name = "nccl",
build_file = "@iree_core//:build_tools/third_party/nccl/BUILD.overlay",
path = "third_party/nccl",
)
# HIP API headers
new_local_repository(
name = "hip_api_headers",
build_file = "@iree_core//:build_tools/third_party/hip-api-headers/BUILD.overlay",
path = "third_party/hip-build-deps",
)
# HSA runtime headers
new_local_repository(
name = "hsa_runtime_headers",
build_file = "@iree_core//:build_tools/third_party/hsa-runtime-headers/BUILD.overlay",
path = "third_party/hsa-runtime-headers",
)
# RCCL
new_local_repository(
name = "rccl",
build_file = "@iree_core//:build_tools/third_party/rccl/BUILD.overlay",
path = "third_party/rccl",
)
# Doug Lea's malloc (dlmalloc v2.8.6, MIT-0 license)
new_local_repository(
name = "dlmalloc",
build_file = "@iree_core//:build_tools/third_party/dlmalloc/BUILD.overlay",
path = "third_party/dlmalloc",
)
# WebGPU headers
new_local_repository(
name = "webgpu_headers",
build_file = "@iree_core//:build_tools/third_party/webgpu-headers/BUILD.overlay",
path = "third_party/webgpu-headers",
)
# Dawn (Tint SPIR-V → WGSL translation for the WebGPU compiler target).
# Only fetched when //compiler/plugins/target/WebGPUSPIRV is built.
# Dawn's Tint targets have native Bazel support (auto-generated BUILD.bazel
# files under src/tint/). Dawn's submodule deps (abseil, spirv-tools,
# spirv-headers) are fetched separately since GitHub tarballs exclude them.
# Keep these pins synchronized with the CMake pins in
# compiler/plugins/target/WebGPUSPIRV/CMakeLists.txt.
_DAWN_COMMIT = "851ba3e50c354ef66d16c518d4341c01ed6828cc"
http_archive(
name = "dawn",
urls = ["https://github.com/ArthurSonzogni/dawn/archive/%s.tar.gz" % _DAWN_COMMIT],
strip_prefix = "dawn-%s" % _DAWN_COMMIT,
)
http_archive(
name = "abseil_cpp",
urls = ["https://github.com/abseil/abseil-cpp/archive/04f3bc01d12cf58c90a1bb68990f087fa3c3ed19.tar.gz"],
strip_prefix = "abseil-cpp-04f3bc01d12cf58c90a1bb68990f087fa3c3ed19",
)
http_archive(
name = "spirv_headers",
urls = ["https://github.com/KhronosGroup/SPIRV-Headers/archive/465055f6c9128772e20082e893d974146acf7a02.tar.gz"],
strip_prefix = "SPIRV-Headers-465055f6c9128772e20082e893d974146acf7a02",
)
http_archive(
name = "spirv_tools",
urls = ["https://github.com/KhronosGroup/SPIRV-Tools/archive/5a1eea1546c372a945a27d9b10e0a059db6cc651.tar.gz"],
strip_prefix = "SPIRV-Tools-5a1eea1546c372a945a27d9b10e0a059db6cc651",
)
# AMDGPU device library bitcode (ocml, ockl) for ROCM compilation.
# Matches the CMake fetch in compiler/plugins/target/ROCM/CMakeLists.txt.
http_archive(
name = "amdgpu_device_libs",
urls = ["https://github.com/shark-infra/amdgpu-device-libs/releases/download/v20231101/amdgpu-device-libs-llvm-6086c272a3a59eb0b6b79dcbe00486bf4461856a.tgz"],
sha256 = "336362416c68fdd8bb80328f65ca7ebaa0c119ea19c95df6df30c832a4df39b9",
build_file = "@iree_core//:build_tools/third_party/amdgpu_device_libs/BUILD.overlay",
)
# CUDA auto-configuration
cuda_auto_configure(
name = "iree_cuda",
iree_repo_alias = "@iree_core",
)
# Optional AMDGPU builtin device compiler tools. This repository is only
# evaluated by source-mode AMDGPU device binary builds.
amdgpu_device_toolchain_repo(
name = "iree_amdgpu_device_toolchain",
)
# wasi-sdk: clang + lld + wasi-libc + libc++ + compiler-rt for wasm targets.
# Downloads the host-appropriate release from GitHub on first build.
wasi_sdk_repo(
name = "wasi_sdk",
)
iree_extension = module_extension(
implementation = _iree_extension_impl,
)