summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalf Gommers <ralf.gommers@gmail.com>2024-01-30 22:01:46 +0100
committerDylan Baker <dylan@pnwbakers.com>2024-02-06 12:54:35 -0800
commit80ed1dfa7ff6175b89038f98d935f803509cf86b (patch)
tree3afac009621065cc7827e6fb991f82167dcd797d
parent6fcf8632c6ca7c7d3812bf611ca99820264fae65 (diff)
downloadmeson-80ed1dfa7ff6175b89038f98d935f803509cf86b.tar.gz
Add a numpy dependency with pkg-config and configtool methods
These are being added for NumPy 2.0 The implementation closely follows the one for the pybind11 dependency.
-rw-r--r--docs/markdown/Dependencies.md8
-rw-r--r--docs/markdown/snippets/numpy-custom-dependency.md9
-rw-r--r--mesonbuild/dependencies/__init__.py1
-rw-r--r--mesonbuild/dependencies/python.py17
4 files changed, 35 insertions, 0 deletions
diff --git a/docs/markdown/Dependencies.md b/docs/markdown/Dependencies.md
index d412a2526..965a3dde9 100644
--- a/docs/markdown/Dependencies.md
+++ b/docs/markdown/Dependencies.md
@@ -653,6 +653,14 @@ The `language` keyword may used.
`method` may be `auto`, `pkg-config`, `system` or `cmake`.
+## NumPy
+
+*(added 1.4.0)*
+
+`method` may be `auto`, `pkg-config`, or `config-tool`.
+`dependency('numpy')` supports regular use of the NumPy C API.
+Use of `numpy.f2py` for binding Fortran code isn't yet supported.
+
## pcap
*(added 0.42.0)*
diff --git a/docs/markdown/snippets/numpy-custom-dependency.md b/docs/markdown/snippets/numpy-custom-dependency.md
new file mode 100644
index 000000000..5934180c0
--- /dev/null
+++ b/docs/markdown/snippets/numpy-custom-dependency.md
@@ -0,0 +1,9 @@
+## New numpy custom dependency
+
+Support for `dependency('numpy')` was added, via supporting the `numpy-config` tool and
+pkg-config support, both of which are available since NumPy 2.0.0.
+
+Config-tool support is useful because it will work out of the box when
+``numpy`` is installed, while the pkg-config file is located inside python's
+site-packages, which makes it impossible to use in an out of the box manner
+without setting `PKG_CONFIG_PATH`.
diff --git a/mesonbuild/dependencies/__init__.py b/mesonbuild/dependencies/__init__.py
index 0bfca9784..abc2e22b2 100644
--- a/mesonbuild/dependencies/__init__.py
+++ b/mesonbuild/dependencies/__init__.py
@@ -228,6 +228,7 @@ packages.defaults.update({
'appleframeworks': 'platform',
# from python:
+ 'numpy': 'python',
'python3': 'python',
'pybind11': 'python',
diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py
index 342d94e72..6620eff20 100644
--- a/mesonbuild/dependencies/python.py
+++ b/mesonbuild/dependencies/python.py
@@ -61,6 +61,17 @@ class Pybind11ConfigToolDependency(ConfigToolDependency):
self.compile_args = self.get_config_value(['--includes'], 'compile_args')
+class NumPyConfigToolDependency(ConfigToolDependency):
+
+ tools = ['numpy-config']
+
+ def __init__(self, name: str, environment: Environment, kwargs: T.Dict[str, T.Any]):
+ super().__init__(name, environment, kwargs)
+ if not self.is_found:
+ return
+ self.compile_args = self.get_config_value(['--cflags'], 'compile_args')
+
+
class BasicPythonExternalProgram(ExternalProgram):
def __init__(self, name: str, command: T.Optional[T.List[str]] = None,
ext_prog: T.Optional[ExternalProgram] = None):
@@ -412,3 +423,9 @@ packages['pybind11'] = pybind11_factory = DependencyFactory(
[DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL, DependencyMethods.CMAKE],
configtool_class=Pybind11ConfigToolDependency,
)
+
+packages['numpy'] = numpy_factory = DependencyFactory(
+ 'numpy',
+ [DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL],
+ configtool_class=NumPyConfigToolDependency,
+)