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
