diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt index 9e786154a2b40..3b04244d23d37 100644 --- a/mlir/CMakeLists.txt +++ b/mlir/CMakeLists.txt @@ -178,6 +178,8 @@ set(MLIR_BINDINGS_PYTHON_NB_DOMAIN "mlir" CACHE STRING "nanobind domain for MLIR python bindings.") set(MLIR_ENABLE_BINDINGS_PYTHON 0 CACHE BOOL "Enables building of Python bindings.") +set(MLIR_BINDINGS_PYTHON_INSTALL_PREFIX "python_packages/mlir_core/mlir" CACHE STRING + "Prefix under install directory to place python bindings") set(MLIR_DETECT_PYTHON_ENV_PRIME_SEARCH 1 CACHE BOOL "Prime the python detection by searching for a full 'Development' \ component first (temporary while diagnosing environment specific Python \ diff --git a/mlir/python/CMakeLists.txt b/mlir/python/CMakeLists.txt index fb115a5f43423..bf6627904f866 100644 --- a/mlir/python/CMakeLists.txt +++ b/mlir/python/CMakeLists.txt @@ -356,7 +356,7 @@ declare_mlir_dialect_python_bindings( ADD_TO_PARENT MLIRPythonSources.Dialects ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir" TD_FILE dialects/EmitC.td - SOURCES + SOURCES dialects/emitc.py DIALECT_NAME emitc) @@ -764,7 +764,7 @@ endif() add_mlir_python_common_capi_library(MLIRPythonCAPI INSTALL_COMPONENT MLIRPythonModules - INSTALL_DESTINATION python_packages/mlir_core/mlir/_mlir_libs + INSTALL_DESTINATION "${MLIR_BINDINGS_PYTHON_INSTALL_PREFIX}/_mlir_libs" OUTPUT_DIRECTORY "${MLIR_BINARY_DIR}/python_packages/mlir_core/mlir/_mlir_libs" RELATIVE_INSTALL_ROOT "../../../.." DECLARED_HEADERS @@ -795,7 +795,7 @@ endif() add_mlir_python_modules(MLIRPythonModules ROOT_PREFIX "${MLIR_BINARY_DIR}/python_packages/mlir_core/mlir" - INSTALL_PREFIX "python_packages/mlir_core/mlir" + INSTALL_PREFIX "${MLIR_BINDINGS_PYTHON_INSTALL_PREFIX}" DECLARED_SOURCES MLIRPythonSources MLIRPythonExtension.RegisterEverything diff --git a/mlir/python/pyproject.toml b/mlir/python/pyproject.toml new file mode 100644 index 0000000000000..4abaa2416826d --- /dev/null +++ b/mlir/python/pyproject.toml @@ -0,0 +1,43 @@ +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# Copyright (c) 2025. + +[project] +name = "mlir-python-bindings" +version = "0.0.1" +requires-python = ">=3.8,<=3.13" +[project.urls] +Homepage = "https://github.com/llvm/llvm-project" +Discussions = "https://discourse.llvm.org/" +"Issue Tracker" = "https://github.com/llvm/llvm-project/issues?q=is%3Aissue%20state%3Aopen%20label%3Amlir%3Apython%20" +"Source Code" = "https://github.com/llvm/llvm-project/tree/main/mlir/python" + +[build-system] +requires = [ + "scikit-build-core==0.10.7", + "typing_extensions==4.12.2", + "nanobind>=2.4, <3.0", + "numpy>=1.19.5, <=2.1.2", + "pybind11>=2.10.0, <=2.13.6", + "PyYAML>=5.4.0, <=6.0.1", + 'ml_dtypes>=0.1.0, <=0.6.0; python_version<"3.13"', + 'ml_dtypes>=0.5.0, <=0.6.0; python_version>="3.13"' +] +build-backend = "scikit_build_core.build" + +[tool.scikit-build] +minimum-version = "0.10" +build-dir = "../../build" +cmake.source-dir = "../../llvm" +wheel.exclude = ["bin", "include", "lib", "src", "share"] +build.targets = ["MLIRPythonModules"] + +[tool.scikit-build.cmake.define] +CMAKE_C_COMPILER_LAUNCHER = { env = "CMAKE_C_COMPILER_LAUNCHER", default = "" } +CMAKE_CXX_COMPILER_LAUNCHER = { env = "CMAKE_CXX_COMPILER_LAUNCHER", default = "" } +CMAKE_CXX_VISIBILITY_PRESET = "hidden" +CMAKE_VERBOSE_MAKEFILE = "ON" +LLVM_ENABLE_PROJECTS = "mlir" +MLIR_ENABLE_BINDINGS_PYTHON = "ON" +MLIR_BINDINGS_PYTHON_INSTALL_PREFIX = "mlir"