Revert "[MLIR] Move from using target_link_libraries to LINK_LIBS for llvm libraries."

This reverts commit 7a6c68977114b91097d693e9cfcb636631f61f91.
This breaks the build with cmake 3.13.4, but succeeds with cmake 3.15.3
diff --git a/mlir/examples/toy/Ch6/CMakeLists.txt b/mlir/examples/toy/Ch6/CMakeLists.txt
index d22ee08..e46200d 100644
--- a/mlir/examples/toy/Ch6/CMakeLists.txt
+++ b/mlir/examples/toy/Ch6/CMakeLists.txt
@@ -41,9 +41,4 @@
     MLIRPass
     MLIRTargetLLVMIR
     MLIRTransforms
-    LLVMOrcJIT
-    LLVMSupport
-    LLVMX86CodeGen
-    LLVMX86Desc
-    LLVMX86Info
     )
diff --git a/mlir/examples/toy/Ch7/CMakeLists.txt b/mlir/examples/toy/Ch7/CMakeLists.txt
index 9f07903..7f67cc9 100644
--- a/mlir/examples/toy/Ch7/CMakeLists.txt
+++ b/mlir/examples/toy/Ch7/CMakeLists.txt
@@ -38,12 +38,6 @@
     MLIRIR
     MLIRParser
     MLIRPass
-    MLIRSupport
     MLIRTargetLLVMIR
     MLIRTransforms
-    LLVMOrcJIT
-    LLVMSupport
-    LLVMX86CodeGen
-    LLVMX86Desc
-    LLVMX86Info
     )
diff --git a/mlir/lib/Analysis/CMakeLists.txt b/mlir/lib/Analysis/CMakeLists.txt
index 23dcd05..9eccde5 100644
--- a/mlir/lib/Analysis/CMakeLists.txt
+++ b/mlir/lib/Analysis/CMakeLists.txt
@@ -22,13 +22,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Analysis
-
-  LINK_LIBS
-  MLIRAffineOps
-  MLIRIR
-  MLIRLoopOps
-  MLIRSupport
-  LLVMSupport
   )
 add_dependencies(MLIRAnalysis
   MLIRAffineOps
@@ -37,6 +30,8 @@
   MLIRLoopOps
   )
 
+target_link_libraries(MLIRAnalysis MLIRAffineOps MLIRLoopOps)
+
 add_llvm_library(MLIRLoopAnalysis
   AffineAnalysis.cpp
   AffineStructures.cpp
@@ -46,14 +41,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Analysis
-
-  LINK_LIBS
-  MLIRAffineOps
-  MLIRIR
-  MLIRLoopOps
-  MLIRStandardOps
-  MLIRSupport
-  LLVMSupport
   )
 add_dependencies(MLIRLoopAnalysis
   MLIRAffineOps
@@ -61,3 +48,5 @@
   MLIRTypeInferOpInterfaceIncGen
   MLIRLoopOps
   )
+
+target_link_libraries(MLIRLoopAnalysis MLIRAffineOps MLIRLoopOps)
diff --git a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
index 73ea74d..9d639e0 100644
--- a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
+++ b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
@@ -3,17 +3,7 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/AffineToStandard
-
-  LINK_LIBS
-  MLIRAffineOps
-  MLIRLoopOps
-  MLIRPass
-  MLIRStandardOps
-  MLIRTransforms
-  MLIRIR
-  LLVMCore
-  LLVMSupport
-  )
+)
 add_dependencies(
   MLIRAffineToStandard
 
@@ -23,3 +13,15 @@
   LLVMCore
   LLVMSupport
 )
+target_link_libraries(
+  MLIRAffineToStandard
+
+  MLIRAffineOps
+  MLIRLoopOps
+  MLIRPass
+  MLIRStandardOps
+  MLIRTransforms
+  MLIRIR
+  LLVMCore
+  LLVMSupport
+)
diff --git a/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt b/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt
index 4c682b4..65c976c 100644
--- a/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToCUDA/CMakeLists.txt
@@ -10,15 +10,11 @@
  list(APPEND SOURCES "ConvertKernelFuncToCubin.cpp")
 endif()
 
-add_mlir_conversion_library(MLIRGPUtoCUDATransforms
-  ${SOURCES}
-  LINK_LIBS
-  LLVMNVPTXCodeGen
-  LLVMNVPTXDesc
-  LLVMNVPTXInfo
+add_mlir_conversion_library(MLIRGPUtoCUDATransforms ${SOURCES})
+target_link_libraries(MLIRGPUtoCUDATransforms
   MLIRGPU
   MLIRLLVMIR
   MLIRNVVMIR
   MLIRPass
   MLIRTargetNVVMIR
-  )
+)
diff --git a/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt b/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
index 146c8a1..339b2b7 100644
--- a/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
@@ -4,21 +4,17 @@
 
 add_mlir_conversion_library(MLIRGPUtoNVVMTransforms
   LowerGpuOpsToNVVMOps.cpp
-
-  LINK_LIBS
-  LLVMCore
-  LLVMSupport
-  MLIRGPU
-  MLIRIR
-  MLIRLLVMIR
-  MLIRNVVMIR
-  MLIRPass
-  MLIRStandardOps
-  MLIRStandardToLLVM
-  MLIRSupport
-  MLIRTransforms
-  MLIRTransformUtils
   )
 
 add_dependencies(MLIRGPUtoNVVMTransforms
   MLIRGPUToNVVMIncGen)
+
+target_link_libraries(MLIRGPUtoNVVMTransforms
+  LLVMSupport
+  MLIRGPU
+  MLIRLLVMIR
+  MLIRNVVMIR
+  MLIRPass
+  MLIRStandardToLLVM
+  MLIRTransformUtils
+  )
diff --git a/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt b/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
index ea3a340..7786898 100644
--- a/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
@@ -1,16 +1,11 @@
 add_mlir_conversion_library(MLIRGPUtoROCDLTransforms
   LowerGpuOpsToROCDLOps.cpp
-
-  LINK_LIBS
-  LLVMCore
+  )
+target_link_libraries(MLIRGPUtoROCDLTransforms
   LLVMSupport
   MLIRGPU
-  MLIRIR
   MLIRLLVMIR
   MLIRROCDLIR
   MLIRPass
   MLIRStandardToLLVM
-  MLIRStandardOps
-  MLIRTransforms
-  MLIRTransformUtils
   )
