Skip to content

Commit

Permalink
MPI: don't excessively skip Windows test cases, which can hide real p…
Browse files Browse the repository at this point in the history
…roblems
  • Loading branch information
scivision authored and jpakkane committed Oct 17, 2019
1 parent 88e77e6 commit 89ced3f
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 21 deletions.
1 change: 1 addition & 0 deletions test cases/frameworks/17 mpi/main.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include <mpi.h>
#include <stdio.h>

int main(int argc, char **argv)
{
Expand Down
47 changes: 26 additions & 21 deletions test cases/frameworks/17 mpi/meson.build
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
project('mpi', 'c', 'cpp', default_options: ['b_asneeded=false'])

cc = meson.get_compiler('c')

if build_machine.system() == 'windows' and cc.get_id() != 'msvc'
error('MESON_SKIP_TEST: MPI not available on Windows without MSVC.')
endif

mpic = dependency('mpi', language : 'c', required : false)
if not mpic.found()
error('MESON_SKIP_TEST: MPI not found, skipping.')
Expand All @@ -14,31 +9,41 @@ exec = executable('exec',
'main.c',
dependencies : [mpic])

test('MPI C', exec)
test('MPI C', exec, timeout: 10)

if build_machine.system() != 'windows'
# C++ MPI not supported by MS-MPI
mpicpp = dependency('mpi', language : 'cpp')
execpp = executable('execpp',
'main.cpp',
dependencies : [mpicpp])

test('MPI C++', execpp)
# C++ MPI not supported by MS-MPI
cpp = meson.get_compiler('cpp')
mpicpp = dependency('mpi', language : 'cpp', required: false)
if not cpp.links('''
#include <mpi.h>
#include <stdio.h>
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])

# One of few feasible ways to use MPI for Fortran on Windows is via Intel compilers.
if build_machine.system() != 'windows' or cc.get_id() == 'intel'
if add_languages('fortran', required : false)
mpifort = dependency('mpi', language : 'fortran')
test('MPI C++', execpp, timeout: 10)

exef = executable('exef',
'main.f90',
dependencies : [mpifort])

test('MPI Fortran', exef)
if add_languages('fortran', required : false)
fc = meson.get_compiler('fortran')
mpif = dependency('mpi', language : 'fortran', required: false)
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: 10)
endif


# Check we can apply a version constraint
if mpic.version() != 'unknown'
dependency('mpi', version: '>=@0@'.format(mpic.version()))
Expand Down

0 comments on commit 89ced3f

Please sign in to comment.