diff --git a/mlir/cmake/modules/MLIRDetectPythonEnv.cmake b/mlir/cmake/modules/MLIRDetectPythonEnv.cmake --- a/mlir/cmake/modules/MLIRDetectPythonEnv.cmake +++ b/mlir/cmake/modules/MLIRDetectPythonEnv.cmake @@ -2,37 +2,29 @@ # Finds and configures python packages needed to build MLIR Python bindings. macro(mlir_configure_python_dev_packages) - if(CMAKE_VERSION VERSION_LESS "3.15.0") + if(CMAKE_VERSION VERSION_LESS "3.19.0") message(SEND_ERROR "Building MLIR Python bindings is known to rely on CMake features " - "that require at least version 3.15. Recommend upgrading to 3.18+ " + "that require at least version 3.19. Recommend upgrading to 3.19+ " "for full support. Detected current version: ${CMAKE_VERSION}") endif() + if(MLIR_DETECT_PYTHON_ENV_PRIME_SEARCH) + # Prime the search for python to see if there is a full development + # package. This seems to work around cmake bugs searching only for + # Development.Module in some environments. However, in other environments + # it may interfere with the subsequent search for Development.Module. + find_package(Python3 ${LLVM_MINIMUM_PYTHON_VERSION} + COMPONENTS Interpreter Development) + endif() + # After CMake 3.18, we are able to limit the scope of the search to just # Development.Module. Searching for Development will fail in situations where # the Python libraries are not available. When possible, limit to just # Development.Module. # See https://pybind11.readthedocs.io/en/stable/compiling.html#findpython-mode - if(CMAKE_VERSION VERSION_LESS "3.18.0") - message(WARNING - "This version of CMake is not compatible with statically built Python " - "installations. If Python fails to detect below this may apply to you. " - "Recommend upgrading to at least CMake 3.18. " - "Detected current version: ${CMAKE_VERSION}" - ) - set(_python_development_component Development) - else() - if(MLIR_DETECT_PYTHON_ENV_PRIME_SEARCH) - # Prime the search for python to see if there is a full development - # package. This seems to work around cmake bugs searching only for - # Development.Module in some environments. However, in other environments - # it may interfere with the subsequent search for Development.Module. - find_package(Python3 ${LLVM_MINIMUM_PYTHON_VERSION} - COMPONENTS Interpreter Development) - endif() - set(_python_development_component Development.Module) - endif() + set(_python_development_component Development.Module) + find_package(Python3 ${LLVM_MINIMUM_PYTHON_VERSION} COMPONENTS Interpreter ${_python_development_component} NumPy REQUIRED) unset(_python_development_component)