diff --git a/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt
index 36f8ad2..e59c48e 100644
--- a/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt
@@ -5,19 +5,18 @@
 add_mlir_conversion_library(MLIRGPUtoSPIRVTransforms
   ConvertGPUToSPIRV.cpp
   ConvertGPUToSPIRVPass.cpp
+  )
 
-  LINK_LIBS
+add_dependencies(MLIRGPUtoSPIRVTransforms
+  MLIRGPUToSPIRVIncGen)
+
+target_link_libraries(MLIRGPUtoSPIRVTransforms
   MLIRGPU
   MLIRIR
-  MLIRLoopOps
   MLIRPass
   MLIRSPIRV
   MLIRStandardOps
   MLIRStandardToSPIRVTransforms
   MLIRSupport
   MLIRTransforms
-  LLVMSupport
   )
-
-add_dependencies(MLIRGPUtoSPIRVTransforms
-  MLIRGPUToSPIRVIncGen)
diff --git a/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt b/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt
index 2280d83..c634117 100644
--- a/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/LinalgToLLVM/CMakeLists.txt
@@ -3,19 +3,20 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/LinalgToLLVM
-
-  LINK_LIBS
+)
+set(LIBS
   MLIRAffineToStandard
   MLIREDSC
   MLIRIR
   MLIRLinalgOps
   MLIRLLVMIR
   MLIRLoopToStandard
-  MLIRPass
-  MLIRStandardOps
   MLIRStandardToLLVM
   MLIRVectorToLLVM
   MLIRTransforms
   LLVMCore
   LLVMSupport
   )
+
+add_dependencies(MLIRLinalgToLLVM ${LIBS})
+target_link_libraries(MLIRLinalgToLLVM ${LIBS})
diff --git a/mlir/lib/Conversion/LinalgToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/LinalgToSPIRV/CMakeLists.txt
index 1b5236e..5f00034 100644
--- a/mlir/lib/Conversion/LinalgToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/LinalgToSPIRV/CMakeLists.txt
@@ -5,15 +5,13 @@
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
+  )
 
-  LINK_LIBS
+target_link_libraries(MLIRLinalgToSPIRVTransforms
   MLIRIR
   MLIRLinalgOps
   MLIRLinalgUtils
   MLIRPass
   MLIRSPIRV
   MLIRSupport
-  MLIRTransforms
-  MLIRTransformUtils
-  LLVMSupport
   )
diff --git a/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt b/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt
index db17dd8..4297346 100644
--- a/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt
+++ b/mlir/lib/Conversion/LoopToStandard/CMakeLists.txt
@@ -3,17 +3,16 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/LoopToStandard
+)
+add_dependencies(
+  MLIRLoopToStandard
 
-  LINK_LIBS
-  MLIRIR
   MLIRLoopOps
-  MLIRPass
-  MLIRStandardOps
   MLIRTransforms
   LLVMCore
   LLVMSupport
-  )
-add_dependencies(
+)
+target_link_libraries(
   MLIRLoopToStandard
 
   MLIRLoopOps
diff --git a/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt b/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt
index 739c5b8..c2f3c2a 100644
--- a/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt
+++ b/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt
@@ -4,12 +4,10 @@
   MLIRGPU
   MLIRIR
   MLIRLinalgOps
-  MLIRLoopOps
   MLIRPass
   MLIRStandardOps
   MLIRSupport
   MLIRTransforms
-  MLIRTransformUtils
   LLVMSupport
 )
 
@@ -19,8 +17,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/LoopsToGPU
-
-  LINK_LIBS
-  ${LIBS}
-  )
+)
 add_dependencies(MLIRLoopsToGPU ${LIBS})
+target_link_libraries(MLIRLoopsToGPU ${LIBS})
diff --git a/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt b/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt
index 36f9d60..3e8f72b 100644
--- a/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/StandardToLLVM/CMakeLists.txt
@@ -3,17 +3,16 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/StandardToLLVM
+)
+add_dependencies(
+  MLIRStandardToLLVM
 
-  LINK_LIBS
-  MLIRIR
   MLIRLLVMIR
-  MLIRPass
-  MLIRStandardOps
   MLIRTransforms
   LLVMCore
   LLVMSupport
-  )
-add_dependencies(
+)
+target_link_libraries(
   MLIRStandardToLLVM
 
   MLIRLLVMIR
diff --git a/mlir/lib/Conversion/StandardToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/StandardToSPIRV/CMakeLists.txt
index 6ba6c31..f02f68d 100644
--- a/mlir/lib/Conversion/StandardToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/StandardToSPIRV/CMakeLists.txt
@@ -10,18 +10,17 @@
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
-
-  LINK_LIBS
-  MLIRIR
-  MLIRPass
-  MLIRSPIRV
-  MLIRSupport
-  MLIRTransforms
-  MLIRTransformUtils
-  MLIRSPIRV
-  MLIRStandardOps
-  LLVMSupport
   )
 
 add_dependencies(MLIRStandardToSPIRVTransforms
   MLIRStandardToSPIRVIncGen)
+
+target_link_libraries(MLIRStandardToSPIRVTransforms
+  MLIRIR
+  MLIRPass
+  MLIRSPIRV
+  MLIRSupport
+  MLIRTransformUtils
+  MLIRSPIRV
+  MLIRStandardOps
+  )
diff --git a/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt b/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
index bba4314..5a89f39 100644
--- a/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
@@ -3,16 +3,15 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/VectorToLLVM
-
-  LINK_LIBS
-  MLIRIR
+)
+set(LIBS
   MLIRLLVMIR
-  MLIRPass
-  MLIRStandardOps
   MLIRStandardToLLVM
   MLIRVectorOps
   MLIRTransforms
-  MLIRTransformUtils
   LLVMCore
   LLVMSupport
-)
+  )
+
+add_dependencies(MLIRVectorToLLVM ${LIBS})
+target_link_libraries(MLIRVectorToLLVM ${LIBS})
diff --git a/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt b/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt
index 0d95365..0dccea9 100644
--- a/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToLoops/CMakeLists.txt
@@ -3,17 +3,14 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/VectorToLoops
-
-  LINK_LIBS
-  MLIRAffineOps
+)
+set(LIBS
   MLIREDSC
-  MLIRIR
   MLIRLLVMIR
-  MLIRLoopOps
-  MLIRStandardOps
   MLIRTransforms
-  MLIRTransformUtils
-  MLIRVectorOps
   LLVMCore
   LLVMSupport
   )
