[Mlir-commits] [mlir] [MLIR][IRDL][CMake] Switch to using `setup_host_tool` to fix cross compilation (PR #156606)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Sep 3 00:11:37 PDT 2025
https://github.com/Zentrik created https://github.com/llvm/llvm-project/pull/156606
Using `build_native_tool` directly doesn't seem to be standard, instead other tools seem to call `setup_host_tool` (e.g. milr-linalg-ods-gen and `add_tablegen` seems to have a copy of `setup_host_tool` internally).
When cross compiling llvm in two stages, the first building all native tools and then the second using those built tools to cross compile, this prevents the second stage from trying to rebuild mlir-irdl-to-cpp, which fails.
>From ecbe0a3c663596dc5a0932be885af3a32e06d5f1 Mon Sep 17 00:00:00 2001
From: Zentrik <llvm.zentrik at gmail.com>
Date: Wed, 3 Sep 2025 08:09:27 +0100
Subject: [PATCH] [MLIR][IRDL][CMake] Switch to using `setup_host_tool` to fix
cross compilation
Using `build_native_tool` directly doesn't seem to be standard, instead other tools seem to call `setup_host_tool` (e.g. milr-linalg-ods-gen and `add_tablegen` seems to have a copy of `setup_host_tool` internally).
When cross compiling llvm in two stages, the first building all native tools and then the second using those built tools to cross compile, this prevents the second stage from trying to rebuild mlir-irdl-to-cpp, which fails.
---
mlir/tools/mlir-irdl-to-cpp/CMakeLists.txt | 21 +--------------------
1 file changed, 1 insertion(+), 20 deletions(-)
diff --git a/mlir/tools/mlir-irdl-to-cpp/CMakeLists.txt b/mlir/tools/mlir-irdl-to-cpp/CMakeLists.txt
index 3a0f77d856b44..288970a16562e 100644
--- a/mlir/tools/mlir-irdl-to-cpp/CMakeLists.txt
+++ b/mlir/tools/mlir-irdl-to-cpp/CMakeLists.txt
@@ -6,23 +6,4 @@ mlir_target_link_libraries(mlir-irdl-to-cpp
MLIRTargetIRDLToCpp
)
-# Set up a native build when cross-compiling.
-if(LLVM_USE_HOST_TOOLS)
- build_native_tool(
- mlir-irdl-to-cpp
- MLIR_IRDL_TO_CPP_EXE
-
- # Native tool must depend on target tool so that the native tool gets
- # properly rebuilt when the target tool changes.
- DEPENDS mlir-irdl-to-cpp
- )
- add_custom_target(mlir-irdl-to-cpp-host DEPENDS ${MLIR_IRDL_TO_CPP_EXE})
- set(MLIR_IRDL_TO_CPP_TARGET mlir-irdl-to-cpp-host)
-else()
- set(MLIR_IRDL_TO_CPP_EXE $<TARGET_FILE:mlir-irdl-to-cpp>)
- set(MLIR_IRDL_TO_CPP_TARGET mlir-irdl-to-cpp)
-endif()
-
-# Save the executable path and target name to the cache to expose it globally.
-set(MLIR_IRDL_TO_CPP_EXE "${MLIR_IRDL_TO_CPP_EXE}" CACHE INTERNAL "")
-set(MLIR_IRDL_TO_CPP_TARGET "${MLIR_IRDL_TO_CPP_TARGET}" CACHE INTERNAL "")
+setup_host_tool(mlir-irdl-to-cpp MLIR_IRDL_TO_CPP MLIR_IRDL_TO_CPP_EXE MLIR_IRDL_TO_CPP_TARGET)
\ No newline at end of file
More information about the Mlir-commits
mailing list