package An official xmake package repository
https://xrepo.xmake.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.6 KiB
39 lines
1.6 KiB
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)
|
|
|