+
+add_dependencies(MLIRVectorToLoops ${LIBS})
+target_link_libraries(MLIRVectorToLoops ${LIBS})
diff --git a/mlir/lib/Dialect/AffineOps/CMakeLists.txt b/mlir/lib/Dialect/AffineOps/CMakeLists.txt
index 749e7e2..1c1c95c 100644
--- a/mlir/lib/Dialect/AffineOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/AffineOps/CMakeLists.txt
@@ -5,12 +5,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/AffineOps
-
-  LINK_LIBS
-  MLIREDSC
-  MLIRIR
-  MLIRStandardOps
-  LLVMSupport
   )
 add_dependencies(MLIRAffineOps
 
@@ -20,3 +14,9 @@
   MLIRLoopLikeInterfaceIncGen
   MLIRStandardOps
   )
+target_link_libraries(MLIRAffineOps
+
+  MLIREDSC
+  MLIRIR
+  MLIRStandardOps
+  )
diff --git a/mlir/lib/Dialect/CMakeLists.txt b/mlir/lib/Dialect/CMakeLists.txt
index d9d91b9..59186ed 100644
--- a/mlir/lib/Dialect/CMakeLists.txt
+++ b/mlir/lib/Dialect/CMakeLists.txt
@@ -22,8 +22,5 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect
-
-  LINK_LIBS
-  MLIRIR
-  LLVMSupport
   )
+target_link_libraries(MLIRDialect MLIRIR)
diff --git a/mlir/lib/Dialect/FxpMathOps/CMakeLists.txt b/mlir/lib/Dialect/FxpMathOps/CMakeLists.txt
index e631fc6..021cade 100644
--- a/mlir/lib/Dialect/FxpMathOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/FxpMathOps/CMakeLists.txt
@@ -4,16 +4,14 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/FxpMathOps
+  )
 
-  LINK_LIBS
+target_link_libraries(MLIRFxpMathOps
   MLIRQuantOps
   MLIRIR
   MLIRPass
   MLIRSupport
   MLIRStandardOps
-  MLIRTransforms
-  MLIRTransformUtils
-  LLVMSupport
   )
 add_dependencies(MLIRFxpMathOps
                  MLIRFxpMathOpsIncGen
diff --git a/mlir/lib/Dialect/GPU/CMakeLists.txt b/mlir/lib/Dialect/GPU/CMakeLists.txt
index 595f8b7..41884a9 100644
--- a/mlir/lib/Dialect/GPU/CMakeLists.txt
+++ b/mlir/lib/Dialect/GPU/CMakeLists.txt
@@ -7,18 +7,7 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU
-
-  LINK_LIBS
-  MLIREDSC
-  MLIRIR
-  MLIRLLVMIR
-  MLIRLoopOps
-  MLIRPass
-  MLIRStandardOps
-  MLIRSupport
-  MLIRTransformUtils
-  LLVMSupport
-  )
+)
 add_dependencies(MLIRGPU
   MLIRGPUOpsIncGen
   MLIREDSC
@@ -28,3 +17,13 @@
   MLIRSupport
   MLIRTransformUtils
   LLVMSupport)
+target_link_libraries(MLIRGPU
+  MLIREDSC
+  MLIRIR
+  MLIRLLVMIR
+  MLIRLoopOps
+  MLIRPass
+  MLIRStandardOps
+  MLIRSupport
+  MLIRTransformUtils
+  LLVMSupport)
diff --git a/mlir/lib/Dialect/LLVMIR/CMakeLists.txt b/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
index eb32510..b0c4eb2 100644
--- a/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
+++ b/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
@@ -3,42 +3,24 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
-
-  LINK_LIBS
-  LLVMAsmParser
-  LLVMCore
-  LLVMSupport
-  MLIRIR
-  MLIRSupport
   )
 add_dependencies(MLIRLLVMIR MLIRLLVMOpsIncGen MLIRLLVMConversionsIncGen LLVMAsmParser LLVMCore LLVMSupport)
+target_link_libraries(MLIRLLVMIR LLVMAsmParser LLVMCore LLVMSupport MLIRIR)
 
 add_mlir_dialect_library(MLIRNVVMIR
   IR/NVVMDialect.cpp
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
-
-  LINK_LIBS
-  LLVMAsmParser
-  MLIRIR
-  MLIRLLVMIR
-  LLVMSupport
-  LLVMCore
   )
 add_dependencies(MLIRNVVMIR MLIRNVVMOpsIncGen MLIRNVVMConversionsIncGen LLVMAsmParser LLVMCore LLVMSupport)
-
+target_link_libraries(MLIRNVVMIR LLVMAsmParser MLIRIR MLIRLLVMIR LLVMSupport LLVMCore)
 
 add_mlir_dialect_library(MLIRROCDLIR
   IR/ROCDLDialect.cpp
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
-
-  LINK_LIBS
-  LLVMAsmParser
-  LLVMCore
-  LLVMSupport
-  MLIRIR
   )
 add_dependencies(MLIRROCDLIR MLIRROCDLOpsIncGen MLIRROCDLConversionsIncGen LLVMAsmParser LLVMCore LLVMSupport)
+target_link_libraries(MLIRROCDLIR LLVMAsmParser LLVMCore LLVMSupport MLIRIR)
diff --git a/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt
index 629e071..96698a9 100644
--- a/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Analysis/CMakeLists.txt
@@ -1,8 +1,7 @@
 set(LIBS
-  MLIRIR
+
   MLIRLinalgOps
   MLIRStandardOps
-  LLVMSupport
   )
 
 
@@ -13,9 +12,7 @@
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
   DEPENDS
   intrinsics_gen
-
-  LINK_LIBS
-  ${LIBS}
   )
 
 add_dependencies(MLIRLinalgAnalysis ${LIBS})
+target_link_libraries(MLIRLinalgAnalysis ${LIBS})
diff --git a/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt b/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt
index 6c0cc3c..dc87d7f 100644
--- a/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt
@@ -6,7 +6,6 @@
   MLIRLinalgOps
   MLIRLoopOps
   MLIRStandardOps
-  LLVMSupport
   )
 
 add_mlir_dialect_library(MLIRLinalgEDSC
@@ -16,9 +15,7 @@
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
   DEPENDS
   intrinsics_gen
-
-  LINK_LIBS
-  ${LIBS}
   )
 
 add_dependencies(MLIRLinalgEDSC ${LIBS})
