diff options
| author | ruki <[email protected]> | 2025-10-23 06:45:35 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-10-23 06:45:35 +0800 |
| commit | 6796d33e9a788313207199ecc441c7e47b579168 (patch) | |
| tree | bae0affdd7274f68643cb1f97d7c53b6781c2185 | |
| parent | 6b27644dd38664a1a2253faec53c88f0ea9fcf06 (diff) | |
| parent | b39232d15a5e105a5abc8318c7fab22ee51e57e9 (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.lua | 3 | ||||
| -rw-r--r-- | xmake/toolchains/zig/xmake.lua | 25 |
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) |
