+# This library is shared by both MLIRSparseTensorDialect and
+# MLIRSparseTensorRuntime, so it must not depend on any of the MLIR/LLVM
+# internals or else mlir_c_runner_utils will inherit that dependency.
+#
+# Because this is a header-only (`INTERFACE`) library, we cannot use
+# the `add_mlir_library` function. So we do our best to replicate the
+# relevant portions below. If doing so becomes too complicated, then
+# we should adjust the `add_mlir_library` function to also work for
+# `INTERFACE` libraries.
+set(MLIRSparseTensorEnums_srcs
+ ${MLIR_MAIN_INCLUDE_DIR}/mlir/ExecutionEngine/SparseTensor/Enums.h)
+add_library(MLIRSparseTensorEnums INTERFACE ${MLIRSparseTensorEnums_srcs})
+if(MSVC_IDE OR XCODE)
+ set_source_files_properties(${MLIRSparseTensorEnums_srcs}
+ PROPERTIES HEADER_FILE_ONLY ON)
+endif()
+add_mlir_library_install(MLIRSparseTensorEnums)
+set_property(TARGET MLIRSparseTensorEnums PROPERTY CXX_STANDARD 17)
+
+
# Unlike mlir_float16_utils, mlir_c_runner_utils, etc, we do *not* make
# this a shared library: because doing so causes issues when building
# on Windows. In particular, various functions take/return `std::vector`
EXCLUDE_FROM_LIBMLIR
LINK_LIBS PUBLIC
+ MLIRSparseTensorEnums
mlir_float16_utils
)
set_property(TARGET MLIRSparseTensorRuntime PROPERTY CXX_STANDARD 17)
deps = [":PassBaseTdFiles"],
)
+# This library is shared by both SparseTensorDialect and
+# SparseTensorRuntime, so it must not depend on any of the MLIR/LLVM
+# internals or else mlir_c_runner_utils will inherit that dependency.
+cc_library(
+ name = "SparseTensorEnums",
+ hdrs = ["include/mlir/ExecutionEngine/SparseTensor/Enums.h"],
+ includes = ["include"],
+)
+
cc_library(
name = "SparseTensorDialect",
srcs = ["lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp"],
":IR",
":InferTypeOpInterface",
":SparseTensorAttrDefsIncGen",
+ ":SparseTensorEnums",
":SparseTensorOpsIncGen",
- ":SparseTensorRuntime",
"//llvm:Support",
],
)
":SCFDialect",
":SCFTransforms",
":SparseTensorDialect",
+ ":SparseTensorEnums",
":SparseTensorPassIncGen",
- ":SparseTensorRuntime",
":SparseTensorUtils",
":Support",
":TensorDialect",
# pragma, therefore it cannot be safely/correctly used across DLL boundaries.
# Consequently, we avoid using the "mlir_xxx_utils" naming scheme,
# since that is reserved/intended for shared libraries only.
-#
-# We relist Float16bits.h because Enums.h includes it; rather than
-# forcing all direct-dependants state that they also directly-depend
-# on :mlir_float16_utils (to satisfy the layering_check).
cc_library(
name = "SparseTensorRuntime",
srcs = [
"lib/ExecutionEngine/SparseTensor/Storage.cpp",
],
hdrs = [
- "include/mlir/ExecutionEngine/Float16bits.h",
"include/mlir/ExecutionEngine/SparseTensor/COO.h",
"include/mlir/ExecutionEngine/SparseTensor/CheckedMul.h",
- "include/mlir/ExecutionEngine/SparseTensor/Enums.h",
"include/mlir/ExecutionEngine/SparseTensor/ErrorHandling.h",
"include/mlir/ExecutionEngine/SparseTensor/File.h",
"include/mlir/ExecutionEngine/SparseTensor/Storage.h",
],
includes = ["include"],
- deps = [":mlir_float16_utils"],
+ deps = [
+ ":SparseTensorEnums",
+ ":mlir_float16_utils",
+ ],
)
-# We relist Enums.h because SparseTensorRuntime.h includes/reexports it
-# as part of the public API.
cc_library(
name = "_mlir_c_runner_utils",
srcs = [
hdrs = [
"include/mlir/ExecutionEngine/CRunnerUtils.h",
"include/mlir/ExecutionEngine/Msan.h",
- "include/mlir/ExecutionEngine/SparseTensor/Enums.h",
"include/mlir/ExecutionEngine/SparseTensorRuntime.h",
],
includes = ["include"],
- deps = [":SparseTensorRuntime"],
+ deps = [
+ ":SparseTensorEnums",
+ ":SparseTensorRuntime",
+ ":mlir_float16_utils",
+ ],
)
# Indirection to avoid 'libmlir_c_runner_utils.so' filename clash.