summaryrefslogtreecommitdiff
path: root/xmake/toolchains
diff options
context:
space:
mode:
authorruki <[email protected]>2021-12-08 22:30:38 +0800
committerruki <[email protected]>2021-12-08 22:30:38 +0800
commitdedcd548ec31ad936128b272c705f8f30fb01eb2 (patch)
treecae8d7b373d1eacb097298f022780d75abc6eb6a /xmake/toolchains
parent86eaab2842abf6570895da359ed484805bf759a5 (diff)
improve ifort
Diffstat (limited to 'xmake/toolchains')
-rw-r--r--xmake/toolchains/ifort/check.lua31
-rw-r--r--xmake/toolchains/ifort/load.lua9
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