Update xmake.lua

pull/736/head
ruki 3 years ago committed by GitHub
parent a46cef21f4
commit bbea68d883
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 64
      packages/o/openmp/xmake.lua

@ -7,62 +7,68 @@ package("openmp")
add_configs("experimental", {description = "Enable experimental OpenMP feature for msvc.", default = true, type = boolean}) add_configs("experimental", {description = "Enable experimental OpenMP feature for msvc.", default = true, type = boolean})
on_load(function (package) on_load(function (package)
if package.has_tool then
for _, toolkind in ipairs({"cc", "cxx"}) do
if package:config("runtime") == "default" then
if package:has_tool(toolkind, "clang", "clangxx") then
if package:is_plat("macosx") then
package:add("deps", "libomp") -- need to tell apple clang from llvm clang
end
end
end
end
end
end)
on_fetch(function (package)
for _, dep in ipairs(package:orderdeps()) do
if not dep:fetch() then
return
end
end
local result = {}
if package.has_tool then if package.has_tool then
for _, toolkind in ipairs({"cc", "cxx"}) do for _, toolkind in ipairs({"cc", "cxx"}) do
local flagname = toolkind == "cxx" and "cxxflags" or "cflags" local flagname = toolkind == "cxx" and "cxxflags" or "cflags"
if package:has_tool(toolkind, "cl") then if package:has_tool(toolkind, "cl") then
package:add(flagname, (package:config("experimental") and "/openmp:experimental" or "/openmp")) result[flagname] = (package:config("experimental") and "/openmp:experimental" or "/openmp")
elseif package:has_tool(toolkind, "clang", "clangxx") then elseif package:has_tool(toolkind, "clang", "clangxx") then
if package:is_plat("macosx") then if package:is_plat("macosx") then
package:add(flagname, "-Xpreprocessor -fopenmp") result[flagname] = "-Xpreprocessor -fopenmp"
else else
package:add(flagname, "-fopenmp") result[flagname] = "-fopenmp"
end end
elseif package:has_tool(toolkind, "gcc", "gxx") then elseif package:has_tool(toolkind, "gcc", "gxx") then
package:add(flagname, "-fopenmp") result[flagname] = "-fopenmp"
elseif package:has_tool(toolkind, "icc", "icpc") then elseif package:has_tool(toolkind, "icc", "icpc") then
package:add(flagname, "-qopenmp") result[flagname] = "-qopenmp"
elseif package:has_tool(toolkind, "icl") then elseif package:has_tool(toolkind, "icl") then
package:add(flagname, "-Qopenmp") result[flagname] = "-Qopenmp"
end end
if package:config("runtime") == "default" then if package:config("runtime") == "default" then
if package:has_tool(toolkind, "cl") then if package:has_tool(toolkind, "cl") then
package:add("ldflags", "/openmp") result.ldflags = "/openmp"
elseif package:has_tool(toolkind, "clang", "clangxx") then elseif package:has_tool(toolkind, "clang", "clangxx") then
if package:is_plat("macosx") then if not package:is_plat("macosx") then
package:add("deps", "libomp") -- need to tell apple clang from llvm clang result.ldflags = "-fopenmp"
else
package:add("ldflags", "-fopenmp")
end end
elseif package:has_tool(toolkind, "gcc", "gxx") then elseif package:has_tool(toolkind, "gcc", "gxx") then
package:add("ldflags", "-fopenmp") result.ldflags = "-fopenmp"
elseif package:has_tool(toolkind, "icc", "icpc") then elseif package:has_tool(toolkind, "icc", "icpc") then
package:add("ldflags", "-qopenmp") result.ldflags = "-qopenmp"
elseif package:has_tool(toolkind, "icl") then elseif package:has_tool(toolkind, "icl") then
package:add("ldflags", "-Qopenmp") result.ldflags = "-Qopenmp"
end end
end end
if package:config("runtime") == "custom" then if package:config("runtime") == "custom" then
if package:has_tool(toolkind, "cl") then if package:has_tool(toolkind, "cl") then
package:add("ldflags", "/openmp") result.ldflags = "/openmp"
package:add("ldflags", "/nodefaultlib:vcomp") result.ldflags = "/nodefaultlib:vcomp"
end
end
end end
end end
end)
on_fetch(function (package)
for _, dep in ipairs(package:orderdeps()) do
if not dep:fetch() then
return
end
end end
-- we need fetch the installed flags in on_load
local manifest = package:manifest_load()
if manifest then
return manifest.vars
end end
return (result.cflags or result.cxxflags) and result
end) end)
on_install("linux", "macosx", "windows", function (package) on_install("linux", "macosx", "windows", function (package)

Loading…
Cancel
Save