| # Building libmlir-cpp.so fails if LLVM_ENABLE_PIC=Off |
| if (NOT LLVM_ENABLE_PIC) |
| return() |
| endif() |
| |
| # Building libmlir-cpp.so may not work on MSVC |
| if (MSVC) |
| return() |
| endif() |
| |
| get_property(mlir_libs GLOBAL PROPERTY MLIR_STATIC_LIBS) |
| get_property(mlir_llvm_link_components GLOBAL PROPERTY MLIR_LLVM_LINK_COMPONENTS) |
| list(REMOVE_DUPLICATES mlir_libs) |
| list(REMOVE_DUPLICATES mlir_llvm_link_components) |
| |
| foreach (lib ${mlir_libs}) |
| if(XCODE) |
| # Xcode doesn't support object libraries, so we have to trick it into |
| # linking the static libraries instead. |
| list(APPEND _DEPS "-force_load" ${lib}) |
| else() |
| list(APPEND _OBJECTS $<TARGET_OBJECTS:obj.${lib}>) |
| endif() |
| # libClang needs this, but it causes problems for MLIR (probably |
| # because we use public library dependencies within MLIR.) |
| # list(APPEND _DEPS $<TARGET_PROPERTY:${lib},LINK_LIBRARIES>) |
| endforeach () |
| |
| if(MLIR_LINK_MLIR_DYLIB) |
| set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN) |
| endif() |
| |
| if(LLVM_BUILD_LLVM_DYLIB) |
| add_mlir_library( |
| MLIR |
| SHARED |
| ${INSTALL_WITH_TOOLCHAIN} |
| mlir-shlib.cpp |
| ${_OBJECTS} |
| LINK_LIBS |
| ${_DEPS} |
| |
| LINK_COMPONENTS |
| ${mlir_llvm_link_components} |
| ) |
| target_link_libraries(MLIR PRIVATE ${LLVM_PTHREAD_LIB}) |
| endif() |
| |
| #message("Libraries included in libMLIR.so: ${mlir_libs}") |
| #message("LLVM Components included in libMLIR.so: ${mlir_llvm_link_components}") |
| |
| mlir_check_all_link_libraries(MLIR) |