Files
clang-p2996/mlir/lib/ExecutionEngine/SparseTensor/CMakeLists.txt
Michał Górny 047e8e47c1 Reapply "[mlir] Link libraries that aren't included in libMLIR to libMLIR" (#123910)
Use `mlir_target_link_libraries()` to link dependencies of libraries
that are not included in libMLIR, to ensure that they link to the dylib
when they are used in Flang. Otherwise, they implicitly pull in all
their static dependencies, effectively causing Flang binaries to
simultaneously link to the dylib and to static libraries, which is never
a good idea.

I have only covered the libraries that are used by Flang. If you wish, I
can extend this approach to all non-libMLIR libraries in MLIR, making
MLIR itself also link to the dylib consistently.

[v3 with more `-DBUILD_SHARED_LIBS=ON` fixes]
2025-01-22 09:01:50 +00:00

27 lines
975 B
CMake

# 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`
# but that class is not designed with dllimport/dllexport 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.
add_mlir_library(MLIRSparseTensorRuntime
File.cpp
MapRef.cpp
Storage.cpp
EXCLUDE_FROM_LIBMLIR
)
mlir_target_link_libraries(MLIRSparseTensorRuntime PUBLIC
MLIRSparseTensorEnums
mlir_float16_utils
)
set_property(TARGET MLIRSparseTensorRuntime PROPERTY CXX_STANDARD 17)
check_cxx_compiler_flag(-Wweak-vtables
COMPILER_SUPPORTS_WARNING_WEAK_VTABLES)
if(COMPILER_SUPPORTS_WARNING_WEAK_VTABLES)
target_compile_options(MLIRSparseTensorRuntime PUBLIC
"-Wweak-vtables")
endif()