blob: c4194153743ef4c026eee6744877f880583a9ae4 [file] [log] [blame] [edit]
# 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 = "standalone-python-bindings"
dynamic = ["version"]
requires-python = ">=3.8,<=3.14"
dependencies = [
"numpy>=1.19.5, <=2.1.2",
"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'",
]
[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.9, <3.0",
]
build-backend = "scikit_build_core.build"
[tool.scikit-build]
# This is the minimum version of scikit-build-core.
minimum-version = "0.10.7"
# This pyproject.toml must be adjacent to the root CMakeLists.txt (wherever project(...) is specified).
cmake.source-dir = "."
# This is for installing/distributing the python bindings target and only the python bindings target.
build.targets = ["StandalonePythonModules"]
install.components = ["StandalonePythonModules"]
[tool.scikit-build.cmake.define]
# Optional
CMAKE_C_COMPILER = { env = "CMAKE_C_COMPILER", default = "" }
CMAKE_CXX_COMPILER = { env = "CMAKE_CXX_COMPILER", default = "" }
CMAKE_C_COMPILER_LAUNCHER = { env = "CMAKE_C_COMPILER_LAUNCHER", default = "" }
CMAKE_CXX_COMPILER_LAUNCHER = { env = "CMAKE_CXX_COMPILER_LAUNCHER", default = "" }
CMAKE_GENERATOR = { env = "CMAKE_GENERATOR", default = "Ninja" }
LLVM_USE_LINKER = { env = "LLVM_USE_LINKER", default = "" }
# Optional but highly recommended (this makes the bindings compatible with other bindings packages
# by preventing symbol collisions).
CMAKE_VISIBILITY_INLINES_HIDDEN = "ON"
CMAKE_C_VISIBILITY_PRESET = "hidden"
CMAKE_CXX_VISIBILITY_PRESET = "hidden"
# Non-optional (alternatively you could use CMAKE_PREFIX_PATH here).
MLIR_DIR = { env = "MLIR_DIR", default = "" }
# Non-optional
CMAKE_BUILD_TYPE = { env = "CMAKE_BUILD_TYPE", default = "Release" }
MLIR_ENABLE_BINDINGS_PYTHON = "ON"
# Effectively non-optional (any downstream project should specify this).
MLIR_PYTHON_PACKAGE_PREFIX = "mlir_standalone"
# This specifies the directory in the install directory (i.e., /tmp/pip-wheel/platlib) where _mlir_libs, dialects, etc.
# are installed. Thus, this will be the package location (and the name of the package) that pip assumes is
# the root package.
MLIR_BINDINGS_PYTHON_INSTALL_PREFIX = "mlir_standalone"