[Mlir-commits] [mlir] 4f0f436 - [MLIR] Adjust libMLIR building to more closely follow libClang
Stephen Neuendorffer
llvmlistbot at llvm.org
Mon May 4 11:40:55 PDT 2020
Author: Valentin Churavy
Date: 2020-05-04T11:40:46-07:00
New Revision: 4f0f436749c264c16eb226c9b9b132e07e3650a6
URL: https://github.com/llvm/llvm-project/commit/4f0f436749c264c16eb226c9b9b132e07e3650a6
DIFF: https://github.com/llvm/llvm-project/commit/4f0f436749c264c16eb226c9b9b132e07e3650a6.diff
LOG: [MLIR] Adjust libMLIR building to more closely follow libClang
- Exports MLIR targets to be used out-of-tree.
- mimicks `add_clang_library` and `add_flang_library`.
- Fixes libMLIR.so
After https://reviews.llvm.org/D77515 libMLIR.so was no longer containing
any object files. We originally had a cludge there that made it work with
the static initalizers and when switchting away from that to the way the
clang shlib does it, I noticed that MLIR doesn't create a `obj.{name}` target,
and doesn't export it's targets to `lib/cmake/mlir`.
This is due to MLIR using `add_llvm_library` under the hood, which adds
the target to `llvmexports`.
Differential Revision: https://reviews.llvm.org/D78773
[MLIR] Fix libMLIR.so and LLVM_LINK_LLVM_DYLIB
Primarily, this patch moves all mlir references to LLVM libraries into
either LLVM_LINK_COMPONENTS or LINK_COMPONENTS. This enables magic in
the llvm cmake files to automatically replace reference to LLVM components
with references to libLLVM.so when necessary. Among other things, this
completes fixing libMLIR.so, which has been broken for some configurations
since D77515.
Unlike previously, the pattern is now that mlir libraries should almost
always use add_mlir_library. Previously, some libraries still used
add_llvm_library. However, this confuses the export of targets for use
out of tree because libraries specified with add_llvm_library are exported
by LLVM. Instead users which don't need/can't be linked into libMLIR.so
can specify EXCLUDE_FROM_LIBMLIR
A common error mode is linking with LLVM libraries outside of LINK_COMPONENTS.
This almost always results in symbol confusion or multiply defined options
in LLVM when the same object file is included as a static library and
as part of libLLVM.so. To catch these errors more directly, there's now
mlir_check_all_link_libraries.
To simplify usage of add_mlir_library, we assume that all mlir
libraries depend on LLVMSupport, so it's not necessary to separately specify
it.
tested with:
BUILD_SHARED_LIBS=on,
BUILD_SHARED_LIBS=off + LLVM_BUILD_LLVM_DYLIB,
BUILD_SHARED_LIBS=off + LLVM_BUILD_LLVM_DYLIB + LLVM_LINK_LLVM_DYLIB.
By: Stephen Neuendorffer <stephen.neuendorffer at xilinx.com>
Differential Revision: https://reviews.llvm.org/D79067
[MLIR] Move from using target_link_libraries to LINK_LIBS
This allows us to correctly generate dependencies for derived targets,
such as targets which are created for object libraries.
By: Stephen Neuendorffer <stephen.neuendorffer at xilinx.com>
Differential Revision: https://reviews.llvm.org/D79243
Three commits have been squashed to avoid intermediate build breakage.
Added:
Modified:
mlir/cmake/modules/AddMLIR.cmake
mlir/cmake/modules/MLIRConfig.cmake.in
mlir/examples/toy/Ch6/CMakeLists.txt
mlir/examples/toy/Ch7/CMakeLists.txt
mlir/lib/Analysis/CMakeLists.txt
mlir/lib/Conversion/AVX512ToLLVM/CMakeLists.txt
mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt
mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
mlir/lib/Conversion/GPUToVulkan/CMakeLists.txt
mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt
mlir/lib/Conversion/LoopToStandard/CMakeLists.txt
mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt
mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt
mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
mlir/lib/Conversion/VectorToLoops/CMakeLists.txt
mlir/lib/Dialect/AVX512/CMakeLists.txt
mlir/lib/Dialect/Affine/EDSC/CMakeLists.txt
mlir/lib/Dialect/Affine/IR/CMakeLists.txt
mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt
mlir/lib/Dialect/Affine/Utils/CMakeLists.txt
mlir/lib/Dialect/GPU/CMakeLists.txt
mlir/lib/Dialect/LLVMIR/CMakeLists.txt
mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt
mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt
mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt
mlir/lib/Dialect/LoopOps/CMakeLists.txt
mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt
mlir/lib/Dialect/OpenMP/CMakeLists.txt
mlir/lib/Dialect/Quant/CMakeLists.txt
mlir/lib/Dialect/SDBM/CMakeLists.txt
mlir/lib/Dialect/SPIRV/CMakeLists.txt
mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt
mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
mlir/lib/Dialect/Shape/CMakeLists.txt
mlir/lib/Dialect/StandardOps/CMakeLists.txt
mlir/lib/Dialect/Vector/CMakeLists.txt
mlir/lib/EDSC/CMakeLists.txt
mlir/lib/ExecutionEngine/CMakeLists.txt
mlir/lib/IR/CMakeLists.txt
mlir/lib/Interfaces/CMakeLists.txt
mlir/lib/Parser/CMakeLists.txt
mlir/lib/Pass/CMakeLists.txt
mlir/lib/Support/CMakeLists.txt
mlir/lib/TableGen/CMakeLists.txt
mlir/lib/Target/CMakeLists.txt
mlir/lib/Transforms/CMakeLists.txt
mlir/lib/Transforms/Utils/CMakeLists.txt
mlir/lib/Translation/CMakeLists.txt
mlir/test/EDSC/CMakeLists.txt
mlir/test/SDBM/CMakeLists.txt
mlir/test/lib/Dialect/Affine/CMakeLists.txt
mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
mlir/test/lib/Dialect/Test/CMakeLists.txt
mlir/test/lib/IR/CMakeLists.txt
mlir/test/lib/Pass/CMakeLists.txt
mlir/test/lib/Transforms/CMakeLists.txt
mlir/tools/mlir-cpu-runner/CMakeLists.txt
mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt
mlir/tools/mlir-opt/CMakeLists.txt
mlir/tools/mlir-shlib/CMakeLists.txt
mlir/tools/mlir-tblgen/CMakeLists.txt
mlir/tools/mlir-translate/CMakeLists.txt
Removed:
################################################################################
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 6a2856b7f987..6c1ec381a675 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -29,11 +29,111 @@ function(add_mlir_doc doc_filename command output_file output_directory)
add_dependencies(mlir-doc ${output_file}DocGen)
endfunction()
-# Declare a library which can be compiled in libMLIR.so
-macro(add_mlir_library name)
- set_property(GLOBAL APPEND PROPERTY MLIR_ALL_LIBS ${name})
- add_llvm_library(${ARGV})
-endmacro(add_mlir_library)
+# Declare an mlir library which can be compiled in libMLIR.so
+# In addition to everything that llvm_add_librar accepts, this
+# also has the following option:
+# EXCLUDE_FROM_LIBMLIR
+# Don't include this library in libMLIR.so. This option should be used
+# for test libraries, executable-specific libraries, or rarely used libraries
+# with large dependencies.
+function(add_mlir_library name)
+ cmake_parse_arguments(ARG
+ "SHARED;INSTALL_WITH_TOOLCHAIN;EXCLUDE_FROM_LIBMLIR"
+ ""
+ "ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS"
+ ${ARGN})
+ set(srcs)
+ if(MSVC_IDE OR XCODE)
+ # Add public headers
+ file(RELATIVE_PATH lib_path
+ ${MLIR_SOURCE_DIR}/lib/
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+ if(NOT lib_path MATCHES "^[.][.]")
+ file( GLOB_RECURSE headers
+ ${MLIR_SOURCE_DIR}/include/mlir/${lib_path}/*.h
+ ${MLIR_SOURCE_DIR}/include/mlir/${lib_path}/*.def
+ )
+ set_source_files_properties(${headers} PROPERTIES HEADER_FILE_ONLY ON)
+
+ file( GLOB_RECURSE tds
+ ${MLIR_SOURCE_DIR}/include/mlir/${lib_path}/*.td
+ )
+ source_group("TableGen descriptions" FILES ${tds})
+ set_source_files_properties(${tds}} PROPERTIES HEADER_FILE_ONLY ON)
+
+ if(headers OR tds)
+ set(srcs ${headers} ${tds})
+ endif()
+ endif()
+ endif(MSVC_IDE OR XCODE)
+ if(srcs OR ARG_ADDITIONAL_HEADERS)
+ set(srcs
+ ADDITIONAL_HEADERS
+ ${srcs}
+ ${ARG_ADDITIONAL_HEADERS} # It may contain unparsed unknown args.
+ )
+ endif()
+ if(ARG_SHARED)
+ set(LIBTYPE SHARED)
+ else()
+ # llvm_add_library ignores BUILD_SHARED_LIBS if STATIC is explicitly set,
+ # so we need to handle it here.
+ if(BUILD_SHARED_LIBS)
+ set(LIBTYPE SHARED)
+ else()
+ set(LIBTYPE STATIC)
+ endif()
+ if(NOT XCODE)
+ # The Xcode generator doesn't handle object libraries correctly.
+ list(APPEND LIBTYPE OBJECT)
+ endif()
+ # Test libraries and such shouldn't be include in libMLIR.so
+ if(NOT ARG_EXCLUDE_FROM_LIBMLIR)
+ set_property(GLOBAL APPEND PROPERTY MLIR_STATIC_LIBS ${name})
+ set_property(GLOBAL APPEND PROPERTY MLIR_LLVM_LINK_COMPONENTS ${ARG_LINK_COMPONENTS})
+ set_property(GLOBAL APPEND PROPERTY MLIR_LLVM_LINK_COMPONENTS ${LLVM_LINK_COMPONENTS})
+ endif()
+ endif()
+
+ # MLIR libraries uniformly depend on LLVMSupport. Just specify it once here.
+ list(APPEND ARG_LINK_COMPONENTS Support)
+ list(APPEND ARG_DEPENDS mlir-generic-headers)
+ llvm_add_library(${name} ${LIBTYPE} ${ARG_UNPARSED_ARGUMENTS} ${srcs} DEPENDS ${ARG_DEPENDS} LINK_COMPONENTS ${ARG_LINK_COMPONENTS} LINK_LIBS ${ARG_LINK_LIBS})
+
+ if(TARGET ${name})
+ target_link_libraries(${name} INTERFACE ${LLVM_COMMON_LIBS})
+
+ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
+ set(export_to_mlirtargets)
+ if (${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
+ "mlir-libraries" IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
+ NOT LLVM_DISTRIBUTION_COMPONENTS)
+ set(export_to_mlirtargets EXPORT MLIRTargets)
+ set_property(GLOBAL PROPERTY MLIR_HAS_EXPORTS True)
+ endif()
+
+ install(TARGETS ${name}
+ COMPONENT ${name}
+ ${export_to_mlirtargets}
+ LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+ ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+ RUNTIME DESTINATION bin)
+
+ if (NOT LLVM_ENABLE_IDE)
+ add_llvm_install_targets(install-${name}
+ DEPENDS ${name}
+ COMPONENT ${name})
+ endif()
+ set_property(GLOBAL APPEND PROPERTY MLIR_ALL_LIBS ${name})
+ endif()
+ set_property(GLOBAL APPEND PROPERTY MLIR_EXPORTS ${name})
+ else()
+ # Add empty "phony" target
+ add_custom_target(${name})
+ endif()
+ set_target_properties(${name} PROPERTIES FOLDER "MLIR libraries")
+endfunction(add_mlir_library)
# Declare the library associated with a dialect.
function(add_mlir_dialect_library name)
@@ -52,3 +152,37 @@ function(add_mlir_translation_library name)
set_property(GLOBAL APPEND PROPERTY MLIR_TRANSLATION_LIBS ${name})
add_mlir_library(${ARGV} DEPENDS mlir-headers)
endfunction(add_mlir_translation_library)
+
+# Verification tools to aid debugging.
+function(mlir_check_link_libraries name)
+ if(TARGET ${name})
+ get_target_property(libs ${name} LINK_LIBRARIES)
+ # message("${name} libs are: ${libs}")
+ set(linking_llvm 0)
+ foreach(lib ${libs})
+ if(lib)
+ if(${lib} MATCHES "^LLVM$")
+ set(linking_llvm 1)
+ endif()
+ if((${lib} MATCHES "^LLVM.+") AND ${linking_llvm})
+ # This will almost always cause execution problems, since the
+ # same symbol might be loaded from 2 separate libraries. This
+ # often comes from referring to an LLVM library target
+ # explicitly in target_link_libraries()
+ message("WARNING: ${l} links LLVM and ${lib}!")
+ endif()
+ endif()
+ endforeach()
+ endif()
+endfunction(mlir_check_link_libraries)
+
+function(mlir_check_all_link_libraries name)
+ mlir_check_link_libraries(${name})
+ if(TARGET ${name})
+ get_target_property(libs ${name} LINK_LIBRARIES)
+ # message("${name} libs are: ${libs}")
+ foreach(lib ${libs})
+ mlir_check_link_libraries(${lib})
+ endforeach()
+ endif()
+endfunction(mlir_check_all_link_libraries)
diff --git a/mlir/cmake/modules/MLIRConfig.cmake.in b/mlir/cmake/modules/MLIRConfig.cmake.in
index e8822e50ad55..de38f94add75 100644
--- a/mlir/cmake/modules/MLIRConfig.cmake.in
+++ b/mlir/cmake/modules/MLIRConfig.cmake.in
@@ -19,9 +19,7 @@ set_property(GLOBAL PROPERTY MLIR_DIALECT_LIBS "@MLIR_DIALECT_LIBS@")
set_property(GLOBAL PROPERTY MLIR_CONVERSION_LIBS "@MLIR_CONVERSION_LIBS@")
# Provide all our library targets to users.
-if(EXISTS @MLIR_CONFIG_EXPORTS_FILE@)
- include("@MLIR_CONFIG_EXPORTS_FILE@")
-endif()
+include("@MLIR_CONFIG_EXPORTS_FILE@")
# By creating these targets here, subprojects that depend on MLIR's
# tablegen-generated headers can always depend on these targets whether building
diff --git a/mlir/examples/toy/Ch6/CMakeLists.txt b/mlir/examples/toy/Ch6/CMakeLists.txt
index be797c6c1e96..c821c77f461c 100644
--- a/mlir/examples/toy/Ch6/CMakeLists.txt
+++ b/mlir/examples/toy/Ch6/CMakeLists.txt
@@ -4,6 +4,8 @@ add_subdirectory(include)
set(LLVM_LINK_COMPONENTS
Core
Support
+ nativecodegen
+ OrcJIT
)
set(LLVM_TARGET_DEFINITIONS mlir/ToyCombine.td)
diff --git a/mlir/examples/toy/Ch7/CMakeLists.txt b/mlir/examples/toy/Ch7/CMakeLists.txt
index 9a9f335d3a92..f622bf5ac527 100644
--- a/mlir/examples/toy/Ch7/CMakeLists.txt
+++ b/mlir/examples/toy/Ch7/CMakeLists.txt
@@ -4,6 +4,8 @@ add_subdirectory(include)
set(LLVM_LINK_COMPONENTS
Core
Support
+ nativecodegen
+ OrcJIT
)
set(LLVM_TARGET_DEFINITIONS mlir/ToyCombine.td)
diff --git a/mlir/lib/Analysis/CMakeLists.txt b/mlir/lib/Analysis/CMakeLists.txt
index 2fa57c510fdf..63ddcdaee3d3 100644
--- a/mlir/lib/Analysis/CMakeLists.txt
+++ b/mlir/lib/Analysis/CMakeLists.txt
@@ -17,12 +17,7 @@ add_mlir_library(MLIRAnalysis
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Analysis
- DEPENDS
- mlir-generic-headers
- )
-
-target_link_libraries(MLIRAnalysis
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIRCallInterfaces
MLIRControlFlowInterfaces
@@ -40,14 +35,10 @@ add_mlir_library(MLIRLoopAnalysis
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Analysis
- DEPENDS
- mlir-generic-headers
- )
-
-target_link_libraries(MLIRLoopAnalysis
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIRCallInterfaces
MLIRControlFlowInterfaces
MLIRInferTypeOpInterface
- MLIRLoopOps)
+ MLIRLoopOps
+ )
diff --git a/mlir/lib/Conversion/AVX512ToLLVM/CMakeLists.txt b/mlir/lib/Conversion/AVX512ToLLVM/CMakeLists.txt
index 11397b9e105e..cf94a0670f3a 100644
--- a/mlir/lib/Conversion/AVX512ToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/AVX512ToLLVM/CMakeLists.txt
@@ -6,7 +6,10 @@ add_mlir_conversion_library(MLIRAVX512ToLLVM
DEPENDS
MLIRConversionPassIncGen
-)
+
+ LINK_COMPONENTS
+ Core
+ )
target_link_libraries(MLIRAVX512ToLLVM
PUBLIC
@@ -15,6 +18,4 @@ target_link_libraries(MLIRAVX512ToLLVM
MLIRLLVMIR
MLIRStandardToLLVM
MLIRTransforms
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
index 9324f7b21c80..f08c2a5fd787 100644
--- a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
+++ b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
@@ -6,7 +6,10 @@ add_mlir_conversion_library(MLIRAffineToStandard
DEPENDS
MLIRConversionPassIncGen
-)
+
+ LINK_COMPONENTS
+ Core
+ )
target_link_libraries(
MLIRAffineToStandard
PUBLIC
@@ -16,6 +19,4 @@ target_link_libraries(
MLIRStandardOps
MLIRTransforms
MLIRIR
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt b/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt
index a4c98e555322..30a6b2c24bd8 100644
--- a/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt
@@ -9,9 +9,9 @@ set(SOURCES
if (MLIR_CUDA_CONVERSIONS_ENABLED)
list(APPEND SOURCES "ConvertKernelFuncToCubin.cpp")
set(NVPTX_LIBS
- LLVMNVPTXCodeGen
- LLVMNVPTXDesc
- LLVMNVPTXInfo
+ NVPTXCodeGen
+ NVPTXDesc
+ NVPTXInfo
)
endif()
@@ -20,13 +20,14 @@ add_mlir_conversion_library(MLIRGPUtoCUDATransforms
DEPENDS
MLIRConversionPassIncGen
-)
+
+ LINK_COMPONENTS
+ Core
+ MC
+ ${NVPTX_LIBS}
+ )
target_link_libraries(MLIRGPUtoCUDATransforms
PUBLIC
- ${NVPTX_LIBS}
- LLVMCore
- LLVMMC
- LLVMSupport
MLIRGPU
MLIRIR
MLIRLLVMIR
diff --git a/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt b/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
index b7c583d57169..8e0b691a056d 100644
--- a/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
@@ -12,7 +12,6 @@ add_mlir_conversion_library(MLIRGPUtoNVVMTransforms
target_link_libraries(MLIRGPUtoNVVMTransforms
PUBLIC
- LLVMSupport
MLIRGPU
MLIRLLVMIR
MLIRNVVMIR
diff --git a/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt b/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
index 2161abd37541..64e2eff5ae82 100644
--- a/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
@@ -12,7 +12,6 @@ add_mlir_conversion_library(MLIRGPUtoROCDLTransforms
target_link_libraries(MLIRGPUtoROCDLTransforms
PUBLIC
- LLVMSupport
MLIRGPU
MLIRLLVMIR
MLIRROCDLIR
diff --git a/mlir/lib/Conversion/GPUToVulkan/CMakeLists.txt b/mlir/lib/Conversion/GPUToVulkan/CMakeLists.txt
index ecfc2d75d5f3..5fdfd07bda39 100644
--- a/mlir/lib/Conversion/GPUToVulkan/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToVulkan/CMakeLists.txt
@@ -18,5 +18,4 @@ target_link_libraries(MLIRGPUtoVulkanTransforms
MLIRSupport
MLIRTransforms
MLIRTranslation
- LLVMSupport
)
diff --git a/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt b/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt
index 9fd15670382b..28619e4c57e1 100644
--- a/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt
@@ -6,7 +6,10 @@ add_mlir_conversion_library(MLIRLinalgToLLVM
DEPENDS
MLIRConversionPassIncGen
-)
+
+ LINK_COMPONENTS
+ Core
+ )
target_link_libraries(MLIRLinalgToLLVM
PUBLIC
@@ -20,6 +23,4 @@ target_link_libraries(MLIRLinalgToLLVM
MLIRVectorToLLVM
MLIRVectorToLoops
MLIRTransforms
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt b/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt
index d4c752847583..f0c75b1de9e8 100644
--- a/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt
+++ b/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt
@@ -6,12 +6,13 @@ add_mlir_conversion_library(MLIRLoopToStandard
DEPENDS
MLIRConversionPassIncGen
-)
+
+ LINK_COMPONENTS
+ Core
+ )
target_link_libraries(
MLIRLoopToStandard
PUBLIC
MLIRLoopOps
MLIRTransforms
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt b/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt
index 5b31429a0d0c..22416091ad09 100644
--- a/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt
+++ b/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt
@@ -19,5 +19,4 @@ target_link_libraries(MLIRLoopsToGPU
MLIRStandardOps
MLIRSupport
MLIRTransforms
- LLVMSupport
)
diff --git a/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt b/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt
index ef7ad11d93ef..445088c52c86 100644
--- a/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt
@@ -6,12 +6,13 @@ add_mlir_conversion_library(MLIRStandardToLLVM
DEPENDS
MLIRConversionPassIncGen
-)
+
+ LINK_COMPONENTS
+ Core
+ )
target_link_libraries(
MLIRStandardToLLVM
PUBLIC
MLIRLLVMIR
MLIRTransforms
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt b/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
index 6d6b3b87c073..cc1f52eab261 100644
--- a/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
@@ -6,7 +6,10 @@ add_mlir_conversion_library(MLIRVectorToLLVM
DEPENDS
MLIRConversionPassIncGen
-)
+
+ LINK_COMPONENTS
+ Core
+ )
target_link_libraries(MLIRVectorToLLVM
PUBLIC
@@ -14,6 +17,4 @@ target_link_libraries(MLIRVectorToLLVM
MLIRStandardToLLVM
MLIRVector
MLIRTransforms
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt b/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt
index 515c0e2d0344..c28ce5175186 100644
--- a/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt
@@ -3,7 +3,10 @@ add_mlir_conversion_library(MLIRVectorToLoops
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/VectorToLoops
-)
+
+ LINK_COMPONENTS
+ Core
+ )
target_link_libraries(MLIRVectorToLoops
PUBLIC
@@ -11,6 +14,4 @@ target_link_libraries(MLIRVectorToLoops
MLIRAffineEDSC
MLIRLLVMIR
MLIRTransforms
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/lib/Dialect/AVX512/CMakeLists.txt b/mlir/lib/Dialect/AVX512/CMakeLists.txt
index eb1e7dc5c4b5..6b15bf21c2d9 100644
--- a/mlir/lib/Dialect/AVX512/CMakeLists.txt
+++ b/mlir/lib/Dialect/AVX512/CMakeLists.txt
@@ -6,11 +6,9 @@ add_mlir_dialect_library(MLIRAVX512
DEPENDS
MLIRAVX512IncGen
- )
-target_link_libraries(MLIRAVX512
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRSideEffects
MLIRVectorToLLVM
- LLVMSupport
)
diff --git a/mlir/lib/Dialect/Affine/EDSC/CMakeLists.txt b/mlir/lib/Dialect/Affine/EDSC/CMakeLists.txt
index a07905b71fbc..e00986584676 100644
--- a/mlir/lib/Dialect/Affine/EDSC/CMakeLists.txt
+++ b/mlir/lib/Dialect/Affine/EDSC/CMakeLists.txt
@@ -6,9 +6,8 @@ add_mlir_dialect_library(MLIRAffineEDSC
DEPENDS
MLIRAffineOpsIncGen
- )
-target_link_libraries(MLIRAffineEDSC
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIREDSC
MLIRIR
diff --git a/mlir/lib/Dialect/Affine/IR/CMakeLists.txt b/mlir/lib/Dialect/Affine/IR/CMakeLists.txt
index 8d186ae03b54..d34065e3b952 100644
--- a/mlir/lib/Dialect/Affine/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Affine/IR/CMakeLists.txt
@@ -7,9 +7,8 @@ add_mlir_dialect_library(MLIRAffineOps
DEPENDS
MLIRAffineOpsIncGen
- )
-target_link_libraries(MLIRAffineOps
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIREDSC
MLIRIR
MLIRLoopLikeInterface
diff --git a/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt
index bcad44d72497..89c72ae1ddab 100644
--- a/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt
@@ -14,9 +14,8 @@ add_mlir_dialect_library(MLIRAffineTransforms
MLIRAffineOpsIncGen
MLIRAffinePassIncGen
MLIRLoopLikeInterfaceIncGen
- )
-target_link_libraries(MLIRAffineTransforms
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIREDSC
MLIRIR
diff --git a/mlir/lib/Dialect/Affine/Utils/CMakeLists.txt b/mlir/lib/Dialect/Affine/Utils/CMakeLists.txt
index ed3b5b8b1723..59ae13dcabcf 100644
--- a/mlir/lib/Dialect/Affine/Utils/CMakeLists.txt
+++ b/mlir/lib/Dialect/Affine/Utils/CMakeLists.txt
@@ -4,9 +4,7 @@ add_mlir_dialect_library(MLIRAffineUtils
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine
- )
-target_link_libraries(MLIRAffineUtils
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIRTransformUtils
)
diff --git a/mlir/lib/Dialect/GPU/CMakeLists.txt b/mlir/lib/Dialect/GPU/CMakeLists.txt
index ad63b3669409..01863d4a3d56 100644
--- a/mlir/lib/Dialect/GPU/CMakeLists.txt
+++ b/mlir/lib/Dialect/GPU/CMakeLists.txt
@@ -13,9 +13,8 @@ add_mlir_dialect_library(MLIRGPU
MLIRGPUPassIncGen
MLIRParallelLoopMapperAttrGen
MLIRParallelLoopMapperEnumsGen
- )
-target_link_libraries(MLIRGPU
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIREDSC
MLIRIR
MLIRLLVMIR
@@ -25,5 +24,4 @@ target_link_libraries(MLIRGPU
MLIRStandardOps
MLIRSupport
MLIRTransformUtils
- LLVMSupport
)
diff --git a/mlir/lib/Dialect/LLVMIR/CMakeLists.txt b/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
index bd1f25c9f355..6404fe263d4b 100644
--- a/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
+++ b/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
@@ -9,15 +9,15 @@ add_mlir_dialect_library(MLIRLLVMIR
DEPENDS
MLIRLLVMOpsIncGen
MLIRLLVMConversionsIncGen
- )
-target_link_libraries(MLIRLLVMIR
- PUBLIC
- LLVMAsmParser
- LLVMBitReader
- LLVMBitWriter
- LLVMCore
- LLVMSupport
- LLVMFrontendOpenMP
+
+ LINK_COMPONENTS
+ AsmParser
+ BitReader
+ BitWriter
+ Core
+ FrontendOpenMP
+
+ LINK_LIBS PUBLIC
MLIRCallInterfaces
MLIRControlFlowInterfaces
MLIROpenMP
@@ -35,15 +35,15 @@ add_mlir_dialect_library(MLIRLLVMAVX512
DEPENDS
MLIRLLVMAVX512IncGen
MLIRLLVMAVX512ConversionsIncGen
- )
-target_link_libraries(MLIRLLVMAVX512
- PUBLIC
- LLVMAsmParser
+
+ LINK_COMPONENTS
+ AsmParser
+ Core
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMIR
MLIRSideEffects
- LLVMSupport
- LLVMCore
)
add_mlir_dialect_library(MLIRNVVMIR
@@ -55,15 +55,15 @@ add_mlir_dialect_library(MLIRNVVMIR
DEPENDS
MLIRNVVMOpsIncGen
MLIRNVVMConversionsIncGen
- )
-target_link_libraries(MLIRNVVMIR
- PUBLIC
- LLVMAsmParser
+
+ LINK_COMPONENTS
+ AsmParser
+ Core
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMIR
MLIRSideEffects
- LLVMSupport
- LLVMCore
)
add_mlir_dialect_library(MLIRROCDLIR
@@ -75,12 +75,12 @@ add_mlir_dialect_library(MLIRROCDLIR
DEPENDS
MLIRROCDLOpsIncGen
MLIRROCDLConversionsIncGen
- )
-target_link_libraries(MLIRROCDLIR
- PUBLIC
- LLVMAsmParser
- LLVMCore
- LLVMSupport
+
+ LINK_COMPONENTS
+ AsmParser
+ Core
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRSideEffects
MLIRVectorToLLVM
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt b/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
index 216586e6242d..3e1342dcf2c9 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
@@ -3,10 +3,8 @@ add_mlir_dialect_library(MLIRLLVMIRTransforms
DEPENDS
MLIRLLVMPassIncGen
- )
-target_link_libraries(MLIRLLVMIRTransforms
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMIR
MLIRPass
diff --git a/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt
index acb2ab6d91d7..07cf5b357ab7 100644
--- a/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt
@@ -6,12 +6,9 @@ add_mlir_dialect_library(MLIRLinalgAnalysis
DEPENDS
intrinsics_gen
- )
-target_link_libraries(MLIRLinalgAnalysis
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRIR
MLIRLinalgOps
MLIRStandardOps
- LLVMSupport
)
diff --git a/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt b/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt
index 8ec3c6dd7d22..be1d459daa91 100644
--- a/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt
@@ -6,10 +6,8 @@ add_mlir_dialect_library(MLIRLinalgEDSC
DEPENDS
intrinsics_gen
- )
-target_link_libraries(MLIRLinalgEDSC
- PUBLIC
+ LINK_LIBS PUBLIC
MLIREDSC
MLIRIR
MLIRAffineOps
@@ -17,5 +15,4 @@ target_link_libraries(MLIRLinalgEDSC
MLIRLinalgOps
MLIRLoopOps
MLIRStandardOps
- LLVMSupport
)
diff --git a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
index c8464e277cbb..8f3d44ba1b53 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
@@ -13,9 +13,8 @@ add_mlir_dialect_library(MLIRLinalgTransforms
DEPENDS
intrinsics_gen
MLIRLinalgPassIncGen
- )
-target_link_libraries(MLIRLinalgTransforms
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIRAnalysis
MLIREDSC
diff --git a/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt
index 681a47d31271..12bf47cdc9b1 100644
--- a/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt
@@ -3,12 +3,11 @@ add_mlir_dialect_library(MLIRLinalgUtils
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
+
DEPENDS
intrinsics_gen
- )
-target_link_libraries(MLIRLinalgUtils
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIREDSC
MLIRIR
diff --git a/mlir/lib/Dialect/LoopOps/CMakeLists.txt b/mlir/lib/Dialect/LoopOps/CMakeLists.txt
index 44de8ada2150..ea72f25a303a 100644
--- a/mlir/lib/Dialect/LoopOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/LoopOps/CMakeLists.txt
@@ -8,15 +8,13 @@ add_mlir_dialect_library(MLIRLoopOps
DEPENDS
MLIRLoopOpsIncGen
- )
-target_link_libraries(MLIRLoopOps
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIREDSC
MLIRIR
MLIRLoopLikeInterface
MLIRSideEffects
MLIRStandardOps
- LLVMSupport
)
add_subdirectory(Transforms)
diff --git a/mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt b/mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt
index 13a6aa6f288a..0339d15f1fdc 100644
--- a/mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt
@@ -8,14 +8,12 @@ add_mlir_dialect_library(MLIRLoopOpsTransforms
DEPENDS
MLIRLoopPassIncGen
- )
-target_link_libraries(MLIRLoopOpsTransforms
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIRIR
MLIRPass
MLIRLoopOps
MLIRStandardOps
MLIRSupport
- LLVMSupport
)
diff --git a/mlir/lib/Dialect/OpenMP/CMakeLists.txt b/mlir/lib/Dialect/OpenMP/CMakeLists.txt
index 68a939ed4299..23f8cd4058f7 100644
--- a/mlir/lib/Dialect/OpenMP/CMakeLists.txt
+++ b/mlir/lib/Dialect/OpenMP/CMakeLists.txt
@@ -6,8 +6,7 @@ add_mlir_dialect_library(MLIROpenMP
DEPENDS
MLIROpenMPOpsIncGen
- )
-target_link_libraries(MLIROpenMP
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
diff --git a/mlir/lib/Dialect/Quant/CMakeLists.txt b/mlir/lib/Dialect/Quant/CMakeLists.txt
index 4f8382962206..19ac787de027 100644
--- a/mlir/lib/Dialect/Quant/CMakeLists.txt
+++ b/mlir/lib/Dialect/Quant/CMakeLists.txt
@@ -15,9 +15,8 @@ add_mlir_dialect_library(MLIRQuant
DEPENDS
MLIRQuantOpsIncGen
MLIRQuantPassIncGen
- )
-target_link_libraries(MLIRQuant
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRPass
MLIRSideEffects
diff --git a/mlir/lib/Dialect/SDBM/CMakeLists.txt b/mlir/lib/Dialect/SDBM/CMakeLists.txt
index 6f5a119408cf..db2b9ac85472 100644
--- a/mlir/lib/Dialect/SDBM/CMakeLists.txt
+++ b/mlir/lib/Dialect/SDBM/CMakeLists.txt
@@ -5,8 +5,7 @@ add_mlir_dialect_library(MLIRSDBM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SDBM
-)
-target_link_libraries(MLIRSDBM
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
diff --git a/mlir/lib/Dialect/SPIRV/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/CMakeLists.txt
index e6834ca2ef3e..8fe368aa04e6 100644
--- a/mlir/lib/Dialect/SPIRV/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/CMakeLists.txt
@@ -27,9 +27,8 @@ add_mlir_dialect_library(MLIRSPIRV
MLIRSPIRVOpsIncGen
MLIRSPIRVOpUtilsGen
MLIRSPIRVTargetAndABIIncGen
- )
-target_link_libraries(MLIRSPIRV
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRControlFlowInterfaces
MLIRIR
MLIRParser
diff --git a/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt
index 8f24491f4715..c04f801321ea 100644
--- a/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt
@@ -9,9 +9,8 @@ add_mlir_dialect_library(MLIRSPIRVSerialization
DEPENDS
MLIRSPIRVSerializationGen
- )
-target_link_libraries(MLIRSPIRVSerialization
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRSPIRV
MLIRSupport
diff --git a/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
index e388069d52ee..632194f213d6 100644
--- a/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
@@ -8,10 +8,8 @@ add_mlir_dialect_library(MLIRSPIRVTransforms
DEPENDS
MLIRSPIRVPassIncGen
- )
-target_link_libraries(MLIRSPIRVTransforms
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRPass
MLIRSPIRV
)
diff --git a/mlir/lib/Dialect/Shape/CMakeLists.txt b/mlir/lib/Dialect/Shape/CMakeLists.txt
index 4ed02acc3d46..1f198f7b8148 100644
--- a/mlir/lib/Dialect/Shape/CMakeLists.txt
+++ b/mlir/lib/Dialect/Shape/CMakeLists.txt
@@ -6,12 +6,10 @@ add_mlir_dialect_library(MLIRShape
DEPENDS
MLIRShapeOpsIncGen
- )
-target_link_libraries(MLIRShape
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRDialect
MLIRInferTypeOpInterface
MLIRIR
MLIRSideEffects
- LLVMSupport
)
diff --git a/mlir/lib/Dialect/StandardOps/CMakeLists.txt b/mlir/lib/Dialect/StandardOps/CMakeLists.txt
index 471674c0ca76..6d83cbb375ae 100644
--- a/mlir/lib/Dialect/StandardOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/StandardOps/CMakeLists.txt
@@ -8,14 +8,12 @@ add_mlir_dialect_library(MLIRStandardOps
DEPENDS
MLIRStandardOpsIncGen
- )
-target_link_libraries(MLIRStandardOps
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRCallInterfaces
MLIRControlFlowInterfaces
MLIREDSC
MLIRIR
MLIRSideEffects
MLIRViewLikeInterface
- LLVMSupport
)
diff --git a/mlir/lib/Dialect/Vector/CMakeLists.txt b/mlir/lib/Dialect/Vector/CMakeLists.txt
index 3e1d8de0d3ba..9ccbb76b7bd2 100644
--- a/mlir/lib/Dialect/Vector/CMakeLists.txt
+++ b/mlir/lib/Dialect/Vector/CMakeLists.txt
@@ -10,9 +10,8 @@ add_mlir_dialect_library(MLIRVector
DEPENDS
MLIRVectorOpsIncGen
MLIRVectorTransformPatternsIncGen
- )
-target_link_libraries(MLIRVector
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIREDSC
MLIRIR
MLIRStandardOps
diff --git a/mlir/lib/EDSC/CMakeLists.txt b/mlir/lib/EDSC/CMakeLists.txt
index 1435dbb22926..6d56f263f271 100644
--- a/mlir/lib/EDSC/CMakeLists.txt
+++ b/mlir/lib/EDSC/CMakeLists.txt
@@ -8,10 +8,8 @@ add_mlir_library(MLIREDSC
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/EDSC
- )
-target_link_libraries(MLIREDSC
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRIR
MLIRSupport
)
@@ -21,9 +19,8 @@ add_mlir_library(MLIREDSCInterface
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/EDSC
- )
-target_link_libraries(MLIREDSCInterface
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRSupport
MLIRParser
diff --git a/mlir/lib/ExecutionEngine/CMakeLists.txt b/mlir/lib/ExecutionEngine/CMakeLists.txt
index df3268a49d59..e4cea32f4fc4 100644
--- a/mlir/lib/ExecutionEngine/CMakeLists.txt
+++ b/mlir/lib/ExecutionEngine/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Exclude these from libMLIR.so because the JIT infrastructure
+# is a big dependency which most don't need.
+
set(LLVM_OPTIONAL_SOURCES
CRunnerUtils.cpp
ExecutionEngine.cpp
@@ -5,41 +8,60 @@ set(LLVM_OPTIONAL_SOURCES
OptUtils.cpp
)
-llvm_map_components_to_libnames(outlibs "nativecodegen" "IPO")
add_mlir_library(MLIRExecutionEngine
ExecutionEngine.cpp
OptUtils.cpp
+ EXCLUDE_FROM_LIBMLIR
+
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/ExecutionEngine
+
+ LINK_COMPONENTS
+ Core
+ ExecutionEngine
+ Object
+ OrcJIT
+ JITLink
+ Analysis
+ AggressiveInstCombine
+ InstCombine
+ MC
+ ScalarOpts
+ Target
+ Vectorize
+ TransformUtils
+ nativecodegen
+ IPO
)
target_link_libraries(MLIRExecutionEngine
PUBLIC
MLIRLLVMIR
MLIRTargetLLVMIR
- LLVMExecutionEngine
- LLVMObject
- LLVMOrcJIT
- LLVMJITLink
- LLVMSupport
- LLVMAnalysis
- LLVMAggressiveInstCombine
- LLVMInstCombine
- LLVMMC
- LLVMScalarOpts
- LLVMTarget
- LLVMVectorize
- LLVMTransformUtils
-
- ${outlibs})
-
-add_llvm_library(mlir_c_runner_utils SHARED CRunnerUtils.cpp)
+ )
+
+add_mlir_library(mlir_c_runner_utils
+ SHARED
+ CRunnerUtils.cpp
+
+ EXCLUDE_FROM_LIBMLIR
+ )
set_property(TARGET mlir_c_runner_utils PROPERTY CXX_STANDARD 11)
-add_llvm_library(mlir_c_runner_utils_static CRunnerUtils.cpp)
+
+add_mlir_library(mlir_c_runner_utils_static
+ CRunnerUtils.cpp
+
+ EXCLUDE_FROM_LIBMLIR
+ )
set_property(TARGET mlir_c_runner_utils_static PROPERTY CXX_STANDARD 11)
target_compile_definitions(mlir_c_runner_utils PRIVATE mlir_c_runner_utils_EXPORTS)
-add_llvm_library(mlir_runner_utils SHARED RunnerUtils.cpp)
+add_mlir_library(mlir_runner_utils
+ SHARED
+ RunnerUtils.cpp
+
+ EXCLUDE_FROM_LIBMLIR
+ )
target_link_libraries(mlir_runner_utils
PUBLIC
mlir_c_runner_utils_static
diff --git a/mlir/lib/IR/CMakeLists.txt b/mlir/lib/IR/CMakeLists.txt
index 88c36eee4c77..2d5f5cb9e2b4 100644
--- a/mlir/lib/IR/CMakeLists.txt
+++ b/mlir/lib/IR/CMakeLists.txt
@@ -9,9 +9,8 @@ add_mlir_library(MLIRIR
MLIRCallInterfacesIncGen
MLIROpAsmInterfacesIncGen
MLIRSymbolInterfacesIncGen
- )
-target_link_libraries(MLIRIR
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRSupport
LLVMSupport
)
diff --git a/mlir/lib/Interfaces/CMakeLists.txt b/mlir/lib/Interfaces/CMakeLists.txt
index 093b4faf3613..61b64148db41 100644
--- a/mlir/lib/Interfaces/CMakeLists.txt
+++ b/mlir/lib/Interfaces/CMakeLists.txt
@@ -16,9 +16,8 @@ add_mlir_library(MLIRCallInterfaces
DEPENDS
MLIRCallInterfacesIncGen
- )
-target_link_libraries(MLIRCallInterfaces
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
@@ -30,9 +29,8 @@ add_mlir_library(MLIRControlFlowInterfaces
DEPENDS
MLIRControlFlowInterfacesIncGen
- )
-target_link_libraries(MLIRControlFlowInterfaces
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
@@ -44,9 +42,8 @@ add_mlir_library(MLIRDerivedAttributeOpInterface
DEPENDS
MLIRDerivedAttributeOpInterfaceIncGen
- )
-target_link_libraries(MLIRDerivedAttributeOpInterface
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
@@ -58,9 +55,8 @@ add_mlir_library(MLIRInferTypeOpInterface
DEPENDS
MLIRInferTypeOpInterfaceIncGen
- )
-target_link_libraries(MLIRInferTypeOpInterface
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
@@ -72,9 +68,8 @@ add_mlir_library(MLIRLoopLikeInterface
DEPENDS
MLIRLoopLikeInterfaceIncGen
- )
-target_link_libraries(MLIRLoopLikeInterface
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
@@ -86,9 +81,8 @@ add_mlir_library(MLIRSideEffects
DEPENDS
MLIRSideEffectOpInterfacesIncGen
- )
-target_link_libraries(MLIRSideEffects
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
@@ -100,8 +94,7 @@ add_mlir_library(MLIRViewLikeInterface
DEPENDS
MLIRViewLikeInterfaceIncGen
- )
-target_link_libraries(MLIRViewLikeInterface
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
)
diff --git a/mlir/lib/Parser/CMakeLists.txt b/mlir/lib/Parser/CMakeLists.txt
index fe2e03030880..b9ab3f33ba20 100644
--- a/mlir/lib/Parser/CMakeLists.txt
+++ b/mlir/lib/Parser/CMakeLists.txt
@@ -6,10 +6,6 @@ add_mlir_library(MLIRParser
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Parser
- DEPENDS
- mlir-generic-headers
- )
-target_link_libraries(MLIRParser
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRIR
)
diff --git a/mlir/lib/Pass/CMakeLists.txt b/mlir/lib/Pass/CMakeLists.txt
index 7e86864cf6c4..c012b056dba3 100644
--- a/mlir/lib/Pass/CMakeLists.txt
+++ b/mlir/lib/Pass/CMakeLists.txt
@@ -4,9 +4,11 @@ add_mlir_library(MLIRPass
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Pass
- )
-target_link_libraries(MLIRPass
- PUBLIC
+
+ DEPENDS
+ mlir-generic-headers
+
+ LINK_LIBS PUBLIC
MLIRAnalysis
MLIRIR
- LLVMSupport)
+ )
diff --git a/mlir/lib/Support/CMakeLists.txt b/mlir/lib/Support/CMakeLists.txt
index a21a8cc29e0f..507ea41c8e50 100644
--- a/mlir/lib/Support/CMakeLists.txt
+++ b/mlir/lib/Support/CMakeLists.txt
@@ -13,10 +13,11 @@ add_mlir_library(MLIRSupport
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Support
- )
-target_link_libraries(MLIRSupport
- PUBLIC
- LLVMSupport
+
+ LINK_COMPONENTS
+ Support
+
+ LINK_LIBS PUBLIC
${LLVM_PTHREAD_LIB})
add_mlir_library(MLIROptLib
@@ -24,20 +25,30 @@ add_mlir_library(MLIROptLib
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Support
- )
-target_link_libraries(MLIROptLib
- PUBLIC
+
+ LINK_COMPONENTS
+ Support
+
+ LINK_LIBS PUBLIC
MLIRPass
MLIRParser
- LLVMSupport
MLIRSupport
)
-add_llvm_library(MLIRJitRunner
+# Exclude from libMLIR.so because the JIT infrastructure
+# is a big dependency which most don't need.
+add_mlir_library(MLIRJitRunner
JitRunner.cpp
-)
-target_link_libraries(MLIRJitRunner
- PUBLIC
+
+ EXCLUDE_FROM_LIBMLIR
+
+ LINK_COMPONENTS
+ Core
+ OrcJIT
+ JITLink
+ Support
+
+ LINK_LIBS PUBLIC
MLIRExecutionEngine
MLIRIR
MLIRParser
@@ -46,6 +57,4 @@ target_link_libraries(MLIRJitRunner
MLIRTransforms
MLIRStandardToLLVM
MLIRSupport
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/lib/TableGen/CMakeLists.txt b/mlir/lib/TableGen/CMakeLists.txt
index a395fdb14a7a..780c98a5660d 100644
--- a/mlir/lib/TableGen/CMakeLists.txt
+++ b/mlir/lib/TableGen/CMakeLists.txt
@@ -1,4 +1,8 @@
-add_llvm_library(LLVMMLIRTableGen
+# This library is unusual, since mlir-tblgen depends on it.
+# For non-obvious reasons, linking mlir-tblgen fails with
+# LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB unless
+# DISABLE_LLVM_LINK_LLVM_DYLIB is set.
+llvm_add_library(LLVMMLIRTableGen STATIC
Argument.cpp
Attribute.cpp
Constraint.cpp
@@ -16,10 +20,14 @@ add_llvm_library(LLVMMLIRTableGen
Successor.cpp
Type.cpp
+ DISABLE_LLVM_LINK_LLVM_DYLIB
+
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/TableGen
+
+ LINK_COMPONENTS
+ TableGen
+ Demangle
)
-target_link_libraries(LLVMMLIRTableGen
- PUBLIC
- LLVMSupport
- LLVMTableGen)
+
+mlir_check_all_link_libraries(LLVMMLIRTableGen)
diff --git a/mlir/lib/Target/CMakeLists.txt b/mlir/lib/Target/CMakeLists.txt
index ab4008a717a6..4a0af66a04b1 100644
--- a/mlir/lib/Target/CMakeLists.txt
+++ b/mlir/lib/Target/CMakeLists.txt
@@ -4,17 +4,18 @@ add_mlir_translation_library(MLIRTargetLLVMIRModuleTranslation
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
+
DEPENDS
intrinsics_gen
- )
-target_link_libraries(MLIRTargetLLVMIRModuleTranslation
- PUBLIC
+
+ LINK_COMPONENTS
+ Core
+ FrontendOpenMP
+ TransformUtils
+
+ LINK_LIBS PUBLIC
MLIRLLVMIR
MLIRLLVMIRTransforms
- LLVMCore
- LLVMIRReader
- LLVMSupport
- LLVMTransformUtils
MLIRTranslation
)
@@ -23,11 +24,14 @@ add_mlir_translation_library(MLIRTargetAVX512
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
+
DEPENDS
MLIRLLVMAVX512ConversionsIncGen
- )
-target_link_libraries(MLIRTargetAVX512
- PUBLIC
+
+ LINK_COMPONENTS
+ Core
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMAVX512
MLIRLLVMIR
@@ -40,9 +44,12 @@ add_mlir_translation_library(MLIRTargetLLVMIR
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
- )
-target_link_libraries(MLIRTargetLLVMIR
- PUBLIC
+
+ LINK_COMPONENTS
+ Core
+ IRReader
+
+ LINK_LIBS PUBLIC
MLIRTargetLLVMIRModuleTranslation
)
@@ -51,11 +58,14 @@ add_mlir_translation_library(MLIRTargetNVVMIR
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
+
DEPENDS
intrinsics_gen
- )
-target_link_libraries(MLIRTargetNVVMIR
- PUBLIC
+
+ LINK_COMPONENTS
+ Core
+
+ LINK_LIBS PUBLIC
MLIRGPU
MLIRIR
MLIRLLVMIR
@@ -68,11 +78,14 @@ add_mlir_translation_library(MLIRTargetROCDLIR
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
+
DEPENDS
intrinsics_gen
- )
-target_link_libraries(MLIRTargetROCDLIR
- PUBLIC
+
+ LINK_COMPONENTS
+ Core
+
+ LINK_LIBS PUBLIC
MLIRGPU
MLIRIR
MLIRLLVMIR
diff --git a/mlir/lib/Transforms/CMakeLists.txt b/mlir/lib/Transforms/CMakeLists.txt
index 531813575849..97e71a578070 100644
--- a/mlir/lib/Transforms/CMakeLists.txt
+++ b/mlir/lib/Transforms/CMakeLists.txt
@@ -26,10 +26,8 @@ add_mlir_library(MLIRTransforms
DEPENDS
MLIRStandardOpsIncGen
MLIRTransformsPassIncGen
- )
-target_link_libraries(MLIRTransforms
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIRAnalysis
MLIRLoopLikeInterface
diff --git a/mlir/lib/Transforms/Utils/CMakeLists.txt b/mlir/lib/Transforms/Utils/CMakeLists.txt
index 1e0442179bf4..a06523ed4aaa 100644
--- a/mlir/lib/Transforms/Utils/CMakeLists.txt
+++ b/mlir/lib/Transforms/Utils/CMakeLists.txt
@@ -12,10 +12,8 @@ add_mlir_library(MLIRTransformUtils
DEPENDS
MLIRStandardOpsIncGen
- )
-target_link_libraries(MLIRTransformUtils
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIRAnalysis
MLIRLoopAnalysis
diff --git a/mlir/lib/Translation/CMakeLists.txt b/mlir/lib/Translation/CMakeLists.txt
index 2cd1a7c9ee3e..579de292fdb2 100644
--- a/mlir/lib/Translation/CMakeLists.txt
+++ b/mlir/lib/Translation/CMakeLists.txt
@@ -3,10 +3,8 @@ add_mlir_library(MLIRTranslation
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Translation
- )
-target_link_libraries(MLIRTranslation
- PUBLIC
- LLVMSupport
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRParser
)
diff --git a/mlir/test/EDSC/CMakeLists.txt b/mlir/test/EDSC/CMakeLists.txt
index d8e3be8f2079..dda2a25fdb04 100644
--- a/mlir/test/EDSC/CMakeLists.txt
+++ b/mlir/test/EDSC/CMakeLists.txt
@@ -1,3 +1,7 @@
+set(LLVM_LINK_COMPONENTS
+ Core
+ Support
+ )
add_llvm_executable(mlir-edsc-builder-api-test
builder-api-test.cpp
)
@@ -16,8 +20,6 @@ target_link_libraries(mlir-edsc-builder-api-test
MLIRStandardOps
MLIRTransforms
MLIRVector
- LLVMCore
- LLVMSupport
-)
+ )
target_include_directories(mlir-edsc-builder-api-test PRIVATE ..)
diff --git a/mlir/test/SDBM/CMakeLists.txt b/mlir/test/SDBM/CMakeLists.txt
index 9e0023750e68..633fae707c85 100644
--- a/mlir/test/SDBM/CMakeLists.txt
+++ b/mlir/test/SDBM/CMakeLists.txt
@@ -1,3 +1,8 @@
+set(LLVM_LINK_COMPONENTS
+ Core
+ Support
+ )
+
add_llvm_executable(mlir-sdbm-api-test
sdbm-api-test.cpp
)
@@ -9,8 +14,6 @@ target_link_libraries(mlir-sdbm-api-test
MLIRIR
MLIRSDBM
MLIRSupport
- LLVMCore
- LLVMSupport
)
target_include_directories(mlir-sdbm-api-test PRIVATE ..)
diff --git a/mlir/test/lib/Dialect/Affine/CMakeLists.txt b/mlir/test/lib/Dialect/Affine/CMakeLists.txt
index 56195ba2e875..68a0b06e0e31 100644
--- a/mlir/test/lib/Dialect/Affine/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Affine/CMakeLists.txt
@@ -1,16 +1,21 @@
-add_llvm_library(MLIRAffineTransformsTestPasses
+# Exclude tests from libMLIR.so
+add_mlir_library(MLIRAffineTransformsTestPasses
TestAffineDataCopy.cpp
TestAffineLoopUnswitching.cpp
TestLoopPermutation.cpp
TestParallelismDetection.cpp
TestVectorizationUtils.cpp
+ EXCLUDE_FROM_LIBMLIR
+
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- )
-target_link_libraries(MLIRAffineTransformsTestPasses PRIVATE
+ LINK_COMPONENTS
+ Core
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRPass
MLIRAffineTransforms
diff --git a/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt b/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
index 5035c9cc8d49..15d4673f381f 100644
--- a/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
@@ -1,12 +1,14 @@
-add_llvm_library(MLIRSPIRVTestPasses
+# Exclude tests from libMLIR.so
+add_mlir_library(MLIRSPIRVTestPasses
TestAvailability.cpp
+ EXCLUDE_FROM_LIBMLIR
+
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- )
-target_link_libraries(MLIRSPIRVTestPasses PRIVATE
+ LINK_LIBS PUBLIC
MLIRIR
MLIRPass
MLIRSPIRV
diff --git a/mlir/test/lib/Dialect/Test/CMakeLists.txt b/mlir/test/lib/Dialect/Test/CMakeLists.txt
index ae62fb04f98a..542be7b6ac9c 100644
--- a/mlir/test/lib/Dialect/Test/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Test/CMakeLists.txt
@@ -14,16 +14,17 @@ mlir_tablegen(TestOpStructs.cpp.inc -gen-struct-attr-defs)
mlir_tablegen(TestPatterns.inc -gen-rewriters)
add_public_tablegen_target(MLIRTestOpsIncGen)
-add_llvm_library(MLIRTestDialect
+# Exclude tests from libMLIR.so
+add_mlir_library(MLIRTestDialect
TestDialect.cpp
TestPatterns.cpp
+ EXCLUDE_FROM_LIBMLIR
+
DEPENDS
MLIRTestOpsIncGen
-)
-target_link_libraries(MLIRTestDialect
- PUBLIC
- LLVMSupport
+
+ LINK_LIBS PUBLIC
MLIRControlFlowInterfaces
MLIRDerivedAttributeOpInterface
MLIRDialect
diff --git a/mlir/test/lib/IR/CMakeLists.txt b/mlir/test/lib/IR/CMakeLists.txt
index c4e4ebc9b88e..0a55a82b1c3d 100644
--- a/mlir/test/lib/IR/CMakeLists.txt
+++ b/mlir/test/lib/IR/CMakeLists.txt
@@ -1,16 +1,15 @@
-add_llvm_library(MLIRTestIR
+# Exclude tests from libMLIR.so
+add_mlir_library(MLIRTestIR
TestFunc.cpp
TestMatchers.cpp
TestSideEffects.cpp
TestSymbolUses.cpp
- ADDITIONAL_HEADER_DIRS
- )
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../Dialect/Test)
-include_directories(${CMAKE_CURRENT_BINARY_DIR}/../Dialect/Test)
+ EXCLUDE_FROM_LIBMLIR
-target_link_libraries(MLIRTestIR
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRPass
MLIRTestDialect
)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../Dialect/Test)
+include_directories(${CMAKE_CURRENT_BINARY_DIR}/../Dialect/Test)
diff --git a/mlir/test/lib/Pass/CMakeLists.txt b/mlir/test/lib/Pass/CMakeLists.txt
index 7d79e1137f40..608141e349d1 100644
--- a/mlir/test/lib/Pass/CMakeLists.txt
+++ b/mlir/test/lib/Pass/CMakeLists.txt
@@ -1,11 +1,13 @@
-add_llvm_library(MLIRTestPass
+# Exclude tests from libMLIR.so
+add_mlir_library(MLIRTestPass
TestPassManager.cpp
+ EXCLUDE_FROM_LIBMLIR
+
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Pass
- )
-target_link_libraries(MLIRTestPass
- PUBLIC
+
+ LINK_LIBS PUBLIC
MLIRIR
MLIRPass
)
diff --git a/mlir/test/lib/Transforms/CMakeLists.txt b/mlir/test/lib/Transforms/CMakeLists.txt
index 33129a9a9e0b..248da51bcec7 100644
--- a/mlir/test/lib/Transforms/CMakeLists.txt
+++ b/mlir/test/lib/Transforms/CMakeLists.txt
@@ -1,4 +1,5 @@
-add_llvm_library(MLIRTestTransforms
+# Exclude tests from libMLIR.so
+add_mlir_library(MLIRTestTransforms
TestAllReduceLowering.cpp
TestBufferPlacement.cpp
TestCallGraph.cpp
@@ -20,21 +21,16 @@ add_llvm_library(MLIRTestTransforms
TestVectorToLoopsConversion.cpp
TestVectorTransforms.cpp
+ EXCLUDE_FROM_LIBMLIR
+
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Transforms
DEPENDS
MLIRStandardOpsIncGen
MLIRTestVectorTransformPatternsIncGen
-)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../Dialect/Test)
-include_directories(${CMAKE_CURRENT_BINARY_DIR}/../Dialect/Test)
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../DeclarativeTransforms)
-include_directories(${CMAKE_CURRENT_BINARY_DIR}/../DeclarativeTransforms)
-target_link_libraries(MLIRTestTransforms
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRAffineOps
MLIRAnalysis
MLIREDSC
@@ -51,3 +47,8 @@ target_link_libraries(MLIRTestTransforms
MLIRVectorToLoops
MLIRVector
)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../Dialect/Test)
+include_directories(${CMAKE_CURRENT_BINARY_DIR}/../Dialect/Test)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../DeclarativeTransforms)
+include_directories(${CMAKE_CURRENT_BINARY_DIR}/../DeclarativeTransforms)
diff --git a/mlir/tools/mlir-cpu-runner/CMakeLists.txt b/mlir/tools/mlir-cpu-runner/CMakeLists.txt
index 9903e8d86e7e..596012c88228 100644
--- a/mlir/tools/mlir-cpu-runner/CMakeLists.txt
+++ b/mlir/tools/mlir-cpu-runner/CMakeLists.txt
@@ -1,6 +1,12 @@
+set(LLVM_LINK_COMPONENTS
+ Core
+ Support
+ nativecodegen
+ )
+
add_llvm_tool(mlir-cpu-runner
mlir-cpu-runner.cpp
-)
+ )
llvm_update_compile_flags(mlir-cpu-runner)
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
target_link_libraries(mlir-cpu-runner PRIVATE
@@ -14,6 +20,4 @@ target_link_libraries(mlir-cpu-runner PRIVATE
MLIRParser
MLIRTargetLLVMIR
MLIRSupport
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt b/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt
index b4fa6e35fc9a..3736a18b2009 100644
--- a/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt
+++ b/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt
@@ -1,3 +1,7 @@
+set(LLVM_LINK_COMPONENTS
+ Core
+ Support
+ )
add_llvm_tool(mlir-linalg-ods-gen
mlir-linalg-ods-gen.cpp
)
@@ -5,6 +9,4 @@ llvm_update_compile_flags(mlir-linalg-ods-gen)
target_link_libraries(mlir-linalg-ods-gen PRIVATE
MLIRParser
MLIRSupport
- LLVMCore
- LLVMSupport
)
diff --git a/mlir/tools/mlir-opt/CMakeLists.txt b/mlir/tools/mlir-opt/CMakeLists.txt
index 55b5762923c3..2504b04420b7 100644
--- a/mlir/tools/mlir-opt/CMakeLists.txt
+++ b/mlir/tools/mlir-opt/CMakeLists.txt
@@ -4,6 +4,12 @@ set(LLVM_OPTIONAL_SOURCES
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
+set(LLVM_LINK_COMPONENTS
+ Core
+ Support
+ AsmParser
+ )
+
set(LIBS
${dialect_libs}
${conversion_libs}
@@ -25,22 +31,26 @@ set(LIBS
MLIRSupport
MLIRIR
MLIROptLib
- LLVMSupport
- LLVMCore
- LLVMAsmParser
)
-add_llvm_library(MLIRMlirOptMain
+# Exclude from libMLIR.so because this has static options intended for
+# opt-like tools only.
+add_mlir_library(MLIRMlirOptMain
mlir-opt.cpp
-)
-target_link_libraries(MLIRMlirOptMain
- PUBLIC
+
+ EXCLUDE_FROM_LIBMLIR
+
+ LINK_LIBS
${LIBS}
-)
+ )
add_llvm_tool(mlir-opt
- mlir-opt.cpp
-)
+ mlir-opt.cpp
+ DEPENDS
+ ${LIBS}
+ )
+target_link_libraries(mlir-opt PRIVATE ${LIBS})
llvm_update_compile_flags(mlir-opt)
-target_link_libraries(mlir-opt PRIVATE ${LIBS} ${targets_to_link})
+
+mlir_check_link_libraries(mlir-opt)
diff --git a/mlir/tools/mlir-shlib/CMakeLists.txt b/mlir/tools/mlir-shlib/CMakeLists.txt
index d0e2e959652f..32fe833cee4e 100644
--- a/mlir/tools/mlir-shlib/CMakeLists.txt
+++ b/mlir/tools/mlir-shlib/CMakeLists.txt
@@ -8,8 +8,10 @@ if (MSVC)
return()
endif()
-get_property(mlir_libs GLOBAL PROPERTY MLIR_ALL_LIBS)
+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)
@@ -19,23 +21,32 @@ foreach (lib ${mlir_libs})
else()
list(APPEND _OBJECTS $<TARGET_OBJECTS:obj.${lib}>)
endif()
- list(APPEND _DEPS $<TARGET_PROPERTY:${lib},LINK_LIBRARIES>)
+ # 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()
-# libMLIR.so depends on LLVM components. To avoid multiple
-# copies of those LLVM components, libMLIR.so depends on libLLVM.so.
-# This probably won't work if some LLVM components are not included
-# in libLLVM.so.
if(LLVM_BUILD_LLVM_DYLIB)
- add_llvm_library(MLIR
+ add_mlir_library(
+ MLIR
SHARED
${INSTALL_WITH_TOOLCHAIN}
-
mlir-shlib.cpp
- )
- target_link_libraries(MLIR PRIVATE LLVM ${LLVM_PTHREAD_LIB})
+ ${_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)
diff --git a/mlir/tools/mlir-tblgen/CMakeLists.txt b/mlir/tools/mlir-tblgen/CMakeLists.txt
index 19e6230e54ac..4c54e250f2c5 100644
--- a/mlir/tools/mlir-tblgen/CMakeLists.txt
+++ b/mlir/tools/mlir-tblgen/CMakeLists.txt
@@ -1,6 +1,7 @@
set(LLVM_LINK_COMPONENTS
- MLIRTableGen
+ Demangle
Support
+ TableGen
)
add_tablegen(mlir-tblgen MLIR
@@ -19,4 +20,10 @@ add_tablegen(mlir-tblgen MLIR
SPIRVUtilsGen.cpp
StructsGen.cpp
)
+
set_target_properties(mlir-tblgen PROPERTIES FOLDER "Tablegenning")
+target_link_libraries(mlir-tblgen
+ PRIVATE
+ LLVMMLIRTableGen)
+
+mlir_check_all_link_libraries(mlir-tblgen)
diff --git a/mlir/tools/mlir-translate/CMakeLists.txt b/mlir/tools/mlir-translate/CMakeLists.txt
index 9dc5971703ab..897e7adc03bd 100644
--- a/mlir/tools/mlir-translate/CMakeLists.txt
+++ b/mlir/tools/mlir-translate/CMakeLists.txt
@@ -1,16 +1,24 @@
+set(LLVM_LINK_COMPONENTS
+ Support
+ )
+
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(translation_libs GLOBAL PROPERTY MLIR_TRANSLATION_LIBS)
-set(LIBS
+
+add_llvm_tool(mlir-translate
+ mlir-translate.cpp
+ )
+llvm_update_compile_flags(mlir-translate)
+target_link_libraries(mlir-translate
+ PRIVATE
${dialect_libs}
${translation_libs}
+ MLIRIR
MLIRParser
MLIRPass
MLIRSPIRV
MLIRTranslation
MLIRSupport
-)
-add_llvm_tool(mlir-translate
- mlir-translate.cpp
-)
-llvm_update_compile_flags(mlir-translate)
-target_link_libraries(mlir-translate PRIVATE MLIRIR MLIRTranslation ${LIBS} LLVMSupport)
+ )
+
+mlir_check_link_libraries(mlir-translate)
More information about the Mlir-commits
mailing list