blob: 8264d70fee042a55b97cac4fc8d5ca02fbd808f5 [file]
# Copyright 2026 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
load("@llvm-project//mlir:tblgen.bzl", "gentbl_filegroup")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("//build_tools/bazel:build_defs.oss.bzl", "iree_td_library")
package(
default_visibility = ["//visibility:public"],
features = ["layering_check"],
licenses = ["notice"],
)
# Keep the dialect sources and generators aligned with CMakeLists.txt.
exports_files(glob(["iree/**/*.py"]))
filegroup(
name = "CompilerPyFiles",
srcs = glob(
["iree/**/*.py"],
exclude = ["iree/compiler/dialects/**"],
),
)
iree_td_library(
name = "FlowOpsPyTdFiles",
srcs = ["iree/compiler/dialects/FlowBinding.td"],
deps = ["//compiler/src/iree/compiler/Dialect/Flow/IR:td_files"],
)
gentbl_filegroup(
name = "FlowOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_flow_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=flow",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/FlowBinding.td",
deps = [":FlowOpsPyTdFiles"],
)
gentbl_filegroup(
name = "FlowEnumPyGen",
tbl_outs = {
"iree/compiler/dialects/_flow_enum_gen.py": [
"-gen-python-enum-bindings",
"-bind-dialect=flow",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/FlowBinding.td",
deps = [":FlowOpsPyTdFiles"],
)
filegroup(
name = "FlowOpsPyFiles",
srcs = [
"iree/compiler/dialects/flow.py",
":FlowEnumPyGen",
":FlowOpsPyGen",
],
)
iree_td_library(
name = "HALOpsPyTdFiles",
srcs = ["iree/compiler/dialects/HALBinding.td"],
deps = ["//compiler/src/iree/compiler/Dialect/HAL/IR:td_files"],
)
gentbl_filegroup(
name = "HALOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_hal_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=hal",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/HALBinding.td",
deps = [":HALOpsPyTdFiles"],
)
gentbl_filegroup(
name = "HALEnumPyGen",
tbl_outs = {
"iree/compiler/dialects/_hal_enum_gen.py": [
"-gen-python-enum-bindings",
"-bind-dialect=hal",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/HALBinding.td",
deps = [":HALOpsPyTdFiles"],
)
filegroup(
name = "HALOpsPyFiles",
srcs = [
"iree/compiler/dialects/hal.py",
":HALEnumPyGen",
":HALOpsPyGen",
],
)
iree_td_library(
name = "StreamOpsPyTdFiles",
srcs = ["iree/compiler/dialects/StreamBinding.td"],
deps = ["//compiler/src/iree/compiler/Dialect/Stream/IR:td_files"],
)
gentbl_filegroup(
name = "StreamOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_stream_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=stream",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/StreamBinding.td",
deps = [":StreamOpsPyTdFiles"],
)
gentbl_filegroup(
name = "StreamEnumPyGen",
tbl_outs = {
"iree/compiler/dialects/_stream_enum_gen.py": [
"-gen-python-enum-bindings",
"-bind-dialect=stream",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/StreamBinding.td",
deps = [":StreamOpsPyTdFiles"],
)
filegroup(
name = "StreamOpsPyFiles",
srcs = [
"iree/compiler/dialects/stream.py",
":StreamEnumPyGen",
":StreamOpsPyGen",
],
)
iree_td_library(
name = "UtilOpsPyTdFiles",
srcs = ["iree/compiler/dialects/UtilBinding.td"],
deps = ["//compiler/src/iree/compiler/Dialect/Util/IR:td_files"],
)
gentbl_filegroup(
name = "UtilOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_util_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=util",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/UtilBinding.td",
deps = [":UtilOpsPyTdFiles"],
)
gentbl_filegroup(
name = "UtilEnumPyGen",
tbl_outs = {
"iree/compiler/dialects/_util_enum_gen.py": [
"-gen-python-enum-bindings",
"-bind-dialect=util",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/UtilBinding.td",
deps = [":UtilOpsPyTdFiles"],
)
filegroup(
name = "UtilOpsPyFiles",
srcs = [
"iree/compiler/dialects/util.py",
":UtilEnumPyGen",
":UtilOpsPyGen",
],
)
iree_td_library(
name = "VMOpsPyTdFiles",
srcs = ["iree/compiler/dialects/VMBinding.td"],
deps = ["//compiler/src/iree/compiler/Dialect/VM/IR:td_files"],
)
gentbl_filegroup(
name = "VMOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_vm_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=vm",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/VMBinding.td",
deps = [":VMOpsPyTdFiles"],
)
gentbl_filegroup(
name = "VMEnumPyGen",
tbl_outs = {
"iree/compiler/dialects/_vm_enum_gen.py": [
"-gen-python-enum-bindings",
"-bind-dialect=vm",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/VMBinding.td",
deps = [":VMOpsPyTdFiles"],
)
filegroup(
name = "VMOpsPyFiles",
srcs = [
"iree/compiler/dialects/vm.py",
":VMEnumPyGen",
":VMOpsPyGen",
],
)
iree_td_library(
name = "IREECodegenOpsPyTdFiles",
srcs = [
"iree/compiler/dialects/IREECodegenBinding.td",
"iree/compiler/dialects/IREECodegenEnumBinding.td",
],
deps = ["//compiler/src/iree/compiler/Codegen/Dialect/Codegen/IR:td_files"],
)
gentbl_filegroup(
name = "IREECodegenOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_iree_codegen_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=iree_codegen",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/IREECodegenBinding.td",
deps = [":IREECodegenOpsPyTdFiles"],
)
gentbl_filegroup(
name = "IREECodegenEnumPyGen",
tbl_outs = {
"iree/compiler/dialects/_iree_codegen_enum_gen.py": [
"-gen-python-enum-bindings",
"-bind-dialect=iree_codegen",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/IREECodegenEnumBinding.td",
deps = [":IREECodegenOpsPyTdFiles"],
)
filegroup(
name = "IREECodegenOpsPyFiles",
srcs = [
"iree/compiler/dialects/iree_codegen.py",
":IREECodegenEnumPyGen",
":IREECodegenOpsPyGen",
],
)
iree_td_library(
name = "IREEGPUOpsPyTdFiles",
srcs = [
"iree/compiler/dialects/IREEGPUBinding.td",
"iree/compiler/dialects/IREEGPUEnumBinding.td",
],
deps = ["//compiler/src/iree/compiler/Codegen/Dialect/GPU/IR:td_files"],
)
gentbl_filegroup(
name = "IREEGPUOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_iree_gpu_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=iree_gpu",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/IREEGPUBinding.td",
deps = [":IREEGPUOpsPyTdFiles"],
)
gentbl_filegroup(
name = "IREEGPUEnumPyGen",
tbl_outs = {
"iree/compiler/dialects/_iree_gpu_enum_gen.py": [
"-gen-python-enum-bindings",
"-bind-dialect=iree_gpu",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/IREEGPUEnumBinding.td",
deps = [":IREEGPUOpsPyTdFiles"],
)
filegroup(
name = "IREEGPUOpsPyFiles",
srcs = [
"iree/compiler/dialects/iree_gpu.py",
":IREEGPUEnumPyGen",
":IREEGPUOpsPyGen",
],
)
iree_td_library(
name = "TensorExtOpsPyTdFiles",
srcs = ["iree/compiler/dialects/TensorExtBinding.td"],
deps = ["//compiler/src/iree/compiler/Dialect/TensorExt/IR:td_files"],
)
gentbl_filegroup(
name = "TensorExtOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_iree_tensor_ext_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=iree_tensor_ext",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/TensorExtBinding.td",
deps = [":TensorExtOpsPyTdFiles"],
)
gentbl_filegroup(
name = "TensorExtEnumPyGen",
tbl_outs = {
"iree/compiler/dialects/_iree_tensor_ext_enum_gen.py": [
"-gen-python-enum-bindings",
"-bind-dialect=iree_tensor_ext",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/TensorExtBinding.td",
deps = [":TensorExtOpsPyTdFiles"],
)
filegroup(
name = "TensorExtOpsPyFiles",
srcs = [
"iree/compiler/dialects/iree_tensor_ext.py",
":TensorExtEnumPyGen",
":TensorExtOpsPyGen",
],
)
iree_td_library(
name = "PreprocessingTransformExtensionsOpsPyTdFiles",
srcs = ["iree/compiler/dialects/PreprocessingTransformExtensionsBinding.td"],
deps = ["//compiler/src/iree/compiler/Preprocessing/TransformExtensions:td_files"],
)
gentbl_filegroup(
name = "PreprocessingTransformExtensionsOpsPyGen",
tbl_outs = {
"iree/compiler/dialects/_preprocessing_transform_ops_gen.py": [
"-gen-python-op-bindings",
"-bind-dialect=transform",
"-dialect-extension=preprocessing_transform",
],
},
tblgen = "@llvm-project//mlir:mlir-tblgen",
td_file = "iree/compiler/dialects/PreprocessingTransformExtensionsBinding.td",
deps = [":PreprocessingTransformExtensionsOpsPyTdFiles"],
)
filegroup(
name = "PreprocessingTransformExtensionsOpsPyFiles",
srcs = [
"iree/compiler/dialects/preprocessing_transform.py",
":PreprocessingTransformExtensionsOpsPyGen",
],
)
# Extensions and tool wrappers share IREECompiler's C API. Packaging the
# extensions next to the compiler library keeps the installation relocatable.
_PYTHON_COPTS = [
"-fexceptions",
"-frtti",
"-DMLIR_PYTHON_PACKAGE_PREFIX=iree.compiler.",
]
_PYTHON_FEATURES = ["-use_header_modules"]
_RPATH_LINKOPTS = select({
"@platforms//os:linux": ["-Wl,-rpath,$ORIGIN"],
"@platforms//os:osx": ["-Wl,-rpath,@loader_path"],
"//conditions:default": [],
})
cc_binary(
name = "_site_initialize_0.so",
srcs = ["IREECompilerRegistration.cpp"],
copts = _PYTHON_COPTS,
features = _PYTHON_FEATURES,
linkopts = _RPATH_LINKOPTS,
linkshared = True,
linkstatic = False,
deps = [
"//compiler/bindings/c:headers",
"//compiler/src/iree/compiler/API:SharedImpl",
"@llvm-project//mlir:CAPIIRHeaders",
"@llvm-project//mlir:MLIRBindingsPythonNanobindHeaders",
"@nanobind",
],
)
cc_binary(
name = "_ireeCompilerDialects.so",
srcs = ["IREECompilerDialectsModule.cpp"],
copts = _PYTHON_COPTS,
features = _PYTHON_FEATURES,
linkopts = _RPATH_LINKOPTS,
linkshared = True,
linkstatic = False,
deps = [
"//compiler/bindings/c:headers",
"//compiler/src/iree/compiler/API:SharedImpl",
"@llvm-project//mlir:CAPIIRHeaders",
"@llvm-project//mlir:CAPISMTHeaders",
"@llvm-project//mlir:CAPITargetHeaders",
"@llvm-project//mlir:MLIRBindingsPythonNanobindHeaders",
"@nanobind",
],
)
cc_binary(
name = "iree-compile",
srcs = ["IREECompileTool.c"],
linkopts = _RPATH_LINKOPTS,
deps = [
"//compiler/bindings/c:headers",
"//compiler/src/iree/compiler/API:SharedImpl",
],
)
cc_binary(
name = "iree-opt",
srcs = ["IREEOptTool.c"],
linkopts = _RPATH_LINKOPTS,
deps = [
"//compiler/bindings/c:headers",
"//compiler/src/iree/compiler/API:SharedImpl",
],
)
cc_binary(
name = "iree-link",
srcs = ["IREELinkTool.c"],
linkopts = _RPATH_LINKOPTS,
deps = [
"//compiler/bindings/c:headers",
"//compiler/src/iree/compiler/API:SharedImpl",
],
)
cc_binary(
name = "iree-lld",
srcs = ["LldTool.c"],
linkopts = _RPATH_LINKOPTS,
deps = [
"//compiler/bindings/c:headers",
"//compiler/src/iree/compiler/API:SharedImpl",
],
)