summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-10-23 06:45:35 +0800
committerGitHub <[email protected]>2025-10-23 06:45:35 +0800
commit6796d33e9a788313207199ecc441c7e47b579168 (patch)
treebae0affdd7274f68643cb1f97d7c53b6781c2185
parent6b27644dd38664a1a2253faec53c88f0ea9fcf06 (diff)
parentb39232d15a5e105a5abc8318c7fab22ee51e57e9 (diff)
Merge pull request #6959 from Redbeanw44602/fix/zigcc-lld
Fix use zigcc with autotools when dynamic linking.
-rw-r--r--xmake/modules/package/tools/autoconf.lua3
-rw-r--r--xmake/toolchains/zig/xmake.lua25
2 files changed, 18 insertions, 10 deletions
diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua
index 88d9c0ce4..56168fd6b 100644
--- a/xmake/modules/package/tools/autoconf.lua
+++ b/xmake/modules/package/tools/autoconf.lua
@@ -458,6 +458,9 @@ function buildenvs(package, opt)
end
end
end
+ if ld and package:has_tool("ld", "zig_cc") then
+ envs.LD = package:build_getenv("ld.lld")
+ end
-- we need use clang++ as cxx, autoconf will use it as linker
-- https://github.com/xmake-io/xmake/issues/2170
local cxx = envs.CXX
diff --git a/xmake/toolchains/zig/xmake.lua b/xmake/toolchains/zig/xmake.lua
index 2b3abf57b..e9d099782 100644
--- a/xmake/toolchains/zig/xmake.lua
+++ b/xmake/toolchains/zig/xmake.lua
@@ -30,7 +30,7 @@ toolchain("zig")
-- @see https://github.com/xmake-io/xmake/issues/5610
function _setup_zigcc_wrapper(zig)
local script_suffix = is_host("windows") and ".cmd" or ""
- for _, tool in ipairs({"cc", "c++", "ar", "ranlib", "objcopy", "dlltool"}) do
+ for _, tool in ipairs({"cc", "c++", "ar", "ranlib", "lib", "ld.lld", "lld-link", "wasm-ld", "objcopy", "dlltool", "rc"}) do
local wrapper_path = path.join(os.tmpdir(), "zigcc", tool) .. script_suffix
if not os.isfile(wrapper_path) then
if is_host("windows") then
@@ -86,15 +86,20 @@ toolchain("zig")
if toolchain:config("zigcc") ~= false then
-- we can use `set_toolchains("zig", {zigcc = false})` to disable zigcc
-- @see https://github.com/xmake-io/xmake/issues/3251
- toolchain:set("toolset", "cc", toolchain:config("toolset_cc"))
- toolchain:set("toolset", "cxx", toolchain:config("toolset_c++"))
- toolchain:set("toolset", "ld", toolchain:config("toolset_c++"))
- toolchain:set("toolset", "sh", toolchain:config("toolset_c++"))
- toolchain:set("toolset", "ar", toolchain:config("toolset_ar"))
- toolchain:set("toolset", "ranlib", toolchain:config("toolset_ranlib"))
- toolchain:set("toolset", "objcopy", toolchain:config("toolset_objcopy"))
- toolchain:set("toolset", "as", toolchain:config("toolset_cc"))
- toolchain:set("toolset", "dlltool", toolchain:config("toolset_dlltool"))
+ toolchain:set("toolset", "cc", toolchain:config("toolset_cc"))
+ toolchain:set("toolset", "cxx", toolchain:config("toolset_c++"))
+ toolchain:set("toolset", "ld", toolchain:config("toolset_c++"))
+ toolchain:set("toolset", "sh", toolchain:config("toolset_c++"))
+ toolchain:set("toolset", "ar", toolchain:config("toolset_ar"))
+ toolchain:set("toolset", "ranlib", toolchain:config("toolset_ranlib"))
+ toolchain:set("toolset", "lib", toolchain:config("toolset_lib"))
+ toolchain:set("toolset", "ld.lld", toolchain:config("toolset_ld.lld"))
+ toolchain:set("toolset", "lld-link", toolchain:config("toolset_lld-link"))
+ toolchain:set("toolset", "wasm-ld", toolchain:config("toolset_wasm-ld"))
+ toolchain:set("toolset", "objcopy", toolchain:config("toolset_objcopy"))
+ toolchain:set("toolset", "as", toolchain:config("toolset_cc"))
+ toolchain:set("toolset", "dlltool", toolchain:config("toolset_dlltool"))
+ toolchain:set("toolset", "mrc", toolchain:config("toolset_rc"))
end
toolchain:set("toolset", "zc", zig)
toolchain:set("toolset", "zcar", zig)