Removing IREE_COMMON_INCLUDE_DIRS and uses by LLVM/MLIR.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9d57f82..a1ae223 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -336,11 +336,11 @@
     message(STATUS "Adding bundled LLVM source dependency")
     add_iree_mlir_src_dep("third_party/llvm-project")
 
-    # Extend module path to allow submodules to use LLVM and MLIR CMake modules
+    # Extend module path to allow submodules to use LLVM and MLIR CMake modules.
     list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/mlir")
     list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}/third_party/llvm-project/llvm/lib/cmake/llvm/")
 
-    # Set include directories
+    # Add the bundled include directories for cmake files looking for them.
     list(APPEND LLVM_INCLUDE_DIRS
       ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-project/llvm/include
       ${CMAKE_CURRENT_BINARY_DIR}/third_party/llvm-project/llvm/include
@@ -350,6 +350,17 @@
       ${CMAKE_CURRENT_BINARY_DIR}/third_party/llvm-project/llvm/tools/mlir/include
     )
 
+    # Avoid globally modifying paths by instead adding the include paths to the
+    # rules that really should have them in the first place.
+    target_include_directories(LLVMSupport PUBLIC
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-project/llvm/include>
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/third_party/llvm-project/llvm/include>
+    )
+    target_include_directories(MLIRSupport PUBLIC
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-project/mlir/include>
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/third_party/llvm-project/llvm/tools/mlir/include>
+    )
+
     # Set build option to use MHLO alongside with bundled MLIR
     set(MHLO_BUILD_EMBEDDED ON)
   elseif(${IREE_MLIR_DEP_MODE} STREQUAL "INSTALLED")
