blob: 03ba48715afdf6ccb696fc34a1f7c422f40d4292 [file]
project('Python extension module', 'c',
default_options : ['buildtype=release', 'python.bytecompile=-1'])
# Because Windows Python ships only with optimized libs,
# we must build this project the same way.
if meson.backend() != 'ninja'
error('MESON_SKIP_TEST: Ninja backend required')
endif
if not add_languages('rust', required: false, native: false)
error('MESON_SKIP_TEST: Rust compiler required')
endif
py_mod = import('python')
py = py_mod.find_installation()
py_dep = py.dependency(required: false)
if not py_dep.found()
error('MESON_SKIP_TEST: Python libraries not found.')
endif
# Rust code cannot rely on #define PyModule_Create, so it calls
# PyModule_Create2. But it is also not possible to use has_function()
# because the function is in the Python executable, so just check
# for PyPy.
if run_command(py, '-c', 'import sys; sys.exit("__pypy__" in sys.builtin_module_names)',
check: false).returncode() == 1
error('MESON_SKIP_TEST: Limited API not supported (PyPy?)')
endif
subdir('ext')
src = files('blaster.py')
test('extmod',
py,
args : src,
env : ['PYTHONPATH=' + pypathdir])