summaryrefslogtreecommitdiff
path: root/xmake/toolchains
diff options
context:
space:
mode:
authorruki <[email protected]>2021-12-08 23:10:12 +0800
committerruki <[email protected]>2021-12-08 23:10:12 +0800
commit74e0376c16f033d1a72a280808f83c9e4aeb4874 (patch)
treee33c262dd8022fd7010ffc16b388e929d4c0015b /xmake/toolchains
parent42c73afaf38ab2645944c8bccd4e24aedba62d7e (diff)
improve icc toolchain
Diffstat (limited to 'xmake/toolchains')
-rw-r--r--xmake/toolchains/icc/check.lua32
-rw-r--r--xmake/toolchains/icc/load.lua9
-rw-r--r--xmake/toolchains/ifort/load.lua1
3 files changed, 30 insertions, 12 deletions
diff --git a/xmake/toolchains/icc/check.lua b/xmake/toolchains/icc/check.lua
index 3b9c7b953..9dde538f0 100644
--- a/xmake/toolchains/icc/check.lua
+++ b/xmake/toolchains/icc/check.lua
@@ -28,7 +28,8 @@ import("lib.detect.find_tool")
function _check_intel_on_windows(toolchain)
-- have been checked?
- if config.get("__iclvarsall") then
+ local varsall = toolchain:config("varsall")
+ if varsall then
return true
end
@@ -38,18 +39,11 @@ function _check_intel_on_windows(toolchain)
local iclvarsall = iccenv.iclvars
local iclenv = iclvarsall[toolchain:arch()]
if iclenv and iclenv.PATH and iclenv.INCLUDE and iclenv.LIB then
-
- -- save iclvars
- config.set("__iclvarsall", iclvarsall)
-
- -- check compiler
- local program = nil
local tool = find_tool("icl.exe", {force = true, envs = iclenv, version = true})
if tool then
- program = tool.program
- end
- if program then
cprint("checking for Intel C/C++ Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
+ toolchain:config_set("varsall", iclvarsall)
+ toolchain:configs_save()
return true
end
end
@@ -58,7 +52,23 @@ end
-- check intel on linux
function _check_intel_on_linux(toolchain)
- return find_tool("icc")
+ local iccenv = toolchain:config("iccenv")
+ if iccenv then
+ return true
+ end
+ iccenv = find_iccenv()
+ if iccenv then
+ local ldname = is_host("macosx") and "DYLD_LIBRARY_PATH" or "LD_LIBRARY_PATH"
+ local tool = find_tool("icc", {force = true, envs = {[ldname] = iccenv.libdir}, paths = iccenv.bindir})
+ if tool then
+ cprint("checking for Intel C/C++ Compiler (%s) ... ${color.success}${text.success}", toolchain:arch())
+ toolchain:config_set("iccenv", iccenv)
+ toolchain:config_set("bindir", iccenv.bindir)
+ toolchain:configs_save()
+ return true
+ end
+ return true
+ end
end
-- main entry
diff --git a/xmake/toolchains/icc/load.lua b/xmake/toolchains/icc/load.lua
index 5784fc5c8..e1ceba260 100644
--- a/xmake/toolchains/icc/load.lua
+++ b/xmake/toolchains/icc/load.lua
@@ -26,7 +26,7 @@ import("core.project.config")
function _add_iclenv(toolchain, name)
-- get iclvarsall
- local iclvarsall = config.get("__iclvarsall")
+ local iclvarsall = toolchain:config("varsall")
if not iclvarsall then
return
end
@@ -100,6 +100,13 @@ function _load_intel_on_linux(toolchain)
toolchain:add("ldflags", march)
toolchain:add("shflags", march)
end
+
+ -- get icc environments
+ local iccenv = toolchain:config("iccenv")
+ if iccenv then
+ local ldname = is_host("macosx") and "DYLD_LIBRARY_PATH" or "LD_LIBRARY_PATH"
+ toolchain:add("runenvs", ldname, iccenv.libdir)
+ end
end
-- main entry
diff --git a/xmake/toolchains/ifort/load.lua b/xmake/toolchains/ifort/load.lua
index 1d8eb870f..2cb212a57 100644
--- a/xmake/toolchains/ifort/load.lua
+++ b/xmake/toolchains/ifort/load.lua
@@ -87,6 +87,7 @@ function _load_intel_on_linux(toolchain)
end
-- get ifort environments
+ local ifortenv = toolchain:config("ifortenv")
if ifortenv then
local ldname = is_host("macosx") and "DYLD_LIBRARY_PATH" or "LD_LIBRARY_PATH"
toolchain:add("runenvs", ldname, ifortenv.libdir)