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]
27 lines
975 B
CMake
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()
|