diff options
Diffstat (limited to 'xmake/toolchains/ifort/load.lua')
| -rw-r--r-- | xmake/toolchains/ifort/load.lua | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/xmake/toolchains/ifort/load.lua b/xmake/toolchains/ifort/load.lua index 2cb212a57..d0333ea77 100644 --- a/xmake/toolchains/ifort/load.lua +++ b/xmake/toolchains/ifort/load.lua @@ -21,6 +21,31 @@ -- imports import("core.base.option") import("core.project.config") +import("detect.sdks.find_vstudio") + +-- add the given vs environment +function _add_vsenv(toolchain, name, curenvs) + + -- get vcvars + local vcvars = toolchain:config("vcvars") + if not vcvars then + return + end + + -- get the paths for the vs environment + local new = vcvars[name] + if new then + -- fix case naming conflict for cmake/msbuild between the new msvc envs and current environment, if we are running xmake in vs prompt. + -- @see https://github.com/xmake-io/xmake/issues/4751 + for k, c in pairs(curenvs) do + if name:lower() == k:lower() and name ~= k then + name = k + break + end + end + toolchain:add("runenvs", name, table.unwrap(path.splitenv(new))) + end +end -- add the given ifort environment function _add_ifortenv(toolchain, name) @@ -62,6 +87,18 @@ function _load_intel_on_windows(toolchain) _add_ifortenv(toolchain, "LIB") _add_ifortenv(toolchain, "INCLUDE") _add_ifortenv(toolchain, "LIBPATH") + + -- add vs environments + local expect_vars = {"PATH", "LIB", "INCLUDE", "LIBPATH"} + local curenvs = os.getenvs() + for _, name in ipairs(expect_vars) do + _add_vsenv(toolchain, name, curenvs) + end + for _, name in ipairs(find_vstudio.get_vcvars()) do + if not table.contains(expect_vars, name:upper()) then + _add_vsenv(toolchain, name, curenvs) + end + end end -- load intel on linux |
