|
@@ -0,0 +1,39 @@
|
|
|
+package("msmpi")
|
|
|
+
|
|
|
+ set_homepage("https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi")
|
|
|
+ set_description("Microsoft MPI (MS-MPI) is a Microsoft implementation of the Message Passing Interface standard for developing and running parallel applications on the Windows platform.")
|
|
|
+
|
|
|
+ on_fetch("windows", function (package, opt)
|
|
|
+ if opt.system then
|
|
|
+ import("lib.detect.find_path")
|
|
|
+ import("lib.detect.find_library")
|
|
|
+
|
|
|
+ -- init search paths
|
|
|
+ local paths = {
|
|
|
+ "$(env MSMPI_ROOT)",
|
|
|
+ "$(env MSMPI_INC)\\..",
|
|
|
+ "$(env PROGRAMFILES%(x86%))\\Microsoft SDKs\\MPI"
|
|
|
+ }
|
|
|
+
|
|
|
+ -- find library
|
|
|
+ local result = {links = {}, linkdirs = {}, includedirs = {}}
|
|
|
+ local arch = package:is_arch("x64") and "x64" or "x86"
|
|
|
+ for _, lib in ipairs({"msmpi", "msmpifec", "msmpifmc"}) do
|
|
|
+ local linkinfo = find_library(lib, paths, {suffixes = path.join("Lib", arch)})
|
|
|
+ if linkinfo then
|
|
|
+ table.insert(result.linkdirs, linkinfo.linkdir)
|
|
|
+ table.insert(result.links, lib)
|
|
|
+ end
|
|
|
+ end
|
|
|
+ result.linkdirs = table.unique(result.linkdirs)
|
|
|
+
|
|
|
+ -- find headers
|
|
|
+ local path = find_path("mpi.h", paths, {suffixes = "Include"})
|
|
|
+ if path then
|
|
|
+ table.insert(result.includedirs, path)
|
|
|
+ end
|
|
|
+ if #result.includedirs > 0 and #result.linkdirs > 0 then
|
|
|
+ return result
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end)
|