summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/fortran.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/compilers/fortran.py')
-rw-r--r--mesonbuild/compilers/fortran.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py
index 4f9b9ffa3..06e01d073 100644
--- a/mesonbuild/compilers/fortran.py
+++ b/mesonbuild/compilers/fortran.py
@@ -27,7 +27,8 @@ from .compilers import (
ClangCompiler,
ElbrusCompiler,
IntelGnuLikeCompiler,
- PGICompiler
+ PGICompiler,
+ IntelVisualStudioLikeCompiler,
)
from .clike import CLikeCompiler
@@ -66,6 +67,7 @@ class FortranCompiler(CLikeCompiler, Compiler):
for_machine = MachineChoice.HOST
extra_flags = environment.coredata.get_external_args(for_machine, self.language)
extra_flags += environment.coredata.get_external_link_args(for_machine, self.language)
+ extra_flags += self.get_always_args()
# %% build the test executable
pc = subprocess.Popen(self.exelist + extra_flags + [str(source_name), '-o', str(binary_name)])
pc.wait()
@@ -239,6 +241,36 @@ class IntelFortranCompiler(IntelGnuLikeCompiler, FortranCompiler):
def language_stdlib_only_link_flags(self):
return ['-lifcore', '-limf']
+class IntelClFortranCompiler(IntelVisualStudioLikeCompiler, FortranCompiler):
+
+ file_suffixes = ['f90', 'f', 'for', 'ftn', 'fpp']
+ always_args = ['/nologo']
+
+ BUILD_ARGS = {
+ 'plain': [],
+ 'debug': ["/Zi", "/Od"],
+ 'debugoptimized': ["/Zi", "/O1"],
+ 'release': ["/O2"],
+ 'minsize': ["/Os"],
+ 'custom': [],
+ }
+
+ def __init__(self, exelist, version, is_cross, target: str, exe_wrapper=None):
+ FortranCompiler.__init__(self, exelist, version, is_cross, exe_wrapper)
+ IntelVisualStudioLikeCompiler.__init__(self, target)
+
+ default_warn_args = ['/warn:general', '/warn:truncated_source']
+ self.warn_args = {'0': [],
+ '1': default_warn_args,
+ '2': default_warn_args + ['/warn:unused'],
+ '3': ['/warn:all']}
+
+ def get_module_outdir_args(self, path) -> List[str]:
+ return ['/module:' + path]
+
+ def get_buildtype_args(self, buildtype: str) -> List[str]:
+ return self.BUILD_ARGS[buildtype]
+
class PathScaleFortranCompiler(FortranCompiler):
def __init__(self, exelist, version, is_cross, exe_wrapper=None, **kwags):