/
niceSOFT
/
numpy
Обзор
Документация
Войти
/
niceSOFT
/
numpy
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
meson.build
92 строки
4 KB
Pratham Hole
ENH: Adopt `_umath_tests` for Limited-API compliance (#32201)
12 авг 2026, 20:30
Не верифицирован
12 авг 2026, 20:30
5b260d9
Код
Авторство
О чём код?
project( 'NumPy', 'c', 'cpp', 'cython', version: run_command(['numpy/_build_utils/gitversion.py'], check: true).stdout().strip(), license: 'BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0', meson_version: '>=1.8.3', # version in vendored-meson default_options: [ 'buildtype=debugoptimized', 'b_ndebug=if-release', 'c_std=c11', 'cpp_std=c++17', 'pkgconfig.relocatable=true', 'python.allow_limited_api=false', ], ) # Target version for the Limited C API, used by extension modules that # have been ported. Controlled by python.allow_limited_api (default: false). # The hex form is the same version, for targets that must define # `Py_LIMITED_API` themselves; keep the two in sync. py_limited_api = '3.13' py_limited_api_hex = '0x030d0000' fs = import('fs') cc = meson.get_compiler('c') cpp = meson.get_compiler('cpp') cy = meson.get_compiler('cython') # Check compiler is recent enough (see the SciPy Toolchain Roadmap for details) if cc.get_id() == 'gcc' if not cc.version().version_compare('>=10.3') error('NumPy requires GCC >= 10.3') endif elif cc.get_id() == 'msvc' if not cc.version().version_compare('>=19.35') error('NumPy requires at least vc143 (default with Visual Studio 2022) ' + \ 'when building with MSVC') endif add_project_arguments('/experimental:c11atomics', language: 'c') endif if not cy.version().version_compare('>=3.1.0') error('NumPy requires Cython >= 3.1.0') endif py = import('python').find_installation(pure: false) py_dep = py.dependency() if not cc.has_header('Python.h', dependencies: py_dep) error('Cannot compile `Python.h`. Perhaps you need to install python-dev|python-devel') endif # Add default compile flags for any compiler that supports them. # Note that MSVC does not support strict aliasing at all, and neither do the # Intel compilers on Windows, so the `-fno` flavor of the flag should be fine. add_project_arguments( cc.get_supported_arguments( '-fno-strict-aliasing'), language : 'c' ) # # Clang defaults to a non-strict floating error point model, but we need strict # behavior. `-ftrapping-math` is equivalent to `-ffp-exception-behavior=strict`. # This flag is also required to prevent the activation of SIMD partial load workarounds. # For further clarification, refer to gh-24461. cc_id = cc.get_id() if cc_id.startswith('clang') # Determine the compiler flags for trapping math exceptions. trapping_math = { 'clang-cl': '/clang:-ftrapping-math', }.get(cc_id, '-ftrapping-math') # Check if the compiler supports the trapping math flag. if cc.has_argument(trapping_math) # TODO: Consider upgrading the vendored Meson to 1.3.0 to support the parameter `werror` # Detect whether the compiler actually supports strict handling of floating-point exceptions # by treating warnings as errors. if cc.compiles('int main() { return 0; }', args: [trapping_math, '-Werror']) trapping_math = [trapping_math, '-DNPY_HAVE_CLANG_FPSTRICT'] else # Suppress warnings about unsupported floating-point optimization. trapping_math = [trapping_math, '-Wno-unsupported-floating-point-opt'] # Inform the user about the workaround. message( 'NumPy is being built against a version of Clang that does not strictly enforce ' + 'floating-point exception handling. Workarounds will be used, which may impact performance.\n' + 'Consider upgrading Clang to the latest version.' ) endif add_project_arguments(trapping_math, language: ['c', 'cpp']) endif endif subdir('meson_cpu') subdir('numpy')