summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-02-24 23:11:35 +0800
committerGitHub <[email protected]>2025-02-24 23:11:35 +0800
commit8ebd43d4cea3fc9e9d559e5d3069c08f20c2981c (patch)
tree82074ca007634aeaf9ab7040dc5b874d40c378df
parent984fb1d67fe06fe71940bf7bb8dd92b12df486e2 (diff)
parentd4b5d636be7d4bb033313cf98699431ff0969af2 (diff)
Merge pull request #6167 from star-hengxing/clang-cl
Fix clang-cl toolchain with lto
-rw-r--r--xmake/core/package/package.lua2
-rw-r--r--xmake/rules/c++/build_optimization/config.lua7
2 files changed, 7 insertions, 2 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 5b2a91be8..d6eae8a1b 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -2389,7 +2389,7 @@ function _instance:_generate_lto_configs(sourcekind)
local cflag = sourcekind == "cxx" and "cxxflags" or "cflags"
if cc == "cl" then
configs[cflag] = "-GL"
- elseif cc == "clang" or cc == "clangxx" then
+ elseif cc == "clang" or cc == "clangxx" or cc == "clang_cl" then
configs[cflag] = "-flto=thin"
elseif cc == "gcc" or cc == "gxx" then
configs[cflag] = "-flto"
diff --git a/xmake/rules/c++/build_optimization/config.lua b/xmake/rules/c++/build_optimization/config.lua
index 357c3cf76..4324bcf76 100644
--- a/xmake/rules/c++/build_optimization/config.lua
+++ b/xmake/rules/c++/build_optimization/config.lua
@@ -30,7 +30,7 @@ function _add_lto_optimization(target, sourcekind)
local cflag = sourcekind == "cxx" and "cxxflags" or "cflags"
if cc == "cl" then
target:add(cflag, "-GL")
- elseif cc == "clang" or cc == "clangxx" then
+ elseif cc == "clang" or cc == "clangxx" or cc == "clang_cl" then
target:add(cflag, "-flto=thin")
elseif cc == "gcc" or cc == "gxx" then
target:add(cflag, "-flto")
@@ -57,6 +57,11 @@ function _add_lto_optimization(target, sourcekind)
target:add("shflags", optimize_flags)
end
end
+
+ if cc == "clang_cl" and ld == "link" then
+ wprint([[clang-cl + msvc link unsupported lto, please use `set_toolset("ld", "lld-link")`]])
+ target:set("toolset", "ld", "lld-link")
+ end
end
function main(target, sourcekind)