project('mpi', 'c', 'cpp', default_options: ['b_asneeded=false']) method = get_option('method') cc = meson.get_compiler('c') mpic = dependency('mpi', language : 'c', required : false, method : method) if not mpic.found() error('MESON_SKIP_TEST: MPI not found, skipping.') endif exec = executable('exec', 'main.c', dependencies : [mpic]) test('MPI C', exec, timeout: 20) # C++ MPI not supported by MS-MPI cpp = meson.get_compiler('cpp') mpicpp = dependency('mpi', language : 'cpp', required: false, method : method) if not cpp.links(''' #include #include int main(int argc, char **argv) {MPI::Init(argc, argv);} ''', dependencies: mpicpp, name: 'C++ MPI') mpicpp = disabler() endif execpp = executable('execpp', 'main.cpp', dependencies : [mpicpp]) test('MPI C++', execpp, timeout: 20) if add_languages('fortran', required : false) fc = meson.get_compiler('fortran') mpif = dependency('mpi', language : 'fortran', required: false, method : method) if not fc.links('use mpi; end', dependencies: mpif, name: 'Fortran MPI') mpif = disabler() endif exef = executable('exef', 'main.f90', dependencies : mpif) test('MPI Fortran', exef, timeout: 20) endif # Check we can apply a version constraint if mpic.version() != 'unknown' dependency('mpi', version: '>=@0@'.format(mpic.version()), method : method) endif