project( 'scikit-learn', 'c', 'cpp', 'cython', version: run_command('sklearn/_build_utils/version.py', check: true).stdout().strip(), license: 'BSD-3', meson_version: '>= 1.1.0', default_options: [ 'buildtype=debugoptimized', 'c_std=c11', 'cpp_std=c++14', ], ) cc = meson.get_compiler('c') cpp = meson.get_compiler('cpp') # Check compiler is recent enough (see "Toolchain Roadmap" for details) if cc.get_id() == 'gcc' if not cc.version().version_compare('>=8.0') error('scikit-learn requires GCC >= 8.0') endif elif cc.get_id() == 'msvc' if not cc.version().version_compare('>=19.20') error('scikit-learn requires at least vc142 (default with Visual Studio 2019) ' + \ 'when building with MSVC') endif endif _global_c_args = cc.get_supported_arguments( '-Wno-unused-but-set-variable', '-Wno-unused-function', '-Wno-conversion', '-Wno-misleading-indentation', ) add_project_arguments(_global_c_args, language : 'c') # We need -lm for all C code (assuming it uses math functions, which is safe to # assume for scikit-learn). For C++ it isn't needed, because libstdc++/libc++ is # guaranteed to depend on it. m_dep = cc.find_library('m', required : false) if m_dep.found() add_project_link_arguments('-lm', language : 'c') endif tempita = files('sklearn/_build_utils/tempita.py') py = import('python').find_installation(pure: false) # Copy all the .py files to the install dir, rather than using # py.install_sources and needing to list them explicitely one by one install_subdir('sklearn', install_dir: py.get_install_dir()) subdir('sklearn')