From 88315d01914758e90d95174217fd8b8126ac6e39 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Wed, 19 Jan 2022 02:17:21 -0800 Subject: [PATCH] final fix for vcpkg support --- docs/zig.mod.md | 5 +++++ src/cmd/fetch.zig | 2 +- src/common.zig | 3 +++ src/util/modfile.zig | 2 ++ src/util/module.zig | 12 ++---------- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/docs/zig.mod.md b/docs/zig.mod.md index bcb394301260df17114a86d2522047a29457c8ac..006251fa0d26b9dbfd2a126a36a18258ba6e689b 100644 --- a/docs/zig.mod.md +++ b/docs/zig.mod.md @@ -54,6 +54,11 @@ Similar to `dependencies` but will only get added to the project if the current - Type: `string` Parsed as a `std.SemanticVersion`, this attribute refers to the minimum compatible Zig version for this package/application and will cause `zig build` to panic if violated. +#### `vcpkg` +- Type: `bool` +- Example: `true`|any +This attribute is a flag to call `try exe.addVcpkgPaths(.static);` when on Windows. Likely used in conjunction with adding system libraries/C code. `true` is the only value that will enable this flag. + ---- ### Dep Object diff --git a/src/cmd/fetch.zig b/src/cmd/fetch.zig index f6088442986010f0d4646e12e5b938260f0d73a2..ee856ac2ba1a73a50f5670a3857f45156201a26a 100644 --- a/src/cmd/fetch.zig +++ b/src/cmd/fetch.zig @@ -331,7 +331,7 @@ fn print_pkg_data_to(w: std.fs.File.Writer, notdone: *std.ArrayList(zigmod.Modul } try w.writeAll(" },\n"); } - if (mod.has_vcpkg_deps()) { + if (mod.vcpkg) { try w.writeAll(" .vcpkg = true,\n"); } try w.writeAll(" };\n"); diff --git a/src/common.zig b/src/common.zig index 55587df1dabae2aa8d05777ec75fb99e5db71965..476f542b8a27738ef514a3ac5276c1bd2edfe34e 100644 --- a/src/common.zig +++ b/src/common.zig @@ -60,6 +60,7 @@ pub fn collect_deps_deep(cachepath: string, mdir: std.fs.Dir, options: *CollectO .yaml = m.yaml, .dep = null, .min_zig_version = m.min_zig_version, + .vcpkg = m.vcpkg, }; } @@ -91,6 +92,7 @@ pub fn collect_deps(cachepath: string, mdir: std.fs.Dir, options: *CollectOption .yaml = m.yaml, .dep = null, .min_zig_version = m.min_zig_version, + .vcpkg = m.vcpkg, }; } @@ -242,6 +244,7 @@ pub fn get_module_from_dep(d: *zigmod.Dep, cachepath: string, options: *CollectO .dep = d.*, .for_build = d.for_build, .min_zig_version = null, + .vcpkg = false, }; }, else => { diff --git a/src/util/modfile.zig b/src/util/modfile.zig index 6a35f8e21fe3e7f8c8e1c030a7f1749c76493915..aaf0b09258e9b6748ba4f4760d5b3a77cd470dcd 100644 --- a/src/util/modfile.zig +++ b/src/util/modfile.zig @@ -28,6 +28,7 @@ pub const ModFile = struct { rootdeps: []zigmod.Dep, builddeps: []zigmod.Dep, min_zig_version: ?std.SemanticVersion, + vcpkg: bool, pub fn init(alloc: std.mem.Allocator, mpath: string) !Self { const file = try std.fs.cwd().openFile(mpath, .{}); @@ -68,6 +69,7 @@ pub const ModFile = struct { .rootdeps = try dep_list_by_name(alloc, mapping, &.{ "dev_dependencies", "root_dependencies" }, false), .builddeps = try dep_list_by_name(alloc, mapping, &.{ "dev_dependencies", "build_dependencies" }, true), .min_zig_version = std.SemanticVersion.parse(mapping.get_string("min_zig_version")) catch null, + .vcpkg = std.mem.eql(u8, "true", mapping.get_string("vcpkg")), }; } diff --git a/src/util/module.zig b/src/util/module.zig index d0030be655c4cba2f58268bfc2574efa19d3a846..c051a3967fb4da2ddad6f96c58d57beabfd43357 100644 --- a/src/util/module.zig +++ b/src/util/module.zig @@ -27,6 +27,7 @@ pub const Module = struct { dep: ?zigmod.Dep, for_build: bool = false, min_zig_version: ?std.SemanticVersion, + vcpkg: bool, pub fn from(alloc: std.mem.Allocator, dep: zigmod.Dep, modpath: string, options: *common.CollectOptions) !Module { var moddeps = std.ArrayList(Module).init(alloc); @@ -54,6 +55,7 @@ pub const Module = struct { .dep = dep, .for_build = dep.for_build, .min_zig_version = null, + .vcpkg = dep.vcpkg, }; } @@ -123,16 +125,6 @@ pub const Module = struct { return false; } - pub fn has_vcpkg_deps(self: Module) bool { - for (self.deps) |d| { - const dd = d.dep orelse continue; - if (dd.vcpkg) { - return true; - } - } - return false; - } - pub fn short_id(self: Module) string { return u.slice(u8, self.id, 0, 12); } -- 2.54.0