diff options
| author | Redbeanw44602 <[email protected]> | 2025-10-23 00:03:23 +0800 |
|---|---|---|
| committer | Redbeanw44602 <[email protected]> | 2025-10-23 00:03:23 +0800 |
| commit | 2ba8e26923f257f3859ac32fdc144e0193fd723f (patch) | |
| tree | 234749323a41722518b81c60d067fcac83deca71 | |
| parent | 6b27644dd38664a1a2253faec53c88f0ea9fcf06 (diff) | |
fix use zigcc-lld with autotools.
| -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..c5c7d56c4 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", "rc", toolchain:config("toolset_rc")) end toolchain:set("toolset", "zc", zig) toolchain:set("toolset", "zcar", zig) |
