diff options
author | Valentin Churavy <v.churavy@gmail.com> | 2020-04-23 16:41:14 -0700 |
---|---|---|
committer | Stephen Neuendorffer <stephen.neuendorffer@xilinx.com> | 2020-05-04 11:40:46 -0700 |
commit | 4f0f436749c264c16eb226c9b9b132e07e3650a6 (patch) | |
tree | 47584abccf74ce24e4d1d5bc8b65811f29ed90ff | |
parent | 9ae2564396984cdffefb53767246d90cd32cbd66 (diff) | |
download | llvm-4f0f436749c264c16eb226c9b9b132e07e3650a6.zip llvm-4f0f436749c264c16eb226c9b9b132e07e3650a6.tar.gz llvm-4f0f436749c264c16eb226c9b9b132e07e3650a6.tar.bz2 |
[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@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@xilinx.com>
Differential Revision: https://reviews.llvm.org/D79243
Three commits have been squashed to avoid intermediate build breakage.
66 files changed, 518 insertions, 332 deletions
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake index 6a2856b..6c1ec38 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 e8822e5..de38f94 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 be797c6..c821c77 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 9a9f335..f622bf5 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 2fa57c5..63ddcda 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 11397b9..cf94a06 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 9324f7b..f08c2a5 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 a4c98e5..30a6b2c 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 b7c583d..8e0b691 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 2161abd..64e2eff 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 ecfc2d7..5fdfd07 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 9fd15670..28619e4 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 d4c7528..f0c75b1d 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 5b31429..2241609 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 ef7ad11..445088c 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 6d6b3b8..cc1f52e 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 515c0e2..c28ce51 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 eb1e7dc..6b15bf2 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 a07905b..e009865 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 8d186ae..d34065e 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 bcad44d..89c72ae 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 ed3b5b8..59ae13d 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 ad63b36..01863d4 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 bd1f25c..6404fe2 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 216586e..3e1342d 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 acb2ab6..07cf5b3 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 8ec3c6d..be1d459 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 c8464e2..8f3d44b 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 681a47d..12bf47c 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 44de8ad..ea72f25 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 13a6aa6..0339d15 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 68a939e..23f8cd4 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 4f83829..19ac787 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 6f5a119..db2b9ac 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 e6834ca2..8fe368a 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 8f24491f..c04f801 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 e388069..632194f 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 4ed02ac..1f198f7 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 471674c..6d83cbb 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 3e1d8de0..9ccbb76 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 1435dbb..6d56f26 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 df3268a..e4cea32 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 88c36ee..2d5f5cb 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 093b4fa..61b64148 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 fe2e030..b9ab3f3 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 7e86864..c012b05 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 a21a8cc..507ea41 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 a395fdb..780c98a 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 ab4008a..4a0af66a 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 5318135..97e71a5 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 1e04421..a06523e 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 2cd1a7c..579de29 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 d8e3be8..dda2a25 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 9e00237..633fae7 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 56195ba..68a0b06 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 5035c9c..15d4673 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 ae62fb0..542be7b 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 c4e4ebc..0a55a82 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 7d79e113..608141e 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 33129a9..248da51 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 9903e8d..596012c 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 b4fa6e3..3736a18b 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 55b5762..2504b04 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 d0e2e95..32fe833 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 19e6230..4c54e25 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 9dc5971..897e7ad 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) |