summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRedbeanw44602 <[email protected]>2024-12-03 13:00:18 +0800
committerRedbeanw44602 <[email protected]>2024-12-03 13:00:43 +0800
commit5130b4080480cc09731d866c29e6d1fd4df7fec2 (patch)
treeea4e2c872a6f2f81709c903b39d3738bc7d2113b
parent5d8c5fa371ca775ff553861b476be19a971ed2b4 (diff)
complete code modification suggestions. #5921
-rw-r--r--xmake/toolchains/zig/xmake.lua49
1 files changed, 24 insertions, 25 deletions
diff --git a/xmake/toolchains/zig/xmake.lua b/xmake/toolchains/zig/xmake.lua
index dfe0c3ba1..49a057105 100644
--- a/xmake/toolchains/zig/xmake.lua
+++ b/xmake/toolchains/zig/xmake.lua
@@ -25,6 +25,21 @@ toolchain("zig")
on_check(function (toolchain)
import("lib.detect.find_tool")
+
+ -- @see https://github.com/xmake-io/xmake/issues/5610
+ function _setup_zigcc_wrapper(zig)
+ for _, tool in ipairs({"cc", "c++", "ar", "ranlib", "objcopy"}) do
+ local wrapper_path = path.join(os.tmpdir(), "zigcc", tool)
+ if not is_host("windows") then
+ io.writefile(wrapper_path, ("#!/bin/bash\nexec \"%s\" %s \"$@\""):format(zig, tool))
+ os.runv("chmod", {"+x", wrapper_path})
+ else
+ io.writefile(wrapper_path .. ".cmd", ("@echo off\n\"%s\" %s %%*"):format(zig, tool))
+ end
+ toolchain:config_set("toolset_" .. tool, wrapper_path)
+ end
+ end
+
local paths = {}
for _, package in ipairs(toolchain:packages()) do
local envs = package:envs()
@@ -42,6 +57,7 @@ toolchain("zig")
end
end
if zig then
+ _setup_zigcc_wrapper(zig)
toolchain:config_set("zig", zig)
toolchain:config_set("zig_version", zig_version)
toolchain:configs_save()
@@ -52,22 +68,6 @@ toolchain("zig")
on_load(function (toolchain)
import("core.base.semver")
- -- @see https://github.com/xmake-io/xmake/issues/5610
- function _generate_zigcc_wrapper(zig)
- local tools = {}
- for _, tool in ipairs { "cc", "c++", "ar", "ranlib", "objcopy" } do
- local wrapper_path = path.join(os.tmpdir(), "zigcc", tool)
- if not os.is_host("windows") then
- io.writefile(wrapper_path, ("#!/bin/bash\nexec \"%s\" %s \"$@\""):format(zig, tool))
- os.runv("chmod", {"+x", wrapper_path})
- else
- io.writefile(wrapper_path .. ".cmd", ("@echo off\n\"%s\" %s %%*"):format(zig, tool))
- end
- tools[tool] = wrapper_path
- end
- return tools
- end
-
-- set toolset
-- we patch target to `zig cc` to fix has_flags. see https://github.com/xmake-io/xmake/issues/955#issuecomment-766929692
local zig = toolchain:config("zig") or "zig"
@@ -75,15 +75,14 @@ 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
- local zig_wrapper = _generate_zigcc_wrapper(zig)
- toolchain:set("toolset", "cc", zig_wrapper["cc"])
- toolchain:set("toolset", "cxx", zig_wrapper["c++"])
- toolchain:set("toolset", "ld", zig_wrapper["c++"])
- toolchain:set("toolset", "sh", zig_wrapper["c++"])
- toolchain:set("toolset", "ar", zig_wrapper["ar"])
- toolchain:set("toolset", "ranlib", zig_wrapper["ranlib"])
- toolchain:set("toolset", "objcopy", zig_wrapper["objcopy"])
- toolchain:set("toolset", "as", zig_wrapper["cc"])
+ 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"))
end
toolchain:set("toolset", "zc", zig)
toolchain:set("toolset", "zcar", zig)