diff options
author | Michael Hirsch, Ph.D <scivision@users.noreply.github.com> | 2019-02-13 14:06:15 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-02-13 21:06:15 +0200 |
commit | 6b874339cc86b330b1cc0b87073ec912a8966a12 (patch) | |
tree | 390d840df3d9e460e83a4e1f1f03745c9201d249 | |
parent | 22c7727ed6f94f7d86f425f3040707689175c9dc (diff) | |
download | meson-6b874339cc86b330b1cc0b87073ec912a8966a12.zip meson-6b874339cc86b330b1cc0b87073ec912a8966a12.tar.gz meson-6b874339cc86b330b1cc0b87073ec912a8966a12.tar.bz2 |
BUGFIX: Fortran openmp
-rw-r--r-- | mesonbuild/compilers/compilers.py | 26 | ||||
-rw-r--r-- | mesonbuild/compilers/fortran.py | 6 | ||||
-rw-r--r-- | mesonbuild/dependencies/misc.py | 2 | ||||
-rw-r--r-- | test cases/common/190 openmp/main.f90 | 17 | ||||
-rw-r--r-- | test cases/common/190 openmp/meson.build | 8 |
5 files changed, 36 insertions, 23 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 9a101bf..64249fb 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -14,7 +14,7 @@ import abc, contextlib, enum, os.path, re, tempfile, shlex import subprocess -from typing import List +from typing import List, Tuple from ..linkers import StaticLinker from .. import coredata @@ -1602,18 +1602,18 @@ class GnuCompiler(GnuLikeCompiler): GnuCompiler represents an actual GCC in its many incarnations. Compilers imitating GCC (Clang/Intel) should use the GnuLikeCompiler ABC. """ - def __init__(self, compiler_type, defines): + def __init__(self, compiler_type, defines: dict): super().__init__(compiler_type) self.id = 'gcc' self.defines = defines or {} self.base_options.append('b_colorout') - def get_colorout_args(self, colortype): + def get_colorout_args(self, colortype: str) -> List[str]: if mesonlib.version_compare(self.version, '>=4.9.0'): return gnu_color_args[colortype][:] return [] - def get_warn_args(self, level): + def get_warn_args(self, level: str) -> list: args = super().get_warn_args(level) if mesonlib.version_compare(self.version, '<4.8.0') and '-Wpedantic' in args: # -Wpedantic was added in 4.8.0 @@ -1621,20 +1621,20 @@ class GnuCompiler(GnuLikeCompiler): args[args.index('-Wpedantic')] = '-pedantic' return args - def has_builtin_define(self, define): + def has_builtin_define(self, define: str) -> bool: return define in self.defines def get_builtin_define(self, define): if define in self.defines: return self.defines[define] - def get_optimization_args(self, optimization_level): + def get_optimization_args(self, optimization_level: str): return gnu_optimization_args[optimization_level] - def get_pch_suffix(self): + def get_pch_suffix(self) -> str: return 'gch' - def openmp_flags(self): + def openmp_flags(self) -> List[str]: return ['-fopenmp'] @@ -1648,7 +1648,7 @@ class PGICompiler: '2': default_warn_args, '3': default_warn_args} - def get_module_incdir_args(self) -> List[str]: + def get_module_incdir_args(self) -> Tuple[str]: return ('-module', ) def get_no_warn_args(self) -> List[str]: @@ -1663,10 +1663,10 @@ class PGICompiler: def get_buildtype_linker_args(self, buildtype: str) -> List[str]: return pgi_buildtype_linker_args[buildtype] - def get_optimization_args(self, optimization_level: str) -> List[str]: + def get_optimization_args(self, optimization_level: str): return clike_optimization_args[optimization_level] - def get_debug_args(self, is_debug: bool) -> List[str]: + def get_debug_args(self, is_debug: bool): return clike_debug_args[is_debug] def compute_parameters_with_absolute_paths(self, parameter_list: List[str], build_dir: str): @@ -1898,7 +1898,7 @@ class IntelCompiler(GnuLikeCompiler): def get_optimization_args(self, optimization_level): return clike_optimization_args[optimization_level] - def get_pch_suffix(self): + def get_pch_suffix(self) -> str: return 'pchi' def get_pch_use_args(self, pch_dir, header): @@ -1908,7 +1908,7 @@ class IntelCompiler(GnuLikeCompiler): def get_pch_name(self, header_name): return os.path.basename(header_name) + '.' + self.get_pch_suffix() - def openmp_flags(self): + def openmp_flags(self) -> List[str]: if version_compare(self.version, '>=15.0.0'): return ['-qopenmp'] else: diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py index 8c50736..1290c07 100644 --- a/mesonbuild/compilers/fortran.py +++ b/mesonbuild/compilers/fortran.py @@ -262,6 +262,12 @@ class FortranCompiler(Compiler): def has_multi_arguments(self, args, env): return CCompiler.has_multi_arguments(self, args, env) + def has_header(self, hname, prefix, env, *, extra_args=None, dependencies=None): + return CCompiler.has_header(self, hname, prefix, env, extra_args=extra_args, dependencies=dependencies) + + def get_define(self, dname, prefix, env, extra_args, dependencies): + return CCompiler.get_define(self, dname, prefix, env, extra_args, dependencies) + @classmethod def _get_trials_from_pattern(cls, pattern, directory, libname): return CCompiler._get_trials_from_pattern(pattern, directory, libname) diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index 208f063..e49bdc9 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -308,7 +308,7 @@ class OpenMPDependency(ExternalDependency): else: mlog.log(mlog.yellow('WARNING:'), 'OpenMP found but omp.h missing.') - def need_openmp(self): + def need_openmp(self) -> bool: return True diff --git a/test cases/common/190 openmp/main.f90 b/test cases/common/190 openmp/main.f90 index c062d86..d80f90f 100644 --- a/test cases/common/190 openmp/main.f90 +++ b/test cases/common/190 openmp/main.f90 @@ -1,8 +1,9 @@ -program main - if (omp_get_max_threads() .eq. 2) then - stop 0 - else - print *, 'Max threads is', omp_get_max_threads(), 'not 2.' - stop 1 - endif -end program main +use, intrinsic :: iso_fortran_env, only: stderr=>error_unit +use omp_lib + +if (omp_get_max_threads() /= 2) then + write(stderr, *) 'Max Fortran threads is', omp_get_max_threads(), 'not 2.' + stop 1 +endif + +end program diff --git a/test cases/common/190 openmp/meson.build b/test cases/common/190 openmp/meson.build index e446891..71bf697 100644 --- a/test cases/common/190 openmp/meson.build +++ b/test cases/common/190 openmp/meson.build @@ -43,7 +43,13 @@ if add_languages('fortran', required : false) exef = executable('exef', 'main.f90', dependencies : [openmp]) - test('OpenMP Fortran', execpp, env : env) + 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) endif endif |