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