+target_link_libraries(MLIRLinalgEDSC ${LIBS})
diff --git a/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt b/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt
index 3988daa..9dba1e5 100644
--- a/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt
@@ -1,8 +1,7 @@
 set(LIBS
+
   MLIRIR
   MLIRStandardOps
-  MLIRSupport
-  LLVMSupport
   )
 
 add_mlir_dialect_library(MLIRLinalgOps
@@ -13,12 +12,6 @@
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
   DEPENDS
   intrinsics_gen
-
-  LINK_LIBS
-  MLIRIR
-  MLIRStandardOps
-  MLIRSupport
-  LLVMSupport
   )
 
 add_dependencies(MLIRLinalgOps
@@ -28,3 +21,4 @@
   MLIRLinalgStructuredOpsIncGen
   MLIRLinalgStructuredOpsInterfaceIncGen
   )
+target_link_libraries(MLIRLinalgOps ${LIBS})
diff --git a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
index 5c1df04..763ef55 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
@@ -14,7 +14,6 @@
   MLIRStandardToLLVM
   MLIRTransformUtils
   MLIRVectorOps
-  LLVMSupport
   )
 
 add_mlir_dialect_library(MLIRLinalgTransforms
@@ -28,9 +27,6 @@
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
   DEPENDS
   intrinsics_gen
-
-  LINK_LIBS
-  ${LIBS}
   )
 
 add_dependencies(MLIRLinalgTransforms
@@ -38,3 +34,4 @@
   ${LIBS}
   MLIRLinalgTransformPatternsIncGen
   )
+target_link_libraries(MLIRLinalgTransforms ${LIBS})
diff --git a/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt
index 2bf36d0..76581e2 100644
--- a/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LIBS
-  MLIRAffineOps
+
   MLIREDSC
   MLIRIR
   MLIRLinalgOps
@@ -7,7 +7,6 @@
   MLIRPass
   MLIRStandardOps
   MLIRTransformUtils
-  LLVMSupport
   )
 
 add_mlir_dialect_library(MLIRLinalgUtils
@@ -18,8 +17,7 @@
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
   DEPENDS
   intrinsics_gen
-
-  LINK_LIBS
-  ${LIBS})
+  )
 
 add_dependencies(MLIRLinalgUtils ${LIBS})
+target_link_libraries(MLIRLinalgUtils ${LIBS})
diff --git a/mlir/lib/Dialect/LoopOps/CMakeLists.txt b/mlir/lib/Dialect/LoopOps/CMakeLists.txt
index e228654..98367d1 100644
--- a/mlir/lib/Dialect/LoopOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/LoopOps/CMakeLists.txt
@@ -5,12 +5,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/LoopOps
-
-  LINK_LIBS
-  MLIREDSC
-  MLIRIR
-  MLIRStandardOps
-  LLVMSupport
   )
 add_dependencies(MLIRLoopOps
 
@@ -20,5 +14,12 @@
   MLIRStandardOps
   LLVMSupport
   )
+target_link_libraries(MLIRLoopOps
+
+  MLIREDSC
+  MLIRIR
+  MLIRStandardOps
+  LLVMSupport
+  )
 
 add_subdirectory(Transforms)
diff --git a/mlir/lib/Dialect/OpenMP/CMakeLists.txt b/mlir/lib/Dialect/OpenMP/CMakeLists.txt
index 8e00e47..bf55088a 100644
--- a/mlir/lib/Dialect/OpenMP/CMakeLists.txt
+++ b/mlir/lib/Dialect/OpenMP/CMakeLists.txt
@@ -3,11 +3,7 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/OpenMP
-
-  LINK_LIBS
-  MLIRIR
-  LLVMCore
-  LLVMSupport
   )
 
 add_dependencies(MLIROpenMP MLIROpenMPOpsIncGen)
+target_link_libraries(MLIROpenMP MLIRIR)
diff --git a/mlir/lib/Dialect/QuantOps/CMakeLists.txt b/mlir/lib/Dialect/QuantOps/CMakeLists.txt
index 14acb91..12cb44f 100644
--- a/mlir/lib/Dialect/QuantOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/QuantOps/CMakeLists.txt
@@ -11,14 +11,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/QuantOps
-
-  LINK_LIBS
-  MLIRIR
-  MLIRPass
-  MLIRSupport
-  MLIRStandardOps
-  MLIRTransformUtils
-  LLVMSupport
   )
 add_dependencies(MLIRQuantOps
                  MLIRIR
@@ -26,3 +18,11 @@
                  MLIRQuantOpsIncGen
                  MLIRSupport
                  MLIRStandardOps)
+
+target_link_libraries(MLIRQuantOps
+  MLIRIR
+  MLIRPass
+  MLIRSupport
+  MLIRStandardOps
+  MLIRTransformUtils
+  )
diff --git a/mlir/lib/Dialect/SDBM/CMakeLists.txt b/mlir/lib/Dialect/SDBM/CMakeLists.txt
index b75e257..648d9f2 100644
--- a/mlir/lib/Dialect/SDBM/CMakeLists.txt
+++ b/mlir/lib/Dialect/SDBM/CMakeLists.txt
@@ -4,10 +4,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SDBM
-
-  LINK_LIBS
-  MLIRIR
-  MLIRSupport
-  LLVMSupport
-  )
+)
 add_dependencies(MLIRSDBM MLIRIR)
+target_link_libraries(MLIRSDBM MLIRIR)
diff --git a/mlir/lib/Dialect/SPIRV/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/CMakeLists.txt
index ba67e74..ad1bb4d 100644
--- a/mlir/lib/Dialect/SPIRV/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/CMakeLists.txt
@@ -13,14 +13,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
-
-  LINK_LIBS
-  MLIRIR
-  MLIRParser
-  MLIRStandardOps
-  MLIRSupport
-  MLIRTransforms
-  LLVMSupport
   )
 
 add_dependencies(MLIRSPIRV
@@ -32,6 +24,11 @@
   MLIRSPIRVOpUtilsGen
   MLIRSPIRVTargetAndABIIncGen)
 
+target_link_libraries(MLIRSPIRV
+  MLIRIR
+  MLIRParser
+  MLIRSupport
+  MLIRTransforms)
 
 add_subdirectory(Serialization)
 add_subdirectory(Transforms)
diff --git a/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt
index 543e1b4..3d9ea79 100644
--- a/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/Serialization/CMakeLists.txt
@@ -6,15 +6,13 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
-
-  LINK_LIBS
-  MLIRIR
-  MLIRParser
-  MLIRSPIRV
-  MLIRSupport
-  MLIRTranslation
-  LLVMSupport
   )
 
 add_dependencies(MLIRSPIRVSerialization
   MLIRSPIRVSerializationGen)
