summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstar9029 <[email protected]>2025-02-24 14:41:50 +0800
committerstar9029 <[email protected]>2025-02-24 14:41:50 +0800
commitdc7a9621629cf94652338fd1f15d9cab412412bb (patch)
tree86325c8cad9f152263aaa02df513a3438ebbc844
parent984fb1d67fe06fe71940bf7bb8dd92b12df486e2 (diff)
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, 9 insertions, 0 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 5b2a91be8..7abd5105a 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -2389,6 +2389,8 @@ function _instance:_generate_lto_configs(sourcekind)
local cflag = sourcekind == "cxx" and "cxxflags" or "cflags"
if cc == "cl" then
configs[cflag] = "-GL"
+ elseif cc == "clang_cl" then
+ configs[cflag] = "/clang:-flto=thin"
elseif cc == "clang" or cc == "clangxx" then
configs[cflag] = "-flto=thin"
elseif cc == "gcc" or cc == "gxx" then
diff --git a/xmake/rules/c++/build_optimization/config.lua b/xmake/rules/c++/build_optimization/config.lua
index 357c3cf76..72b82a63a 100644
--- a/xmake/rules/c++/build_optimization/config.lua
+++ b/xmake/rules/c++/build_optimization/config.lua
@@ -30,6 +30,8 @@ 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_cl" then
+ target:add(cflag, "/clang:-flto=thin")
elseif cc == "clang" or cc == "clangxx" then
target:add(cflag, "-flto=thin")
elseif cc == "gcc" or cc == "gxx" then
@@ -57,6 +59,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)