Cross compilation#
Cross compilation is a complex topic, we only add some hopefully helpful hints
here (for now). As of May 2023, cross-compilation based on crossenv
is
known to work, as used (for example) in conda-forge. Cross-compilation without
crossenv
requires some manual overrides. You instruct these overrides by
passing options to meson setup
via meson-python.
All distributions that are known to successfully cross compile NumPy are using
python -m build
(pypa/build
), but using pip
for that should be
possible as well. Here are links to the NumPy “build recipes” on those
distros:
See also Meson’s documentation on cross compilation to learn what options you may need to pass to Meson to successfully cross compile.
One possible hiccup is that the build requires running a compiled executable in
order to determine the long double
format for the host platform. This may be
an obstacle, since it requires crossenv
or QEMU to run the host (cross)
Python. To avoid this problem, specify the paths to the relevant directories in
your cross file:
[properties]
longdouble_format = 'IEEE_DOUBLE_LE'
For more details and the current status around cross compilation, see:
The state of cross compilation in Python: pypackaging-native key issue page
Tracking issue for SciPy cross-compilation needs and issues: scipy#14812