+
+target_link_libraries(MLIRSPIRVSerialization
+  MLIRIR
+  MLIRSPIRV
+  MLIRSupport
+  MLIRTranslation)
diff --git a/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
index 30c2c42..e9d6492 100644
--- a/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
@@ -4,13 +4,9 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
+  )
 
-  LINK_LIBS
-  MLIRIR
+target_link_libraries(MLIRSPIRVTransforms
   MLIRPass
   MLIRSPIRV
-  MLIRStandardOps
-  MLIRTransforms
-  MLIRTransformUtils
-  LLVMSupport
   )
diff --git a/mlir/lib/Dialect/StandardOps/CMakeLists.txt b/mlir/lib/Dialect/StandardOps/CMakeLists.txt
index e802e0c..c8af470 100644
--- a/mlir/lib/Dialect/StandardOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/StandardOps/CMakeLists.txt
@@ -5,13 +5,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/StandardOps
-
-  LINK_LIBS
-  MLIREDSC
-  MLIRIR
-  MLIRSupport
-  LLVMCore
-  LLVMSupport
   )
 add_dependencies(MLIRStandardOps
 
@@ -21,3 +14,9 @@
   MLIRStandardOpsIncGen
   LLVMSupport
   )
+target_link_libraries(MLIRStandardOps
+
+  MLIREDSC
+  MLIRIR
+  LLVMSupport
+  )
diff --git a/mlir/lib/Dialect/VectorOps/CMakeLists.txt b/mlir/lib/Dialect/VectorOps/CMakeLists.txt
index ff97a95..8bdce35 100644
--- a/mlir/lib/Dialect/VectorOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/VectorOps/CMakeLists.txt
@@ -6,15 +6,9 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/VectorOps
-
-  LINK_LIBS
-  MLIRIR
-  MLIRStandardOps
-  MLIRAffineOps
-  MLIRLoopOps
-  MLIRLoopAnalysis
-  LLVMSupport
   )
 
 add_dependencies(MLIRVectorOps MLIRVectorOpsIncGen)
 add_dependencies(MLIRVectorOps MLIRVectorTransformPatternsIncGen)
+
+target_link_libraries(MLIRVectorOps MLIRIR MLIRStandardOps MLIRAffineOps MLIRLoopOps MLIRLoopAnalysis)
diff --git a/mlir/lib/EDSC/CMakeLists.txt b/mlir/lib/EDSC/CMakeLists.txt
index 3d0290a..533d7ec 100644
--- a/mlir/lib/EDSC/CMakeLists.txt
+++ b/mlir/lib/EDSC/CMakeLists.txt
@@ -8,11 +8,12 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/EDSC
+  )
+target_link_libraries(MLIREDSC
+  PUBLIC
 
-  LINK_LIBS
   MLIRIR
   MLIRSupport
-  LLVMSupport
   )
 
 add_llvm_library(MLIREDSCInterface
@@ -20,11 +21,11 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/EDSC
-
-  LINK_LIBS
+  )
+add_dependencies(MLIREDSCInterface MLIRIR)
+target_link_libraries(MLIREDSCInterface
+  PUBLIC
   MLIRIR
   MLIRSupport
   MLIRParser
-  LLVMSupport
   )
-add_dependencies(MLIREDSCInterface MLIRIR)
diff --git a/mlir/lib/ExecutionEngine/CMakeLists.txt b/mlir/lib/ExecutionEngine/CMakeLists.txt
index c24917c1..dc20e5f 100644
--- a/mlir/lib/ExecutionEngine/CMakeLists.txt
+++ b/mlir/lib/ExecutionEngine/CMakeLists.txt
@@ -12,15 +12,13 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/ExecutionEngine
+  )
+target_link_libraries(MLIRExecutionEngine
 
-  LINK_LIBS
-  MLIRIR
   MLIRLLVMIR
-  MLIRSupport
   MLIRTargetLLVMIR
   LLVMBitReader
   LLVMBitWriter
-  LLVMCore
   LLVMExecutionEngine
   LLVMObject
   LLVMOrcJIT
@@ -34,8 +32,8 @@
   LLVMTarget
   LLVMVectorize
   LLVMTransformUtils
-  ${outlibs}
-  )
+
+  ${outlibs})
 
 add_llvm_library(mlir_c_runner_utils SHARED CRunnerUtils.cpp)
 target_compile_definitions(mlir_c_runner_utils PRIVATE mlir_c_runner_utils_EXPORTS)
diff --git a/mlir/lib/IR/CMakeLists.txt b/mlir/lib/IR/CMakeLists.txt
index 8802f6c..415d9d6 100644
--- a/mlir/lib/IR/CMakeLists.txt
+++ b/mlir/lib/IR/CMakeLists.txt
@@ -4,10 +4,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
-
-  LINK_LIBS
-  MLIRSupport
-  LLVMSupport
-  ${LLVM_PTHREAD_LIB}
   )
 add_dependencies(MLIRIR MLIRCallOpInterfacesIncGen MLIROpAsmInterfacesIncGen MLIRSupport LLVMSupport)
+target_link_libraries(MLIRIR MLIRSupport LLVMSupport)
diff --git a/mlir/lib/Parser/CMakeLists.txt b/mlir/lib/Parser/CMakeLists.txt
index 36ede65..9fd29ae 100644
--- a/mlir/lib/Parser/CMakeLists.txt
+++ b/mlir/lib/Parser/CMakeLists.txt
@@ -5,10 +5,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Parser
-
-  LINK_LIBS
-  MLIRIR
-  MLIRAnalysis
-  LLVMSupport
   )
 add_dependencies(MLIRParser MLIRIR MLIRAnalysis)
+target_link_libraries(MLIRParser MLIRIR MLIRAnalysis)
diff --git a/mlir/lib/Pass/CMakeLists.txt b/mlir/lib/Pass/CMakeLists.txt
index 54407d9..05122f5 100644
--- a/mlir/lib/Pass/CMakeLists.txt
+++ b/mlir/lib/Pass/CMakeLists.txt
@@ -4,12 +4,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Pass
-
-  LINK_LIBS
-  MLIRAnalysis
-  MLIRIR
-  MLIRSupport
-  LLVMIRReader
-  LLVMSupport
   )
 add_dependencies(MLIRPass MLIRAnalysis MLIRIR LLVMSupport)
