summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2026-05-07 16:02:10 +0800
committerGitHub <[email protected]>2026-05-07 16:02:10 +0800
commit8e6ff95b036843f957a144526c5f348043b3873c (patch)
treea39a125520a0bca9f0eb21aa9a51351984e82e32
parentd76ec6af28e29921a986662f1d823a3a3a372f4b (diff)
parentcab62b5127ab2e8802311a716897f2950196c8cc (diff)
Merge pull request #7524 from xmake-io/clangcl
add lld-link config
-rw-r--r--xmake/toolchains/clang-cl/load.lua22
1 files changed, 17 insertions, 5 deletions
diff --git a/xmake/toolchains/clang-cl/load.lua b/xmake/toolchains/clang-cl/load.lua
index e06883012..75ba5af6e 100644
--- a/xmake/toolchains/clang-cl/load.lua
+++ b/xmake/toolchains/clang-cl/load.lua
@@ -28,16 +28,28 @@ import("private.utils.toolchain", {alias = "toolchain_utils"})
function main(toolchain)
-- set toolset
+ -- we can use `clang-cl[llvm]` to switch to llvm tools.
+ local use_llvm = toolchain:config("llvm")
toolchain:set("toolset", "cc", "clang-cl")
toolchain:set("toolset", "cxx", "clang-cl")
- toolchain:set("toolset", "mrc", "rc.exe")
toolchain:set("toolset", "dlltool", "llvm-dlltool")
- if toolchain:is_arch("x64") then
- toolchain:set("toolset", "as", "ml64.exe")
+ if use_llvm then
+ toolchain:set("toolset", "mrc", "llvm-rc.exe")
+ if toolchain:is_arch("x64") then
+ toolchain:set("toolset", "as", "llvm-ml64.exe")
+ else
+ toolchain:set("toolset", "as", "llvm-ml.exe")
+ end
else
- toolchain:set("toolset", "as", "ml.exe")
+ toolchain:set("toolset", "mrc", "rc.exe")
+ if toolchain:is_arch("x64") then
+ toolchain:set("toolset", "as", "ml64.exe")
+ else
+ toolchain:set("toolset", "as", "ml.exe")
+ end
end
- if project.policy("build.optimization.lto") then
+
+ if use_llvm or project.policy("build.optimization.lto") then
toolchain:set("toolset", "ld", "lld-link")
toolchain:set("toolset", "sh", "lld-link")
toolchain:set("toolset", "ar", "llvm-ar")