aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies/misc.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/dependencies/misc.py')
-rw-r--r--mesonbuild/dependencies/misc.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py
index 4773f2f..f5cbb96 100644
--- a/mesonbuild/dependencies/misc.py
+++ b/mesonbuild/dependencies/misc.py
@@ -342,6 +342,12 @@ class MPIDependency(ExternalDependency):
self.link_args = self._filter_link_args(result[2])
break
+ if not self.is_found and mesonlib.is_windows():
+ result = self._try_msmpi()
+ if result is not None:
+ self.is_found = True
+ self.version, self.compile_args, self.link_args = result
+
if self.is_found:
mlog.log('Dependency', mlog.bold(self.name), 'for', self.language, 'found:', mlog.green('YES'), self.version)
else:
@@ -447,6 +453,35 @@ class MPIDependency(ExternalDependency):
return version, args, args
+ def _try_msmpi(self):
+ if self.language == 'cpp':
+ # MS-MPI does not support the C++ version of MPI, only the standard C API.
+ return
+ if 'MSMPI_INC' not in os.environ:
+ return
+ incdir = os.environ['MSMPI_INC']
+ arch = detect_cpu_family(self.env.coredata.compilers)
+ if arch == 'x86':
+ if 'MSMPI_LIB32' not in os.environ:
+ return
+ libdir = os.environ['MSMPI_LIB32']
+ post = 'x86'
+ elif arch == 'x86_64':
+ if 'MSMPI_LIB64' not in os.environ:
+ return
+ libdir = os.environ['MSMPI_LIB64']
+ post = 'x64'
+ else:
+ return
+ if self.language == 'fortran':
+ return ('none',
+ ['-I' + incdir, '-I' + os.path.join(incdir, post)],
+ [os.path.join(libdir, 'msmpi.lib'), os.path.join(libdir, 'msmpifec.lib')])
+ else:
+ return ('none',
+ ['-I' + incdir, '-I' + os.path.join(incdir, post)],
+ [os.path.join(libdir, 'msmpi.lib')])
+
class ThreadDependency(ExternalDependency):
def __init__(self, environment, kwargs):