+target_link_libraries(MLIRPass MLIRAnalysis MLIRIR LLVMSupport)
diff --git a/mlir/lib/Quantizer/CMakeLists.txt b/mlir/lib/Quantizer/CMakeLists.txt
index d87b7da..6e2c864 100644
--- a/mlir/lib/Quantizer/CMakeLists.txt
+++ b/mlir/lib/Quantizer/CMakeLists.txt
@@ -9,13 +9,6 @@
   Support/UniformSolvers.cpp
 
   ADDITIONAL_HEADER_DIRS
-
-  LINK_LIBS
-  MLIRIR
-  MLIRQuantOps
-  MLIRSupport
-  MLIRStandardOps
-  LLVMSupport
   )
 
 add_dependencies(MLIRQuantizerSupport
@@ -23,26 +16,30 @@
                  MLIRQuantOps
                  MLIRSupport
                  MLIRStandardOps)
+target_link_libraries(MLIRQuantizerSupport
+  MLIRIR
+  MLIRQuantOps
+  MLIRSupport
+  MLIRStandardOps
+  LLVMSupport
+  )
 
 # Configurations.
 add_llvm_library(MLIRQuantizerFxpMathConfig
   Configurations/FxpMathConfig.cpp
 
   ADDITIONAL_HEADER_DIRS
-
-  LINK_LIBS
-  MLIRIR
-  MLIRFxpMathOps
-  MLIRQuantOps
-  MLIRQuantizerSupport
-  MLIRStandardOps
-  MLIRSupport
-  LLVMSupport
   )
 
 add_dependencies(MLIRQuantizerFxpMathConfig
                  MLIRFxpMathOpsIncGen
                  MLIRQuantizerSupport)
+target_link_libraries(MLIRQuantizerFxpMathConfig
+  MLIRIR
+  MLIRFxpMathOps
+  MLIRQuantOps
+  MLIRQuantizerSupport
+  )
 
 # Transforms.
 add_llvm_library(MLIRQuantizerTransforms
@@ -51,18 +48,16 @@
   Transforms/RemoveInstrumentationPass.cpp
 
   ADDITIONAL_HEADER_DIRS
-
-  LINK_LIBS
-  MLIRIR
-  MLIRQuantizerFxpMathConfig
-  MLIRQuantizerSupport
-  MLIRQuantOps
-  MLIRPass
-  MLIRTransforms
-  MLIRTransformUtils
-  LLVMSupport
   )
 add_dependencies(MLIRQuantizerTransforms
   MLIRQuantizerFxpMathConfig
   MLIRQuantizerSupport
   MLIRPass)
+target_link_libraries(MLIRQuantizerTransforms
+  MLIRIR
+  MLIRQuantizerFxpMathConfig
+  MLIRQuantizerSupport
+  MLIRQuantOps
+  MLIRPass
+  LLVMSupport
+  )
diff --git a/mlir/lib/Support/CMakeLists.txt b/mlir/lib/Support/CMakeLists.txt
index 140c2ce..b8c0b17 100644
--- a/mlir/lib/Support/CMakeLists.txt
+++ b/mlir/lib/Support/CMakeLists.txt
@@ -14,24 +14,20 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Support
-
-  LINK_LIBS
-  LLVMSupport
-  ${LLVM_PTHREAD_LIB}
   )
+target_link_libraries(MLIRSupport LLVMSupport ${LLVM_PTHREAD_LIB})
 
 add_llvm_library(MLIROptLib
   MlirOptMain.cpp
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Support
-
-  LINK_LIBS
-  MLIRIR
+  )
+target_link_libraries(MLIROptLib
   MLIRPass
   MLIRParser
-  MLIRSupport
   LLVMSupport
+  MLIRSupport
   )
 
 add_llvm_library(MLIRTranslateClParser
@@ -39,22 +35,15 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Support
-
-  LINK_LIBS
-  LLVMSupport
-  MLIRAnalysis
-  MLIRIR
-  MLIRTranslation
-  MLIRParser
   )
+target_link_libraries(MLIRTranslateClParser LLVMSupport MLIRIR MLIRTranslation MLIRParser)
 
 add_llvm_library(MLIRJitRunner
   JitRunner.cpp
-
-  LINK_LIBS
+)
+target_link_libraries(MLIRJitRunner PRIVATE
   MLIRExecutionEngine
   MLIRIR
-  MLIRLLVMIR
   MLIRParser
   MLIRStandardOps
   MLIRTargetLLVMIR
@@ -62,9 +51,5 @@
   MLIRStandardToLLVM
   MLIRSupport
   LLVMCore
-  LLVMOrcJIT
   LLVMSupport
-  LLVMX86CodeGen
-  LLVMX86Desc
-  LLVMX86Info
-  )
+)
diff --git a/mlir/lib/TableGen/CMakeLists.txt b/mlir/lib/TableGen/CMakeLists.txt
index aa1e4a0..6317c66 100644
--- a/mlir/lib/TableGen/CMakeLists.txt
+++ b/mlir/lib/TableGen/CMakeLists.txt
@@ -15,8 +15,5 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/TableGen
-
-  LINK_LIBS
-  LLVMSupport
-  LLVMTableGen
   )
+target_link_libraries(LLVMMLIRTableGen LLVMSupport LLVMTableGen)
diff --git a/mlir/lib/Target/CMakeLists.txt b/mlir/lib/Target/CMakeLists.txt
index 93f997f..53786b9 100644
--- a/mlir/lib/Target/CMakeLists.txt
+++ b/mlir/lib/Target/CMakeLists.txt
@@ -4,74 +4,47 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
-
   DEPENDS
   intrinsics_gen
-
-  LINK_LIBS
-  MLIRLLVMIR
-  LLVMCore
-  LLVMIRReader
-  LLVMSupport
-  LLVMTransformUtils
-  MLIRIR
-  MLIRSupport
-  MLIRTranslation
   )
-
+target_link_libraries(MLIRTargetLLVMIRModuleTranslation
+  MLIRLLVMIR LLVMCore LLVMIRReader LLVMSupport LLVMTransformUtils
+  MLIRTranslation)
 add_llvm_library(MLIRTargetLLVMIR
   LLVMIR/ConvertFromLLVMIR.cpp
   LLVMIR/ConvertToLLVMIR.cpp
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
-
-  LINK_LIBS
-  MLIRIR
-  MLIRLLVMIR
-  MLIRSupport
-  MLIRTargetLLVMIRModuleTranslation
-  MLIRTranslation
-  LLVMCore
-  LLVMIRReader
-  LLVMSupport
   )
