From 57a9bccec7dea036dbfa1a78f1ec5e73ecf7a33c Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 3 Aug 2022 15:28:49 +0200 Subject: [PATCH] [MLIR] Fix checks for native arch Using if (TARGET ${LLVM_NATIVE_ARCH}) only works if MLIR is built together with LLVM, but not for standalone builds of MLIR. The correct way to check this is if (${LLVM_NATIVE_ARCH} IN_LIST LLVM_TARGETS_TO_BUILD), as the LLVM build system exports LLVM_TARGETS_TO_BUILD. To avoid repeating the same check many times, add a MLIR_ENABLE_EXECUTION_ENGINE variable. Differential Revision: https://reviews.llvm.org/D131071 --- mlir/CMakeLists.txt | 13 ++++++++++--- mlir/lib/CAPI/CMakeLists.txt | 3 +-- mlir/lib/ExecutionEngine/CMakeLists.txt | 3 +-- mlir/python/CMakeLists.txt | 3 +-- mlir/test/CAPI/CMakeLists.txt | 3 +-- mlir/test/CMakeLists.txt | 2 +- mlir/tools/CMakeLists.txt | 5 ++--- mlir/unittests/CMakeLists.txt | 3 +-- 8 files changed, 18 insertions(+), 17 deletions(-) diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt index 808a985..2219871 100644 --- a/mlir/CMakeLists.txt +++ b/mlir/CMakeLists.txt @@ -86,9 +86,16 @@ set_target_properties(mlir-headers PROPERTIES FOLDER "Misc") add_dependencies(mlir-headers mlir-generic-headers) add_custom_target(mlir-doc) +# Only enable execution engine if the native target is available. +if(${LLVM_NATIVE_ARCH} IN_LIST LLVM_TARGETS_TO_BUILD) + set(MLIR_ENABLE_EXECUTION_ENGINE 1) +else() + set(MLIR_ENABLE_EXECUTION_ENGINE 0) +endif() + # Build the CUDA conversions and run according tests if the NVPTX backend # is available -if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD) +if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD AND MLIR_ENABLE_EXECUTION_ENGINE) set(MLIR_ENABLE_CUDA_CONVERSIONS 1) else() set(MLIR_ENABLE_CUDA_CONVERSIONS 0) @@ -97,8 +104,8 @@ endif() add_definitions(-DMLIR_CUDA_CONVERSIONS_ENABLED=${MLIR_ENABLE_CUDA_CONVERSIONS}) # Build the ROCm conversions and run according tests if the AMDGPU backend -# is available -if ("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD) +# is available. +if ("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD AND MLIR_ENABLE_EXECUTION_ENGINE) set(MLIR_ENABLE_ROCM_CONVERSIONS 1) else() set(MLIR_ENABLE_ROCM_CONVERSIONS 0) diff --git a/mlir/lib/CAPI/CMakeLists.txt b/mlir/lib/CAPI/CMakeLists.txt index ffb04c2..052eff3 100644 --- a/mlir/lib/CAPI/CMakeLists.txt +++ b/mlir/lib/CAPI/CMakeLists.txt @@ -15,8 +15,7 @@ add_subdirectory(IR) add_subdirectory(RegisterEverything) add_subdirectory(Transforms) -# Only enable the ExecutionEngine if the native target is configured in. -if(TARGET ${LLVM_NATIVE_ARCH}) +if(MLIR_ENABLE_EXECUTION_ENGINE) add_subdirectory(ExecutionEngine) endif() diff --git a/mlir/lib/ExecutionEngine/CMakeLists.txt b/mlir/lib/ExecutionEngine/CMakeLists.txt index 22ac4f8..bf62780 100644 --- a/mlir/lib/ExecutionEngine/CMakeLists.txt +++ b/mlir/lib/ExecutionEngine/CMakeLists.txt @@ -39,8 +39,7 @@ add_mlir_library(MLIRExecutionEngineUtils Passes ) -# Only enable the ExecutionEngine if the native target is configured in. -if(NOT TARGET ${LLVM_NATIVE_ARCH}) +if(NOT MLIR_ENABLE_EXECUTION_ENGINE) return() endif() diff --git a/mlir/python/CMakeLists.txt b/mlir/python/CMakeLists.txt index 1fbbadf..7eb6e05 100644 --- a/mlir/python/CMakeLists.txt +++ b/mlir/python/CMakeLists.txt @@ -363,8 +363,7 @@ declare_mlir_python_extension(MLIRPythonExtension.AsyncDialectPasses MLIRCAPIAsync ) -# Only enable the ExecutionEngine if the native target is configured in. -if(TARGET ${LLVM_NATIVE_ARCH}) +if(MLIR_ENABLE_EXECUTION_ENGINE) declare_mlir_python_extension(MLIRPythonExtension.ExecutionEngine MODULE_NAME _mlirExecutionEngine ADD_TO_PARENT MLIRPythonSources.ExecutionEngine diff --git a/mlir/test/CAPI/CMakeLists.txt b/mlir/test/CAPI/CMakeLists.txt index b089a37..2992b13 100644 --- a/mlir/test/CAPI/CMakeLists.txt +++ b/mlir/test/CAPI/CMakeLists.txt @@ -19,8 +19,7 @@ function(_add_capi_test_executable name) endif() endfunction(_add_capi_test_executable) -# Only enable the ExecutionEngine if the native target is configured in. -if(TARGET ${LLVM_NATIVE_ARCH}) +if(MLIR_ENABLE_EXECUTION_ENGINE) _add_capi_test_executable(mlir-capi-execution-engine-test execution_engine.c LINK_LIBS PRIVATE diff --git a/mlir/test/CMakeLists.txt b/mlir/test/CMakeLists.txt index c203f22..74f8058 100644 --- a/mlir/test/CMakeLists.txt +++ b/mlir/test/CMakeLists.txt @@ -40,7 +40,7 @@ if (MLIR_INCLUDE_INTEGRATION_TESTS) # The native target may not be enabled when cross compiling, raise an error. - if(NOT TARGET ${LLVM_NATIVE_ARCH}) + if(NOT MLIR_ENABLE_EXECUTION_ENGINE) message(FATAL_ERROR "MLIR_INCLUDE_INTEGRATION_TESTS requires a native target") endif() diff --git a/mlir/tools/CMakeLists.txt b/mlir/tools/CMakeLists.txt index 86003b7..e9a1e4d 100644 --- a/mlir/tools/CMakeLists.txt +++ b/mlir/tools/CMakeLists.txt @@ -9,8 +9,7 @@ add_subdirectory(mlir-translate) add_subdirectory(mlir-vulkan-runner) add_subdirectory(tblgen-lsp-server) -# mlir-cpu-runner requires ExecutionEngine which is only built -# when the native target is configured in. -if(TARGET ${LLVM_NATIVE_ARCH}) +# mlir-cpu-runner requires ExecutionEngine. +if(MLIR_ENABLE_EXECUTION_ENGINE) add_subdirectory(mlir-cpu-runner) endif() diff --git a/mlir/unittests/CMakeLists.txt b/mlir/unittests/CMakeLists.txt index 25f40d0..78a0f99 100644 --- a/mlir/unittests/CMakeLists.txt +++ b/mlir/unittests/CMakeLists.txt @@ -16,7 +16,6 @@ add_subdirectory(Rewrite) add_subdirectory(TableGen) add_subdirectory(Transforms) -# The native target may not be enabled when cross compiling. -if(TARGET ${LLVM_NATIVE_ARCH}) +if(MLIR_ENABLE_EXECUTION_ENGINE) add_subdirectory(ExecutionEngine) endif() -- 2.7.4