parent
ec97bedd8a
commit
31e069e93f
2 changed files with 51 additions and 0 deletions
@ -0,0 +1,17 @@ |
|||||||
|
use, intrinsic :: iso_fortran_env, only: stderr=>error_unit |
||||||
|
use omp_lib, only: omp_get_max_threads |
||||||
|
implicit none |
||||||
|
|
||||||
|
integer :: N, ierr |
||||||
|
character(80) :: buf ! can't be allocatable in this use case. Just set arbitrarily large. |
||||||
|
|
||||||
|
call get_environment_variable('OMP_NUM_THREADS', buf, status=ierr) |
||||||
|
if (ierr/=0) error stop 'environment variable OMP_NUM_THREADS could not be read' |
||||||
|
read(buf,*) N |
||||||
|
|
||||||
|
if (omp_get_max_threads() /= N) then |
||||||
|
write(stderr, *) 'Max Fortran threads: ', omp_get_max_threads(), '!=', N |
||||||
|
error stop |
||||||
|
endif |
||||||
|
|
||||||
|
end program |
@ -0,0 +1,34 @@ |
|||||||
|
# This test is complementary to and extends "common/190 openmp" so that |
||||||
|
# we can examine more compilers and options than would be warranted in |
||||||
|
# the common test where C/C++ must also be handled. |
||||||
|
project('openmp', 'fortran', |
||||||
|
meson_version: '>= 0.46') |
||||||
|
|
||||||
|
|
||||||
|
fc = meson.get_compiler('fortran') |
||||||
|
if fc.get_id() == 'gcc' and fc.version().version_compare('<4.2.0') |
||||||
|
error('MESON_SKIP_TEST gcc is too old to support OpenMP.') |
||||||
|
endif |
||||||
|
if host_machine.system() == 'darwin' |
||||||
|
error('MESON_SKIP_TEST macOS does not support OpenMP.') |
||||||
|
endif |
||||||
|
|
||||||
|
openmp = dependency('openmp') |
||||||
|
|
||||||
|
env = environment() |
||||||
|
env.set('OMP_NUM_THREADS', '2') |
||||||
|
|
||||||
|
exef = executable('exef', |
||||||
|
'main.f90', |
||||||
|
dependencies : [openmp]) |
||||||
|
test('OpenMP Fortran', exef, env : env) |
||||||
|
|
||||||
|
openmp_f = dependency('openmp', language : 'fortran') |
||||||
|
exe_f = executable('exe_f', |
||||||
|
'main.f90', |
||||||
|
dependencies : [openmp_f]) |
||||||
|
test('OpenMP Fortran-specific', exe_f, env : env) |
||||||
|
|
||||||
|
|
||||||
|
# Check we can apply a version constraint |
||||||
|
dependency('openmp', version: '>=@0@'.format(openmp.version())) |
Loading…
Reference in new issue