[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
This commit is contained in:
Nikita Popov 2022-08-03 15:28:49 +02:00
parent 7ce321e5b0
commit 57a9bccec7
8 changed files with 18 additions and 17 deletions

View File

@ -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)

View File

@ -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()

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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()

View File

@ -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()

View File

@ -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()