+target_link_libraries(MLIRTargetLLVMIR MLIRTargetLLVMIRModuleTranslation)
 add_llvm_library(MLIRTargetNVVMIR
   LLVMIR/ConvertToNVVMIR.cpp
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
-
   DEPENDS
   intrinsics_gen
-
-  LINK_LIBS
+  )
+target_link_libraries(MLIRTargetNVVMIR
   MLIRGPU
   MLIRIR
   MLIRLLVMIR
   MLIRNVVMIR
   MLIRTargetLLVMIRModuleTranslation
-  MLIRTranslation
-  LLVMCore
-  LLVMSupport
   )
-
 add_llvm_library(MLIRTargetROCDLIR
   LLVMIR/ConvertToROCDLIR.cpp
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
-
   DEPENDS
   intrinsics_gen
-
-  LINK_LIBS
+  )
+target_link_libraries(MLIRTargetROCDLIR
   MLIRGPU
   MLIRIR
   MLIRLLVMIR
   MLIRROCDLIR
   MLIRTargetLLVMIRModuleTranslation
-  MLIRTranslation
-  LLVMCore
-  LLVMSupport
   )
diff --git a/mlir/lib/Transforms/CMakeLists.txt b/mlir/lib/Transforms/CMakeLists.txt
index 7a98490..7d67100 100644
--- a/mlir/lib/Transforms/CMakeLists.txt
+++ b/mlir/lib/Transforms/CMakeLists.txt
@@ -26,21 +26,16 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Transforms
-
-  LINK_LIBS
-  MLIRAffineOps
-  MLIRAnalysis
-  MLIRIR
-  MLIRLoopOps
-  MLIRLoopAnalysis
-  MLIRPass
-  MLIRSupport
-  MLIRStandardOps
-  MLIRTransformUtils
-  MLIRVectorOps
-  LLVMSupport
   )
 
 add_dependencies(MLIRTransforms
   MLIRLoopLikeInterfaceIncGen
   MLIRStandardOpsIncGen)
+target_link_libraries(MLIRTransforms
+  MLIRAffineOps
+  MLIRAnalysis
+  MLIRLoopOps
+  MLIRPass
+  MLIRTransformUtils
+  MLIRVectorOps
+  )
diff --git a/mlir/lib/Transforms/Utils/CMakeLists.txt b/mlir/lib/Transforms/Utils/CMakeLists.txt
index d826a6b..bf4abf8 100644
--- a/mlir/lib/Transforms/Utils/CMakeLists.txt
+++ b/mlir/lib/Transforms/Utils/CMakeLists.txt
@@ -9,15 +9,14 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Transforms
+  )
 
-  LINK_LIBS
+add_dependencies(MLIRTransformUtils MLIRStandardOpsIncGen)
+target_link_libraries(MLIRTransformUtils
   MLIRAffineOps
   MLIRAnalysis
-  MLIRIR
   MLIRLoopAnalysis
   MLIRLoopOps
   MLIRPass
   MLIRStandardOps
-  LLVMSupport
   )
-add_dependencies(MLIRTransformUtils MLIRStandardOpsIncGen)
diff --git a/mlir/lib/Translation/CMakeLists.txt b/mlir/lib/Translation/CMakeLists.txt
index b8e809f..122db2e 100644
--- a/mlir/lib/Translation/CMakeLists.txt
+++ b/mlir/lib/Translation/CMakeLists.txt
@@ -3,7 +3,5 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Translation
-
-  LINK_LIBS
-  LLVMSupport
-)
+  )
+target_link_libraries(MLIRTranslation LLVMSupport)
diff --git a/mlir/test/EDSC/CMakeLists.txt b/mlir/test/EDSC/CMakeLists.txt
index 55e015b..b922c59 100644
--- a/mlir/test/EDSC/CMakeLists.txt
+++ b/mlir/test/EDSC/CMakeLists.txt
@@ -15,7 +15,6 @@
   MLIRStandardOps
   MLIRTransforms
   MLIRVectorOps
-  MLIRTransformUtils
   LLVMCore
   LLVMSupport
 )
diff --git a/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt b/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
index 1d6563c..5035c9c 100644
--- a/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
@@ -4,13 +4,11 @@
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
+  )
 
-  LINK_LIBS
+target_link_libraries(MLIRSPIRVTestPasses PRIVATE
   MLIRIR
   MLIRPass
   MLIRSPIRV
   MLIRSupport
-  MLIRTransforms
-  MLIRTransformUtils
-  LLVMSupport
   )
diff --git a/mlir/test/lib/IR/CMakeLists.txt b/mlir/test/lib/IR/CMakeLists.txt
index 355facc..b6b3c43 100644
--- a/mlir/test/lib/IR/CMakeLists.txt
+++ b/mlir/test/lib/IR/CMakeLists.txt
@@ -4,15 +4,12 @@
   TestSymbolUses.cpp
 
   ADDITIONAL_HEADER_DIRS
-
-  LINK_LIBS
-  MLIRIR
-  MLIRPass
-  MLIRStandardOps
-  LLVMSupport
   )
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../TestDialect)
 include_directories(${CMAKE_CURRENT_BINARY_DIR}/../TestDialect)
 add_dependencies(MLIRTestIR
   MLIRTestDialect
   )
+target_link_libraries(MLIRTestIR
+  MLIRPass
+  )
diff --git a/mlir/test/lib/Pass/CMakeLists.txt b/mlir/test/lib/Pass/CMakeLists.txt
index 9790095..3289a7a 100644
--- a/mlir/test/lib/Pass/CMakeLists.txt
+++ b/mlir/test/lib/Pass/CMakeLists.txt
@@ -3,9 +3,8 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Pass
-
-  LINK_LIBS
+  )
+target_link_libraries(MLIRTestPass
   MLIRIR
   MLIRPass
-  LLVMSupport
   )
diff --git a/mlir/test/lib/TestDialect/CMakeLists.txt b/mlir/test/lib/TestDialect/CMakeLists.txt
index d35caae..15459b9 100644
--- a/mlir/test/lib/TestDialect/CMakeLists.txt
+++ b/mlir/test/lib/TestDialect/CMakeLists.txt
@@ -14,9 +14,12 @@
 add_llvm_library(MLIRTestDialect
   TestDialect.cpp
   TestPatterns.cpp
-
-  LINK_LIBS
-  MLIRAnalysis
+)
+add_dependencies(MLIRTestDialect
+  MLIRTestOpsIncGen
+  MLIRTypeInferOpInterfaceIncGen
+)
+target_link_libraries(MLIRTestDialect
   MLIRDialect
   MLIRIR
   MLIRLinalgTransforms
@@ -25,7 +28,3 @@
   MLIRTransformUtils
   LLVMSupport
 )
