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.
151 lines
12 KiB
151 lines
12 KiB
package("mkl") |
|
|
|
set_homepage("https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html") |
|
set_description("Intel® oneAPI Math Kernel Library") |
|
|
|
if is_plat("windows") then |
|
if is_arch("x64") then |
|
add_urls("https://anaconda.org/intel/mkl-static/$(version).tar.bz2", {version = function (version) |
|
local mv = version:split("%+") |
|
return format("%s/download/win-64/mkl-static-%s-intel_%s", mv[1], mv[1], mv[2]) |
|
end}) |
|
add_versions("2021.2.0+296", "54209e5d9c4778381f08b9a90e900c001494db020cda426441cd624cb0f7ebdc") |
|
add_resources("2021.2.0+296", "headers", "https://anaconda.org/intel/mkl-include/2021.2.0/download/win-64/mkl-include-2021.2.0-intel_296.tar.bz2", "ba222ea4ceb9e09976f23a3df39176148b4469b297275f3d05c1ad411b3d54c3") |
|
add_versions("2021.3.0+524", "842628a8621f2ca19d7f1809e50420e311edf20b9bea18404dd1c20af798f5e6") |
|
add_resources("2021.3.0+524", "headers", "https://anaconda.org/intel/mkl-include/2021.3.0/download/win-64/mkl-include-2021.3.0-intel_524.tar.bz2", "8ca8f77d0c57a434541d62a9c61781aa37225f5e669de01b8cc98488b3f9e82f") |
|
add_versions("2022.1.0+192", "fd9a529c0caa27ee3068e8d845f07e536970b0cbf713118d1f3daa32fb2b9e8c") |
|
add_resources("2022.1.0+192", "headers", "https://anaconda.org/intel/mkl-include/2022.1.0/download/win-64/mkl-include-2022.1.0-intel_192.tar.bz2", "b6452e8c4891fcfab452bc23c6adc9c61ab6635fa494bb2b29725473c1013abc") |
|
add_versions("2023.2.0+49496", "21a9fe03ba80009934a50b9d75f16757b9e49415e44245ced3b896fd471351ca") |
|
add_resources("2023.2.0+49496", "headers", "https://anaconda.org/intel/mkl-include/2023.2.0/download/win-64/mkl-include-2023.2.0-intel_49496.tar.bz2", "daa93c899e6c7627232fa60e67a2b6079cd29752e8ba1251ae895a57e51defa7") |
|
elseif is_arch("x86") then |
|
add_urls("https://anaconda.org/intel/mkl-static/$(version).tar.bz2", {version = function (version) |
|
local mv = version:split("%+") |
|
return format("%s/download/win-32/mkl-static-%s-intel_%s", mv[1], mv[1], mv[2]) |
|
end}) |
|
add_versions("2021.2.0+296", "eaf0df027d58c5fd948f86b83dfc4d608855962cbdb04551712c9aeeb7b26eca") |
|
add_resources("2021.2.0+296", "headers", "https://anaconda.org/intel/mkl-include/2021.2.0/download/win-32/mkl-include-2021.2.0-intel_296.tar.bz2", "8ed173edff75783426de1bbc1d122266047fc84d4cfc5a9b810b1f2792f02c37") |
|
add_versions("2021.3.0+524", "799a42ab4422d1532be65e40ed4ac5e81692b796ae3de37a7489389f9e10f112") |
|
add_resources("2021.3.0+524", "headers", "https://anaconda.org/intel/mkl-include/2021.3.0/download/win-32/mkl-include-2021.3.0-intel_524.tar.bz2", "9ff8e58dc98da8ec2fe3b15eac2abfef4eb3335d90feeb498f84126371ccea8c") |
|
add_versions("2022.0.3+171", "b34d5e5d0dd779b117666c9fc89d008431f6239ad60fc08a52a6b874fdf24517") |
|
add_resources("2022.0.3+171", "headers", "https://anaconda.org/intel/mkl-include/2022.0.3/download/win-32/mkl-include-2022.0.3-intel_171.tar.bz2", "f696cd98b2f33b2c21bf7b70f57e894a763dad1831c721a348614cfeb17a4541") |
|
add_versions("2023.2.0+49496", "4795b6a00b1b7ae5c608de67ba2c79ad152223d0eaf4aba46db848bbae268718") |
|
add_resources("2023.2.0+49496", "headers", "https://anaconda.org/intel/mkl-include/2023.2.0/download/win-32/mkl-include-2023.2.0-intel_49496.tar.bz2", "0ed907ecc2eaae0ed8c280814392b5b80cc19df78838d9688273a12bd72c7bf8") |
|
end |
|
elseif is_plat("macosx") and is_arch("x86_64") then |
|
add_urls("https://anaconda.org/intel/mkl-static/$(version).tar.bz2", {version = function (version) |
|
local mv = version:split("%+") |
|
return format("%s/download/osx-64/mkl-static-%s-intel_%s", mv[1], mv[1], mv[2]) |
|
end}) |
|
add_versions("2021.2.0+269", "b7af248f01799873333cbd388b5efa19601cf6815dc38713509974783f4b1ccd") |
|
add_resources("2021.2.0+269", "headers", "https://anaconda.org/intel/mkl-include/2021.2.0/download/osx-64/mkl-include-2021.2.0-intel_269.tar.bz2", "5215d62cadeb3f8021230163dc35ad38259e3688aa0f39d7da69ebe54ab45624") |
|
add_versions("2021.3.0+517", "85a636642ee4f76fba50d16c45099cd22082eb1f8b835a4a0b455ec4796ebf8f") |
|
add_resources("2021.3.0+517", "headers", "https://anaconda.org/intel/mkl-include/2021.3.0/download/osx-64/mkl-include-2021.3.0-intel_517.tar.bz2", "db9896e667b31908b398d515108433d8df95e6429ebfb9d493a463f25886019c") |
|
add_versions("2022.1.0+208", "06e5dcd7b8f11f9736d4e4d7d5a9972333ee8822cf2263ecccf4cb0e3cc95530") |
|
add_resources("2022.1.0+208", "headers", "https://anaconda.org/intel/mkl-include/2022.1.0/download/osx-64/mkl-include-2022.1.0-intel_208.tar.bz2", "569ea516148726b2698f17982aba2d9ec1bfb321f0180be938eddbc696addbc5") |
|
add_versions("2023.2.0+49499", "2e2f6bd275e439f82f081e28e774dec663718b199a696da635934536a51faa73") |
|
add_resources("2023.2.0+49499", "headers", "https://anaconda.org/intel/mkl-include/2023.2.0/download/osx-64/mkl-include-2023.2.0-intel_49499.tar.bz2", "c3940a33498df821821c28dc292f7d7a739b11892856fd9fbbc3de5cf0990b00") |
|
elseif is_plat("linux") then |
|
if is_arch("x86_64") then |
|
add_urls("https://anaconda.org/intel/mkl-static/$(version).tar.bz2", {version = function (version) |
|
local mv = version:split("%+") |
|
return format("%s/download/linux-64/mkl-static-%s-intel_%s", mv[1], mv[1], mv[2]) |
|
end}) |
|
add_versions("2021.2.0+296", "2bcaefefd593e4fb521e1fc88715f672ae5b9d1706babf10e3a10ef43ea0f983") |
|
add_resources("2021.2.0+296", "headers", "https://anaconda.org/intel/mkl-include/2021.2.0/download/linux-64/mkl-include-2021.2.0-intel_296.tar.bz2", "13721fead8a3eddee15b914fd3ae9cf2095966af79bbc2f086462eda9fff4d62") |
|
add_versions("2021.3.0+520", "c1e21988bbf05b455077a512cb719ef59ec6e06a6807cfefb892945ec19de5d0") |
|
add_resources("2021.3.0+520", "headers", "https://anaconda.org/intel/mkl-include/2021.3.0/download/linux-64/mkl-include-2021.3.0-intel_520.tar.bz2", "b0df7fb4c2071fdec87b567913715a2e47dca05e8c3ac4e5bcf072d7804085af") |
|
add_versions("2022.1.0+223", "9dfb2940447cc8cf7ca3e647e2b62be714e89cbca162998cbf4e05deb69b6bd2") |
|
add_resources("2022.1.0+223", "headers", "https://anaconda.org/intel/mkl-include/2022.1.0/download/linux-64/mkl-include-2022.1.0-intel_223.tar.bz2", "704e658a9b25a200f8035f3d0a8f2e094736496a2169f87609f1cfed2e2eb0a9") |
|
add_versions("2023.2.0+49495", "5c91829865f36f7f5845f5b38e509bb05bee1a38ccfd2caa0eabc0c28aaa4082") |
|
add_resources("2023.2.0+49495", "headers", "https://anaconda.org/intel/mkl-include/2023.2.0/download/linux-64/mkl-include-2023.2.0-intel_49495.tar.bz2", "0dfb6ca3c17d99641f20877579c78155cf95aa0b22363bcc91b1d57df4646318") |
|
elseif is_arch("x86") then |
|
add_urls("https://anaconda.org/intel/mkl-static/$(version).tar.bz2", {version = function (version) |
|
local mv = version:split("%+") |
|
return format("%s/download/linux-32/mkl-static-%s-intel_%s", mv[1], mv[1], mv[2]) |
|
end}) |
|
add_versions("2021.2.0+296", "34a1bc80a4a39ca5a55d29e9fcc803380fbc4d029ae496e60a918e8d12db68c2") |
|
add_resources("2021.2.0+296", "headers", "https://anaconda.org/intel/mkl-include/2021.2.0/download/linux-32/mkl-include-2021.2.0-intel_296.tar.bz2", "7fcbc945377b486b40d29b170d0b6c39bbc5b430ac7284dae2046bbf610f643d") |
|
add_versions("2021.3.0+520", "4df801f5806d1934c5f3887e8f2153fb0c929be9545627cf99ce9e72c907653b") |
|
add_resources("2021.3.0+520", "headers", "https://anaconda.org/intel/mkl-include/2021.3.0/download/linux-32/mkl-include-2021.3.0-intel_520.tar.bz2", "dce1f2a08499f34ed4883b807546754c1547a9cc2424b7b75b9233641cf044c1") |
|
add_versions("2022.0.2+136", "157c09248cb5e5cbcb28ef8db53d529ab2f049e9269b2a2bc90601c0c420080e") |
|
add_resources("2022.0.2+136", "headers", "https://anaconda.org/intel/mkl-include/2022.0.2/download/linux-32/mkl-include-2022.0.2-intel_136.tar.bz2", "16882aeddbd33a2dc9210e61c59db6ad0d7d9efdd40ad1544b369b0830683371") |
|
add_versions("2023.2.0+49495", "9cdcb26ebbbe1510611f01f75780c0e69522d5df73395370a73c81413beaa56a") |
|
add_resources("2023.2.0+49495", "headers", "https://anaconda.org/intel/mkl-include/2023.2.0/download/linux-32/mkl-include-2023.2.0-intel_49495.tar.bz2", "b4433c6839bb7f48951b2dcf409dec7306aee3649c539ee0513d8bfb1a1ea283") |
|
end |
|
end |
|
|
|
add_configs("threading", {description = "Choose threading modal for mkl.", default = "tbb", type = "string", values = {"tbb", "openmp", "gomp", "seq"}}) |
|
add_configs("interface", {description = "Choose index integer size for the interface.", default = 32, values = {32, 64}}) |
|
|
|
on_fetch("fetch") |
|
|
|
if is_plat("linux") then |
|
add_syslinks("pthread", "dl") |
|
end |
|
on_load("windows", "macosx", "linux", function (package) |
|
-- Refer to [oneAPI Math Kernel Library Link Line Advisor](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html) |
|
-- to get the link option for MKL library. |
|
local suffix = (package:config("interface") == 32 and "lp64" or "ilp64") |
|
if package:config("interface") == 64 then |
|
package:add("defines", "MKL_ILP64") |
|
end |
|
package:add("links", package:is_arch("x64", "x86_64") and "mkl_blas95_" .. suffix or "mkl_blas95") |
|
package:add("links", package:is_arch("x64", "x86_64") and "mkl_lapack95_" .. suffix or "mkl_lapack95") |
|
|
|
if package:has_tool("cc", "gcc", "gxx") then |
|
local flags = {"-Wl,--start-group"} |
|
table.insert(flags, package:is_arch("x64", "x86_64") and "-lmkl_intel_" .. suffix or "-lmkl_intel") |
|
local threading = package:config("threading") |
|
if threading == "tbb" then |
|
table.insert(flags, "-lmkl_tbb_thread") |
|
package:add("deps", "tbb") |
|
elseif threading == "seq" then |
|
table.insert(flags, "-lmkl_sequential") |
|
elseif threading == "openmp" then |
|
table.insert(flags, "-lmkl_intel_thread") |
|
table.insert(flags, "-lomp") |
|
elseif threading == "gomp" then |
|
table.insert(flags, "-lmkl_gnu_thread") |
|
table.insert(flags, "-lgomp") |
|
end |
|
table.insert(flags, "-lmkl_core") |
|
table.insert(flags, "-Wl,--end-group") |
|
package:add("ldflags", table.concat(flags, " ")) |
|
else |
|
package:add("links", package:is_arch("x64", "x86_64") and "mkl_intel_" .. suffix or "mkl_intel_c") |
|
local threading = package:config("threading") |
|
if threading == "tbb" then |
|
package:add("links", "mkl_tbb_thread") |
|
package:add("deps", "tbb") |
|
elseif threading == "seq" then |
|
package:add("links", "mkl_sequential") |
|
elseif threading == "openmp" then |
|
package:add("links", "mkl_intel_thread", "omp") |
|
elseif threading == "gomp" then |
|
package:add("links", "mkl_gnu_thread", "gomp") |
|
end |
|
package:add("links", "mkl_core") |
|
end |
|
end) |
|
|
|
on_install("windows", "macosx", "linux", function (package) |
|
local headerdir = package:resourcedir("headers") |
|
if package:is_plat("windows") then |
|
os.trymv(path.join("Library", "lib"), package:installdir()) |
|
os.trymv(path.join(headerdir, "Library", "include"), package:installdir()) |
|
else |
|
os.trymv(path.join("lib"), package:installdir()) |
|
os.trymv(path.join(headerdir, "include"), package:installdir()) |
|
end |
|
end) |
|
|
|
on_test(function (package) |
|
assert(package:check_csnippets({test = [[ |
|
void test() { |
|
double A[6] = {1.0,2.0,1.0,-3.0,4.0,-1.0}; |
|
double B[6] = {1.0,2.0,1.0,-3.0,4.0,-1.0}; |
|
double C[9] = {.5,.5,.5,.5,.5,.5,.5,.5,.5}; |
|
cblas_dgemm(CblasColMajor,CblasNoTrans,CblasTrans,3,3,2,1,A,3,B,3,2,C,3); |
|
} |
|
]]}, {includes = "mkl_cblas.h"})) |
|
end)
|
|
|