bundles / numpy 2.5.0.dev0+git20251130.2de293a / docs
Doc
1 Migrating to meson
docs/f2py:buildtools:distutils-to-meson
As per the timeline laid out in distutils-status-migration, distutils has ceased to be the default build backend for f2py. This page collects common workflows in both formats.
1.1 Baseline
We will start out with a slightly modern variation of the classic Fibonnaci series generator.
! fib.f90 subroutine fib(a, n) use iso_c_binding integer(c_int), intent(in) :: n integer(c_int), intent(out) :: a(n) do i = 1, n if (i .eq. 1) then a(i) = 0.0d0 elseif (i .eq. 2) then a(i) = 1.0d0 else a(i) = a(i - 1) + a(i - 2) end if end do end
This will not win any awards, but can be a reasonable starting point.
1.2 Compilation options
1.2.1 Basic Usage
This is unchanged:
python -m numpy.f2py -c fib.f90 -m fib ❯ python -c "import fib; print(fib.fib(30))" [ 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229]
1.2.2 Specify the backend
1.2.3 Pass a compiler name
Similarly, CC can be used in both cases to set the C compiler. Since the environment variables are generally pretty common across both, so a small sample is included below.
1.2.4 Dependencies
Here, meson can actually be used to set dependencies more robustly.
1.2.5 Libraries
Both meson and distutils are capable of linking against libraries.