xref: /llvm-project/mlir/tools/mlir-shlib/CMakeLists.txt (revision 6244d87f42775e8d49cf758eeb1909f2ce144e3c)
17c64f6bfSValentin Churavy# Building libmlir-cpp.so fails if LLVM_ENABLE_PIC=Off
27c64f6bfSValentin Churavyif (NOT LLVM_ENABLE_PIC)
37c64f6bfSValentin Churavy  return()
47c64f6bfSValentin Churavyendif()
57c64f6bfSValentin Churavy
67c64f6bfSValentin Churavy# Building libmlir-cpp.so may not work on MSVC
77c64f6bfSValentin Churavyif (MSVC)
87c64f6bfSValentin Churavy  return()
97c64f6bfSValentin Churavyendif()
107c64f6bfSValentin Churavy
115469f434SStephen Neuendorfferget_property(mlir_libs GLOBAL PROPERTY MLIR_STATIC_LIBS)
125469f434SStephen Neuendorfferget_property(mlir_llvm_link_components GLOBAL PROPERTY MLIR_LLVM_LINK_COMPONENTS)
137c64f6bfSValentin Churavylist(REMOVE_DUPLICATES mlir_libs)
145469f434SStephen Neuendorfferlist(REMOVE_DUPLICATES mlir_llvm_link_components)
157c64f6bfSValentin Churavy
167c64f6bfSValentin Churavyforeach (lib ${mlir_libs})
177c64f6bfSValentin Churavy  if(XCODE)
187c64f6bfSValentin Churavy    # Xcode doesn't support object libraries, so we have to trick it into
197c64f6bfSValentin Churavy    # linking the static libraries instead.
207c64f6bfSValentin Churavy    list(APPEND _DEPS "-force_load" ${lib})
217c64f6bfSValentin Churavy  else()
227c64f6bfSValentin Churavy    list(APPEND _OBJECTS $<TARGET_OBJECTS:obj.${lib}>)
237c64f6bfSValentin Churavy  endif()
245469f434SStephen Neuendorffer  # libClang needs this, but it causes problems for MLIR (probably
255469f434SStephen Neuendorffer  # because we use public library dependencies within MLIR.)
265469f434SStephen Neuendorffer  # list(APPEND _DEPS  $<TARGET_PROPERTY:${lib},LINK_LIBRARIES>)
277c64f6bfSValentin Churavyendforeach ()
287c64f6bfSValentin Churavy
297c64f6bfSValentin Churavyif(MLIR_LINK_MLIR_DYLIB)
307c64f6bfSValentin Churavy  set(INSTALL_WITH_TOOLCHAIN INSTALL_WITH_TOOLCHAIN)
317c64f6bfSValentin Churavyendif()
327c64f6bfSValentin Churavy
337c64f6bfSValentin Churavyif(LLVM_BUILD_LLVM_DYLIB)
345469f434SStephen Neuendorffer  add_mlir_library(
355469f434SStephen Neuendorffer    MLIR
367c64f6bfSValentin Churavy    SHARED
37*6244d87fSMichael Kruse    EXCLUDE_FROM_LIBMLIR
387c64f6bfSValentin Churavy    ${INSTALL_WITH_TOOLCHAIN}
397c64f6bfSValentin Churavy    mlir-shlib.cpp
405469f434SStephen Neuendorffer    ${_OBJECTS}
415469f434SStephen Neuendorffer    LINK_LIBS
425469f434SStephen Neuendorffer    ${_DEPS}
435469f434SStephen Neuendorffer
445469f434SStephen Neuendorffer    LINK_COMPONENTS
455469f434SStephen Neuendorffer    ${mlir_llvm_link_components}
467c64f6bfSValentin Churavy  )
475469f434SStephen Neuendorffer  target_link_libraries(MLIR PRIVATE ${LLVM_PTHREAD_LIB})
487c64f6bfSValentin Churavyendif()
495469f434SStephen Neuendorffer
505469f434SStephen Neuendorffer#message("Libraries included in libMLIR.so: ${mlir_libs}")
515469f434SStephen Neuendorffer#message("LLVM Components included in libMLIR.so: ${mlir_llvm_link_components}")
525469f434SStephen Neuendorffer
535469f434SStephen Neuendorffermlir_check_all_link_libraries(MLIR)
54