diff --git a/cmake/external_mlir.cmake b/cmake/external_mlir.cmake
index d6b1549c174e2f5f347727e9dc9ec4ae98ca11a4..829d5b691503bf9ee9a4311cc3b8d690ad9ce8e4 100644
--- a/cmake/external_mlir.cmake
+++ b/cmake/external_mlir.cmake
@@ -47,10 +47,23 @@ execute_process(COMMAND "${CMAKE_COMMAND}" --build . --target ext_mlir_llvm
 execute_process(COMMAND "${CMAKE_COMMAND}" --build . --target ext_mlir
                 WORKING_DIRECTORY "${MLIR_PROJECT_ROOT}")
 
-# point find_package to the pre-built libs
-set(LLVM_DIR ${MLIR_LLVM_ROOT}/build/lib/cmake/llvm)
+# Enable modules for LLVM.
+set(LLVM_DIR "${MLIR_BUILD_DIR}/lib/cmake/llvm"
+    CACHE PATH "Path to LLVM cmake modules")
+list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
+include(AddLLVM)
+
+# Enable LLVM package, definitions and env vars.
+find_package(LLVM REQUIRED CONFIG)
+add_definitions(${LLVM_DEFINITIONS})
+message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
+message(STATUS "Using modules in: ${LLVM_DIR}")
+message(STATUS "LLVM RTTI is ${LLVM_ENABLE_RTTI}")
 
 set(MLIR_SRC_INCLUDE_PATH ${MLIR_SOURCE_DIR}/include)
 set(MLIR_BIN_INCLUDE_PATH ${MLIR_BUILD_DIR}/projects/mlir/include)
-set(MLIR_INCLUDE_PATHS  ${MLIR_SRC_INCLUDE_PATH};${MLIR_BIN_INCLUDE_PATH})
+set(MLIR_INCLUDE_PATHS ${MLIR_SRC_INCLUDE_PATH};${MLIR_BIN_INCLUDE_PATH})
+set(MLIR_LLVM_INCLUDE_PATH ${LLVM_INCLUDE_DIRS})
 
+message(STATUS "MLIR headers at: ${MLIR_INCLUDE_PATHS}")
+message(STATUS "LLVM headers at: ${MLIR_LLVM_INCLUDE_PATH}")
diff --git a/src/contrib/mlir/CMakeLists.txt b/src/contrib/mlir/CMakeLists.txt
index 7622d35206663ef6be0a8710270374b325c7fb31..3c0fa0ba31beb306e2a347ae6de64841aa9014aa 100644
--- a/src/contrib/mlir/CMakeLists.txt
+++ b/src/contrib/mlir/CMakeLists.txt
@@ -14,4 +14,12 @@
 # limitations under the License.
 # ******************************************************************************
 
+# Common MLIR/LLVM setup for the sub-directories below
+
+include_directories(
+    ${NGRAPH_INCLUDE_PATH}
+    ${MLIR_LLVM_INCLUDE_PATH}
+    ${MLIR_INCLUDE_PATHS}
+)
+
 add_subdirectory(compiler)
diff --git a/src/contrib/mlir/compiler/CMakeLists.txt b/src/contrib/mlir/compiler/CMakeLists.txt
index ed92cb0f3305376f6e06b416adf4e4244d5e3098..8a79d3dcfe9601fee4cec9f2de118d2c23dddef9 100644
--- a/src/contrib/mlir/compiler/CMakeLists.txt
+++ b/src/contrib/mlir/compiler/CMakeLists.txt
@@ -27,24 +27,6 @@ set(SRC
 
 add_library(mlir_backend SHARED ${SRC})
 
-message(STATUS "LLVM Directory: ${LLVM_DIR}")
-# Link LLVM and MLIR
-find_package(LLVM REQUIRED CONFIG)
-
-set(MLIR_LLVM_INCLUDEPATH ${LLVM_INCLUDE_DIRS})
-
-message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
-message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
-message(STATUS "LLVM RTTI is ${LLVM_ENABLE_RTTI}")
-add_definitions(${LLVM_DEFINITIONS})
-
-target_include_directories(mlir_backend PRIVATE ${LLVM_INCLUDE_DIRS})
-
-message(STATUS "MLIR Headers at : ${MLIR_INCLUDE_PATHS}")
-message(STATUS "LLVM Headers at : ${MLIR_LLVM_INCLUDEPATH}")
-
-target_include_directories(mlir_backend PRIVATE ${MLIR_INCLUDE_PATHS}) 
-
 llvm_map_components_to_libnames(llvm_libs support core irreader)
 
 # Link MLIR libs
diff --git a/src/ngraph/runtime/cpu/CMakeLists.txt b/src/ngraph/runtime/cpu/CMakeLists.txt
index 5f868051555b0a975c07789031ae9277ae6b115d..a8f013084e7cac170d7daa1dcaabfc80b104eb60 100644
--- a/src/ngraph/runtime/cpu/CMakeLists.txt
+++ b/src/ngraph/runtime/cpu/CMakeLists.txt
@@ -233,10 +233,8 @@ if (NGRAPH_CPU_ENABLE)
                                DEFINITION MLIR_LLVM_INCLUDEPATH)
         
         message(STATUS "Building CPU backend with MLIR")
-        message(STATUS "MLIR INCLUDE DIRS: ${MLIR_INCLUDE_PATHS}")
-        message(STATUS "LLVM INCLUDE DIRS: ${MLIR_LLVM_INCLUDEPATH}")
         add_dependencies(cpu_backend mlir_backend)
-        target_include_directories(cpu_backend PUBLIC ${MLIR_INCLUDE_PATHS} ${MLIR_LLVM_INCLUDEPATH})
+        target_include_directories(cpu_backend PUBLIC ${MLIR_INCLUDE_PATHS} ${MLIR_LLVM_INCLUDE_PATH})
         target_link_libraries(cpu_backend PUBLIC mlir_backend)
         # TODO: Get rid of the compile time def, and move all MLIR code to separate src files
         # and add them to cpu_backend here instead.