https://github.com/aokblast created 
https://github.com/llvm/llvm-project/pull/226763

CIR requires MLIR to build. However, MLIR doesn't have a separate config file; 
it dependencies are checked by ClangTarget.cmake without linking the MLIR 
library. Link against MLIR in ClangCOnfig.cmake when CIR is enabled.

>From 396de6b33d5525d284438a73b06c545891ea9ddf Mon Sep 17 00:00:00 2001
From: ShengYi Hung <[email protected]>
Date: Sun, 27 Sep 2026 02:08:04 -0500
Subject: [PATCH] [CMake] Link MLIR if CLANG_ENABLE_CIR

CIR requires MLIR to build. However, MLIR doesn't have a separate
config file; it dependencies are checked by ClangTarget.cmake without
linking the MLIR library. Link against MLIR in ClangCOnfig.cmake when
CIR is enabled.
---
 clang/cmake/modules/CMakeLists.txt       | 19 +++++++++++++++++++
 clang/cmake/modules/ClangConfig.cmake.in |  2 ++
 2 files changed, 21 insertions(+)

diff --git a/clang/cmake/modules/CMakeLists.txt 
b/clang/cmake/modules/CMakeLists.txt
index 36f31e33cf60d..c9b2cde27cd96 100644
--- a/clang/cmake/modules/CMakeLists.txt
+++ b/clang/cmake/modules/CMakeLists.txt
@@ -43,6 +43,20 @@ set(CLANG_CONFIG_INCLUDE_DIRS
   "${CLANG_SOURCE_DIR}/include"
   "${CLANG_BINARY_DIR}/include"
   )
+set(clang_config_needs_mlir OFF)
+if(CLANG_ENABLE_CIR AND NOT "mlir" IN_LIST LLVM_DEPENDENCY_ONLY_PROJECTS)
+  set(clang_config_needs_mlir ON)
+endif()
+function(clang_config_find_mlir out_var mlir_cmake_dir)
+  if(clang_config_needs_mlir)
+    set(${out_var}
+      "find_package(MLIR 
\${LLVM_VERSION_MAJOR}.\${LLVM_VERSION_MINOR}.\${LLVM_VERSION_PATCH} EXACT 
REQUIRED CONFIG
+             HINTS \"${mlir_cmake_dir}\")" PARENT_SCOPE)
+  else()
+    set(${out_var} "" PARENT_SCOPE)
+  endif()
+endfunction()
+clang_config_find_mlir(CLANG_CONFIG_FIND_MLIR "${llvm_builddir}/cmake/mlir")
 configure_file(
   ${CMAKE_CURRENT_SOURCE_DIR}/ClangConfig.cmake.in
   ${clang_cmake_builddir}/ClangConfig.cmake
@@ -69,6 +83,11 @@ file(COPY .
 find_prefix_from_config(CLANG_CONFIG_CODE CLANG_INSTALL_PREFIX 
"${CLANG_INSTALL_PACKAGE_DIR}")
 extend_path(CLANG_CONFIG_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}" 
"${CLANG_INSTALL_PACKAGE_DIR}")
 extend_path(CLANG_CONFIG_LLVM_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}" 
"${LLVM_INSTALL_PACKAGE_DIR}")
+# Keep this in sync with mlir/cmake/modules/CMakeLists.txt!
+set(MLIR_INSTALL_PACKAGE_DIR "${CMAKE_INSTALL_PACKAGEDIR}/mlir" CACHE STRING
+  "Path for CMake subdirectory for MLIR (defaults to 
'${CMAKE_INSTALL_PACKAGEDIR}/mlir')")
+extend_path(clang_config_mlir_cmake_dir "\${CLANG_INSTALL_PREFIX}" 
"${MLIR_INSTALL_PACKAGE_DIR}")
+clang_config_find_mlir(CLANG_CONFIG_FIND_MLIR "${clang_config_mlir_cmake_dir}")
 get_config_exports_includes(Clang CLANG_CONFIG_INCLUDE_EXPORTS)
 extend_path(base_includedir "\${CLANG_INSTALL_PREFIX}" 
"${CMAKE_INSTALL_INCLUDEDIR}")
 set(CLANG_CONFIG_INCLUDE_DIRS
diff --git a/clang/cmake/modules/ClangConfig.cmake.in 
b/clang/cmake/modules/ClangConfig.cmake.in
index fd0ff76f1e883..87fab90dcd5e0 100644
--- a/clang/cmake/modules/ClangConfig.cmake.in
+++ b/clang/cmake/modules/ClangConfig.cmake.in
@@ -6,6 +6,8 @@ set(LLVM_VERSION 
@LLVM_VERSION_MAJOR@.@LLVM_VERSION_MINOR@.@LLVM_VERSION_PATCH@)
 find_package(LLVM ${LLVM_VERSION} EXACT REQUIRED CONFIG
              HINTS "@CLANG_CONFIG_LLVM_CMAKE_DIR@")
 
+@CLANG_CONFIG_FIND_MLIR@
+
 set(CLANG_EXPORTED_TARGETS "@CLANG_EXPORTS@")
 set(CLANG_CMAKE_DIR "@CLANG_CONFIG_CMAKE_DIR@")
 set(CLANG_INCLUDE_DIRS "@CLANG_CONFIG_INCLUDE_DIRS@")

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to