summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-07-12 18:59:02 +0800
committerruki <[email protected]>2020-07-12 18:59:02 +0800
commita29aa00049808194d9c1ae41d7bcc0575b16c7bc (patch)
treea07c3aa760d897a2b0895ff24a291ee3f6758056
parentc93f12ad36c4b19683fb9aefae2dd6bae8db02b7 (diff)
improve zig build
-rw-r--r--tests/projects/zig/console/src/test.zig6
-rw-r--r--xmake/modules/core/tools/zig.lua6
-rw-r--r--xmake/modules/detect/tools/find_zig.lua14
3 files changed, 23 insertions, 3 deletions
diff --git a/tests/projects/zig/console/src/test.zig b/tests/projects/zig/console/src/test.zig
new file mode 100644
index 000000000..84804603e
--- /dev/null
+++ b/tests/projects/zig/console/src/test.zig
@@ -0,0 +1,6 @@
+const std = @import("std");
+
+pub fn hello() !void {
+ const stdout = std.io.getStdOut().outStream();
+ try stdout.print("Hello, {}!\n", .{"world"});
+}
diff --git a/xmake/modules/core/tools/zig.lua b/xmake/modules/core/tools/zig.lua
index 6e6969dbb..f3e3d5b06 100644
--- a/xmake/modules/core/tools/zig.lua
+++ b/xmake/modules/core/tools/zig.lua
@@ -112,7 +112,11 @@ function linkargv(self, objectfiles, targetkind, targetfile, flags)
raise("unknown target kind(%s)!", targetkind)
end
local name = targetkind == "binary" and path.basename(targetfile) or target.linkname(path.filename(targetfile))
- table.join2(argv, flags, "--output-dir", path.directory(targetfile), "--name", name, "--object", objectfiles)
+ table.join2(argv, flags, "--output-dir", path.directory(targetfile), "--name", name)
+ for _, objectfile in ipairs(objectfiles) do
+ table.insert(argv, "--object")
+ table.insert(argv, objectfile)
+ end
return self:program(), argv
end
diff --git a/xmake/modules/detect/tools/find_zig.lua b/xmake/modules/detect/tools/find_zig.lua
index 8fd53eff8..35f7c18dc 100644
--- a/xmake/modules/detect/tools/find_zig.lua
+++ b/xmake/modules/detect/tools/find_zig.lua
@@ -38,8 +38,18 @@ function main(opt)
-- init options
opt = opt or {}
- opt.check = opt.check or "--help"
+ opt.check = opt.check or "version"
+ opt.command = opt.command or "version"
-- find program
- return find_program(opt.program or "zig", opt)
+ local program = find_program(opt.program or "zig", opt)
+
+ -- find program version
+ local version = nil
+ if program and opt and opt.version then
+ version = find_programver(program, opt)
+ end
+
+ -- ok?
+ return program, version
end