You are viewing an older version (2.4.3). Go to latest (2.4.4)
{ } Raw JSON

bundles / numpy 2.4.3 / 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.

1.3 Customizing builds