diff --git a/build_tools/cmake/external_cc_library.cmake b/build_tools/cmake/external_cc_library.cmake
index 42859a3..f5a3cf1 100644
--- a/build_tools/cmake/external_cc_library.cmake
+++ b/build_tools/cmake/external_cc_library.cmake
@@ -122,7 +122,8 @@
     )
     target_include_directories(${_NAME} SYSTEM
       PUBLIC
-        "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+        "$<BUILD_INTERFACE:${IREE_SOURCE_DIR}>"
+        "$<BUILD_INTERFACE:${IREE_BINARY_DIR}>"
         "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
     )
     target_compile_options(${_NAME}
@@ -164,7 +165,8 @@
     add_library(${_NAME} INTERFACE)
     target_include_directories(${_NAME} SYSTEM
       INTERFACE
-        "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+        "$<BUILD_INTERFACE:${IREE_SOURCE_DIR}>"
+        "$<BUILD_INTERFACE:${IREE_BINARY_DIR}>"
         "$<BUILD_INTERFACE:${_RULE_INCLUDES}>"
     )
     target_compile_options(${_NAME}
diff --git a/build_tools/cmake/flatbuffer_c_library.cmake b/build_tools/cmake/flatbuffer_c_library.cmake
index 8435980..23ade0c 100644
--- a/build_tools/cmake/flatbuffer_c_library.cmake
+++ b/build_tools/cmake/flatbuffer_c_library.cmake
@@ -126,7 +126,8 @@
   add_dependencies(${_NAME} ${_GEN_TARGET})
   target_include_directories(${_NAME} SYSTEM
     INTERFACE
-      "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+      "$<BUILD_INTERFACE:${IREE_SOURCE_DIR}>"
+      "$<BUILD_INTERFACE:${IREE_BINARY_DIR}>"
       ${CMAKE_CURRENT_BINARY_DIR}
     )
   target_link_libraries(${_NAME}
diff --git a/build_tools/cmake/iree_cc_binary.cmake b/build_tools/cmake/iree_cc_binary.cmake
index c2fb503..3192d2b 100644
--- a/build_tools/cmake/iree_cc_binary.cmake
+++ b/build_tools/cmake/iree_cc_binary.cmake
@@ -112,7 +112,8 @@
   endif()
   target_include_directories(${_NAME} SYSTEM
     PUBLIC
-      ${IREE_COMMON_INCLUDE_DIRS}
+      "$<BUILD_INTERFACE:${IREE_SOURCE_DIR}>"
+      "$<BUILD_INTERFACE:${IREE_BINARY_DIR}>"
   )
   target_compile_definitions(${_NAME}
     PUBLIC
diff --git a/build_tools/cmake/iree_cc_library.cmake b/build_tools/cmake/iree_cc_library.cmake
index ba53a10..ad8852f 100644
--- a/build_tools/cmake/iree_cc_library.cmake
+++ b/build_tools/cmake/iree_cc_library.cmake
@@ -122,7 +122,8 @@
     )
     target_include_directories(${_NAME} SYSTEM
       PUBLIC
-        "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+        "$<BUILD_INTERFACE:${IREE_SOURCE_DIR}>"
+        "$<BUILD_INTERFACE:${IREE_BINARY_DIR}>"
     )
     target_include_directories(${_NAME}
       PUBLIC
@@ -172,7 +173,8 @@
     add_library(${_NAME} INTERFACE)
     target_include_directories(${_NAME} SYSTEM
       INTERFACE
-        "$<BUILD_INTERFACE:${IREE_COMMON_INCLUDE_DIRS}>"
+        "$<BUILD_INTERFACE:${IREE_SOURCE_DIR}>"
+        "$<BUILD_INTERFACE:${IREE_BINARY_DIR}>"
     )
     target_compile_options(${_NAME}
       INTERFACE
diff --git a/build_tools/cmake/iree_cc_test.cmake b/build_tools/cmake/iree_cc_test.cmake
index 98d4e1a..138fdbe 100644
--- a/build_tools/cmake/iree_cc_test.cmake
+++ b/build_tools/cmake/iree_cc_test.cmake
@@ -82,7 +82,8 @@
   )
   target_include_directories(${_NAME} SYSTEM
     PUBLIC
-      ${IREE_COMMON_INCLUDE_DIRS}
+      "$<BUILD_INTERFACE:${IREE_SOURCE_DIR}>"
+      "$<BUILD_INTERFACE:${IREE_BINARY_DIR}>"
   )
   target_compile_definitions(${_NAME}
     PUBLIC
diff --git a/build_tools/cmake/iree_copts.cmake b/build_tools/cmake/iree_copts.cmake
index 90438d0..903b576 100644
--- a/build_tools/cmake/iree_copts.cmake
+++ b/build_tools/cmake/iree_copts.cmake
@@ -89,10 +89,6 @@
 set(IREE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(IREE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(IREE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
-list(APPEND IREE_COMMON_INCLUDE_DIRS
-  ${IREE_SOURCE_DIR}
-  ${IREE_BINARY_DIR}
-)
 
 iree_select_compiler_opts(IREE_DEFAULT_COPTS
   CLANG
@@ -432,16 +428,6 @@
   set(LLVM_USE_LINKER ${IREE_USE_LINKER} CACHE STRING "" FORCE)
 endif()
 
-# TODO: This should go in add_iree_mlir_src_dep at the top level.
-if(IREE_MLIR_DEP_MODE STREQUAL "BUNDLED")
-  list(APPEND IREE_COMMON_INCLUDE_DIRS
-    ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-project/llvm/include
-    ${CMAKE_CURRENT_BINARY_DIR}/third_party/llvm-project/llvm/include
-    ${CMAKE_CURRENT_SOURCE_DIR}/third_party/llvm-project/mlir/include
-    ${CMAKE_CURRENT_BINARY_DIR}/third_party/llvm-project/llvm/tools/mlir/include
-  )
-endif()
-
 set(MLIR_TABLEGEN_EXE mlir-tblgen)
 # iree-tblgen is not defined using the add_tablegen mechanism as other TableGen
 # tools in LLVM.
@@ -456,11 +442,6 @@
   set(EMITC_ENABLE_HLO OFF)
   set(EMITC_INCLUDE_TESTS OFF)
 
-  # TODO(marbre): add these only where required, not globally.
-  # list(APPEND IREE_COMMON_INCLUDE_DIRS
-  #   ${CMAKE_CURRENT_SOURCE_DIR}/third_party/mlir-emitc/include
-  #   ${CMAKE_CURRENT_BINARY_DIR}/third_party/mlir-emitc/include
-  # )
   add_definitions(-DIREE_HAVE_EMITC_DIALECT)
 endif()
 
diff --git a/build_tools/cmake/iree_tablegen_doc.cmake b/build_tools/cmake/iree_tablegen_doc.cmake
index 372b3b5..5e93390 100644
--- a/build_tools/cmake/iree_tablegen_doc.cmake
+++ b/build_tools/cmake/iree_tablegen_doc.cmake
@@ -53,7 +53,10 @@
   endif()
 
 
-  set(_INCLUDE_DIRS ${IREE_COMMON_INCLUDE_DIRS})
+  set(_INCLUDE_DIRS
+    "${MLIR_INCLUDE_DIRS}"
+    "${IREE_SOURCE_DIR}"
+  )
   list(APPEND _INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
   list(TRANSFORM _INCLUDE_DIRS PREPEND "-I")
 
diff --git a/build_tools/cmake/iree_tablegen_library.cmake b/build_tools/cmake/iree_tablegen_library.cmake
index e185e59..6226b16 100644
--- a/build_tools/cmake/iree_tablegen_library.cmake
+++ b/build_tools/cmake/iree_tablegen_library.cmake
@@ -41,7 +41,10 @@
   endif()
 
   set(LLVM_TARGET_DEFINITIONS ${_RULE_TD_FILE})
-  set(_INCLUDE_DIRS ${IREE_COMMON_INCLUDE_DIRS})
+  set(_INCLUDE_DIRS
+    "${MLIR_INCLUDE_DIRS}"
+    "${IREE_SOURCE_DIR}"
+  )
   list(APPEND _INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
   list(TRANSFORM _INCLUDE_DIRS PREPEND "-I")
   set(_OUTPUTS)
diff --git a/iree/compiler/Dialect/HAL/Target/MetalSPIRV/CMakeLists.txt b/iree/compiler/Dialect/HAL/Target/MetalSPIRV/CMakeLists.txt
index 4ee89d1..1e044c9 100644
--- a/iree/compiler/Dialect/HAL/Target/MetalSPIRV/CMakeLists.txt
+++ b/iree/compiler/Dialect/HAL/Target/MetalSPIRV/CMakeLists.txt
@@ -49,6 +49,7 @@
     "SPIRVToMSL.cpp"
   DEPS
     LLVMSupport
+    MLIRSupport
     spirv-cross-msl
   PUBLIC
 )