diff options
| author | ruki <[email protected]> | 2021-12-08 22:30:38 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-12-08 22:30:38 +0800 |
| commit | dedcd548ec31ad936128b272c705f8f30fb01eb2 (patch) | |
| tree | cae8d7b373d1eacb097298f022780d75abc6eb6a /xmake/toolchains | |
| parent | 86eaab2842abf6570895da359ed484805bf759a5 (diff) | |
improve ifort
Diffstat (limited to 'xmake/toolchains')
| -rw-r--r-- | xmake/toolchains/ifort/check.lua | 31 | ||||
| -rw-r--r-- | xmake/toolchains/ifort/load.lua | 9 |
2 files changed, 28 insertions, 12 deletions
diff --git a/xmake/toolchains/ifort/check.lua b/xmake/toolchains/ifort/check.lua index 67d4e3931..cb37666b7 100644 --- a/xmake/toolchains/ifort/check.lua +++ b/xmake/toolchains/ifort/check.lua @@ -28,7 +28,8 @@ import("lib.detect.find_tool") function _check_intel_on_windows(toolchain) -- have been checked? - if config.get("__ifortvarsall") then + local varsall = toolchain:config("varsall") + if varsall then return true end @@ -38,18 +39,11 @@ function _check_intel_on_windows(toolchain) local ifortvarsall = ifortenv.ifortvars local ifortenv = ifortvarsall[toolchain:arch()] if ifortenv and ifortenv.PATH and ifortenv.INCLUDE and ifortenv.LIB then - - -- save ifortvars - config.set("__ifortvarsall", ifortvarsall) - - -- check compiler - local program = nil local tool = find_tool("ifort.exe", {force = true, envs = ifortenv, version = true}) if tool then - program = tool.program - end - if program then cprint("checking for Intel Fortran Compiler (%s) ... ${color.success}${text.success}", toolchain:arch()) + toolchain:config_set("varsall", ifortvarsall) + toolchain:config_save() return true end end @@ -58,7 +52,22 @@ end -- check intel on linux function _check_intel_on_linux(toolchain) - return find_tool("ifort") + local ifortenv = toolchain:config("ifortenv") + if ifortenv then + return true + end + ifortenv = find_ifortenv() + if ifortenv then + local ldname = is_host("macosx") and "DYLD_LIBRARY_PATH" or "LD_LIBRARY_PATH" + local tool = find_tool("ifort", {force = true, envs = {[ldname] = ifortenv.libdir}, paths = ifortenv.bindir}) + if tool then + cprint("checking for Intel Fortran Compiler (%s) ... ${color.success}${text.success}", toolchain:arch()) + toolchain:config_set("ifortenv", ifortenv) + toolchain:config_save() + return true + end + return true + end end -- main entry diff --git a/xmake/toolchains/ifort/load.lua b/xmake/toolchains/ifort/load.lua index 804f3a914..2cb212a57 100644 --- a/xmake/toolchains/ifort/load.lua +++ b/xmake/toolchains/ifort/load.lua @@ -26,7 +26,7 @@ import("core.project.config") function _add_ifortenv(toolchain, name) -- get ifortvarsall - local ifortvarsall = config.get("__ifortvarsall") + local ifortvarsall = toolchain:config("varsall") if not ifortvarsall then return end @@ -85,6 +85,13 @@ function _load_intel_on_linux(toolchain) toolchain:add("fcldflags", march) toolchain:add("fcshflags", march) 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) + end end -- main entry |
