Closed
Description
Describe the issue:
When using the new Meson build system, numpy fails to configure on 64-bit big-endian platforms:
Checking for size of "long double" : 16 (cached)
../numpy-1.25.0/numpy/core/meson.build:379:4: ERROR: Problem encountered: No idea what this is ....
Seems to be due to this new snippet:
# long double representation detection (see setup_common.py)
# TODO: this is still incomplete, and different from how it's done in the
# numpy.distutils based build, see https://github.com/mesonbuild/meson/issues/11068
longdouble_size = cc.sizeof('long double')
if longdouble_size == 8
if host_machine.endian() == 'little'
longdouble_format = 'IEEE_DOUBLE_LE'
else
longdouble_format = 'IEEE_DOUBLE_BE'
endif
elif longdouble_size == 12
error('This should not be possible, 12 bits of "content" should still result in sizeof() being 16. Please report this error!'
)
elif longdouble_size == 16
if host_machine.endian() == 'little'
# FIXME: this varies, there's multiple formats here! Not yet implemented.
# TBD how we deal with the mess of old long double formats.
longdouble_format = 'INTEL_EXTENDED_16_BYTES_LE'
else
error('No idea what this is ....')
endif
else
error('Unknown long double size: ' + londouble_size)
endif
cdata.set10('HAVE_LDOUBLE_' + longdouble_format, true)
This affects such platforms as: ppc64 BE, mips64 BE, s390x, sparc64. 32-bit BE platforms such as hppa, ppc, m68k are unaffected.
Downstream bug: https://bugs.gentoo.org/908738
Reproduce the code example:
N/A
Error message:
No response
Runtime information:
N/A
Context for the issue:
No response