[clang] [CMake] Link MLIR if CLANG_ENABLE_CIR is ON (PR #226763)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 27 00:41:58 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: aokblast
<details>
<summary>Changes</summary>
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.
---
Full diff: https://github.com/llvm/llvm-project/pull/226763.diff
2 Files Affected:
- (modified) clang/cmake/modules/CMakeLists.txt (+19)
- (modified) clang/cmake/modules/ClangConfig.cmake.in (+2)
``````````diff
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 at .@LLVM_VERSION_MINOR at .@LLVM_VERSION_PATCH@)
find_package(LLVM ${LLVM_VERSION} EXACT REQUIRED CONFIG
HINTS "@CLANG_CONFIG_LLVM_CMAKE_DIR@")
+ at 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@")
``````````
</details>
https://github.com/llvm/llvm-project/pull/226763
More information about the cfe-commits
mailing list