-add_dependencies(MLIRTestDialect
-  MLIRTestOpsIncGen
-  MLIRTypeInferOpInterfaceIncGen
-)
diff --git a/mlir/test/lib/Transforms/CMakeLists.txt b/mlir/test/lib/Transforms/CMakeLists.txt
index 867a7b7..91672ea 100644
--- a/mlir/test/lib/Transforms/CMakeLists.txt
+++ b/mlir/test/lib/Transforms/CMakeLists.txt
@@ -22,25 +22,6 @@
 
   ADDITIONAL_HEADER_DIRS
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Transforms
-
-  LINK_LIBS
-  MLIRAffineOps
-  MLIRAnalysis
-  MLIRLoopAnalysis
-  MLIREDSC
-  MLIRGPU
-  MLIRIR
-  MLIRLinalgOps
-  MLIRLinalgTransforms
-  MLIRLoopOps
-  MLIRGPU
-  MLIRPass
-  MLIRStandardOps
-  MLIRTestDialect
-  MLIRTransformUtils
-  MLIRVectorToLoops
-  MLIRVectorOps
-  LLVMSupport
 )
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../TestDialect)
@@ -50,3 +31,18 @@
 add_dependencies(MLIRTestTransforms MLIRStandardOpsIncGen)
 add_dependencies(MLIRTestTransforms MLIRTestLinalgTransformPatternsIncGen)
 add_dependencies(MLIRTestTransforms MLIRTestVectorTransformPatternsIncGen)
+target_link_libraries(MLIRTestTransforms
+  MLIRAffineOps
+  MLIRAnalysis
+  MLIREDSC
+  MLIRGPU
+  MLIRLinalgOps
+  MLIRLinalgTransforms
+  MLIRLoopOps
+  MLIRGPU
+  MLIRPass
+  MLIRTestDialect
+  MLIRTransformUtils
+  MLIRVectorToLoops
+  MLIRVectorOps
+  )
diff --git a/mlir/test/mlir-cpu-runner/CMakeLists.txt b/mlir/test/mlir-cpu-runner/CMakeLists.txt
index 15a6397..a9d45f0 100644
--- a/mlir/test/mlir-cpu-runner/CMakeLists.txt
+++ b/mlir/test/mlir-cpu-runner/CMakeLists.txt
@@ -6,9 +6,7 @@
 add_llvm_library(cblas SHARED cblas.cpp)
 target_compile_definitions(cblas PRIVATE cblas_EXPORTS)
 
-add_llvm_library(cblas_interface SHARED cblas_interface.cpp
-  LINK_LIBS
-  cblas
-  )
+add_llvm_library(cblas_interface SHARED cblas_interface.cpp)
+target_link_libraries(cblas_interface PRIVATE cblas)
 target_compile_definitions(cblas_interface PRIVATE cblas_interface_EXPORTS)
 
diff --git a/mlir/tools/mlir-cuda-runner/CMakeLists.txt b/mlir/tools/mlir-cuda-runner/CMakeLists.txt
index babe13d..3c6dcba 100644
--- a/mlir/tools/mlir-cuda-runner/CMakeLists.txt
+++ b/mlir/tools/mlir-cuda-runner/CMakeLists.txt
@@ -25,15 +25,15 @@
 
   add_llvm_library(cuda-runtime-wrappers SHARED
     cuda-runtime-wrappers.cpp
-
-    LINK_LIBS
-    LLVMSupport
-    ${CUDA_RUNTIME_LIBRARY}
   )
   target_include_directories(cuda-runtime-wrappers
     PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
     LLVMSupport
   )
+  target_link_libraries(cuda-runtime-wrappers
+    LLVMSupport
+    ${CUDA_RUNTIME_LIBRARY}
+  )
 
   get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
   get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
diff --git a/mlir/tools/mlir-opt/CMakeLists.txt b/mlir/tools/mlir-opt/CMakeLists.txt
index 0eaed46..b415bf97 100644
--- a/mlir/tools/mlir-opt/CMakeLists.txt
+++ b/mlir/tools/mlir-opt/CMakeLists.txt
@@ -10,12 +10,11 @@
   MLIRPass
   MLIRTransforms
   MLIRSupport
-  LLVMSupport
-  )
+)
 add_llvm_library(MLIRMlirOptMain
   mlir-opt.cpp
-
-  LINK_LIBS
+)
+target_link_libraries(MLIRMlirOptMain
   ${LIB_LIBS}
 )
 
diff --git a/mlir/unittests/Dialect/SPIRV/CMakeLists.txt b/mlir/unittests/Dialect/SPIRV/CMakeLists.txt
index 84b442b..b444b5c 100644
--- a/mlir/unittests/Dialect/SPIRV/CMakeLists.txt
+++ b/mlir/unittests/Dialect/SPIRV/CMakeLists.txt
@@ -4,11 +4,8 @@
 )
 target_link_libraries(MLIRSPIRVTests
   PRIVATE
-  MLIRIR
   MLIRSPIRV
-  MLIRSPIRVSerialization
-  MLIRStandardOps
-  MLIRSupport)
+  MLIRSPIRVSerialization)
 
 whole_archive_link(MLIRSPIRVTests MLIRSPIRV)
 
diff --git a/mlir/unittests/Pass/CMakeLists.txt b/mlir/unittests/Pass/CMakeLists.txt
index 7421abd..a5aaee3 100644
--- a/mlir/unittests/Pass/CMakeLists.txt
+++ b/mlir/unittests/Pass/CMakeLists.txt
@@ -3,7 +3,4 @@
 )
 target_link_libraries(MLIRPassTests
   PRIVATE
-  MLIRIR
-  MLIRPass
-  MLIRStandardOps
-  MLIRSupport)
+  MLIRPass)
diff --git a/mlir/unittests/SDBM/CMakeLists.txt b/mlir/unittests/SDBM/CMakeLists.txt
index 8fbea63..3d832ec 100644
--- a/mlir/unittests/SDBM/CMakeLists.txt
+++ b/mlir/unittests/SDBM/CMakeLists.txt
@@ -3,9 +3,6 @@
 )
 target_link_libraries(MLIRSDBMTests
   PRIVATE
-  MLIRIR
   MLIRSDBM
-  MLIRStandardOps
-  MLIRSupport
-  )
+)
 whole_archive_link(MLIRSDBMTests MLIRSDBM)