diff options
| author | ruki <[email protected]> | 2021-12-08 23:10:12 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-12-08 23:10:12 +0800 |
| commit | 74e0376c16f033d1a72a280808f83c9e4aeb4874 (patch) | |
| tree | e33c262dd8022fd7010ffc16b388e929d4c0015b /xmake/toolchains | |
| parent | 42c73afaf38ab2645944c8bccd4e24aedba62d7e (diff) | |
improve icc toolchain
Diffstat (limited to 'xmake/toolchains')
| -rw-r--r-- | xmake/toolchains/icc/check.lua | 32 | ||||
| -rw-r--r-- | xmake/toolchains/icc/load.lua | 9 | ||||
| -rw-r--r-- | xmake/toolchains/ifort/load.lua | 1 |
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) |
