| ... | ... | @@ -52,7 +52,7 @@ pub fn create_depszig(alloc: std.mem.Allocator, cachepath: string, dir: std.fs.D |
| 52 | 52 | \\ const b = exe.builder; |
| 53 | 53 | \\ @setEvalBranchQuota(1_000_000); |
| 54 | 54 | \\ for (packages) |pkg| { |
| 55 | | \\ const moddep = pkg.pkg.?.zp(exe.builder); |
| 55 | \\ const moddep = pkg.zp(b); |
| 56 | 56 | \\ exe.addModule(moddep.name, moddep.module); |
| 57 | 57 | \\ } |
| 58 | 58 | \\ var llc = false; |
| ... | ... | @@ -91,28 +91,35 @@ pub fn create_depszig(alloc: std.mem.Allocator, cachepath: string, dir: std.fs.D |
| 91 | 91 | \\ system_libs: []const string = &.{}, |
| 92 | 92 | \\ frameworks: []const string = &.{}, |
| 93 | 93 | \\ vcpkg: bool = false, |
| 94 | | \\}; |
| 95 | | \\ |
| 96 | | \\pub const Pkg = struct { |
| 97 | | \\ name: string, |
| 98 | | \\ source: std.build.FileSource, |
| 99 | | \\ dependencies: []const Pkg, |
| 94 | \\ module: ?ModuleDependency = null, |
| 100 | 95 | \\ |
| 101 | | \\ pub fn zp(self: *const Pkg, b: *std.build.Builder) ModuleDependency { |
| 96 | \\ pub fn zp(self: *Package, b: *std.build.Builder) ModuleDependency { |
| 102 | 97 | \\ var temp: [100]ModuleDependency = undefined; |
| 103 | | \\ for (self.dependencies) |item, i| { |
| 98 | \\ const pkg = self.pkg.?; |
| 99 | \\ for (pkg.dependencies, 0..) |item, i| { |
| 104 | 100 | \\ temp[i] = item.zp(b); |
| 105 | 101 | \\ } |
| 106 | | \\ return .{ |
| 107 | | \\ .name = self.name, |
| 102 | \\ if (self.module) |mod| { |
| 103 | \\ return mod; |
| 104 | \\ } |
| 105 | \\ const result = ModuleDependency{ |
| 106 | \\ .name = pkg.name, |
| 108 | 107 | \\ .module = b.createModule(.{ |
| 109 | | \\ .source_file = self.source, |
| 110 | | \\ .dependencies = b.allocator.dupe(ModuleDependency, temp[0..self.dependencies.len]) catch @panic("oom"), |
| 108 | \\ .source_file = pkg.source, |
| 109 | \\ .dependencies = b.allocator.dupe(ModuleDependency, temp[0..pkg.dependencies.len]) catch @panic("oom"), |
| 111 | 110 | \\ }), |
| 112 | 111 | \\ }; |
| 112 | \\ self.module = result; |
| 113 | \\ return result; |
| 113 | 114 | \\ } |
| 114 | 115 | \\}; |
| 115 | 116 | \\ |
| 117 | \\pub const Pkg = struct { |
| 118 | \\ name: string, |
| 119 | \\ source: std.build.FileSource, |
| 120 | \\ dependencies: []const *Package, |
| 121 | \\}; |
| 122 | \\ |
| 116 | 123 | \\ |
| 117 | 124 | ); |
| 118 | 125 | |
| ... | ... | @@ -277,7 +284,7 @@ fn print_dirs(w: std.fs.File.Writer, list: []const zigmod.Module) !void { |
| 277 | 284 | } |
| 278 | 285 | |
| 279 | 286 | fn print_deps(w: std.fs.File.Writer, m: zigmod.Module) !void { |
| 280 | | try w.writeAll("&[_]Package{\n"); |
| 287 | try w.writeAll("&[_]*Package{\n"); |
| 281 | 288 | for (m.deps) |d| { |
| 282 | 289 | if (d.main.len == 0) { |
| 283 | 290 | continue; |
| ... | ... | @@ -285,7 +292,7 @@ fn print_deps(w: std.fs.File.Writer, m: zigmod.Module) !void { |
| 285 | 292 | if (d.for_build) { |
| 286 | 293 | continue; |
| 287 | 294 | } |
| 288 | | try w.print(" package_data._{s},\n", .{d.id[0..12]}); |
| 295 | try w.print(" &package_data._{s},\n", .{d.id[0..12]}); |
| 289 | 296 | } |
| 290 | 297 | try w.writeAll("}"); |
| 291 | 298 | } |
| ... | ... | @@ -293,10 +300,10 @@ fn print_deps(w: std.fs.File.Writer, m: zigmod.Module) !void { |
| 293 | 300 | fn print_pkg_data_to(w: std.fs.File.Writer, notdone: *std.ArrayList(zigmod.Module), done: *std.ArrayList(zigmod.Module)) !void { |
| 294 | 301 | var len: usize = notdone.items.len; |
| 295 | 302 | while (notdone.items.len > 0) { |
| 296 | | for (notdone.items) |mod, i| { |
| 303 | for (notdone.items, 0..) |mod, i| { |
| 297 | 304 | if (contains_all(mod.deps, done.items)) { |
| 298 | 305 | try w.print( |
| 299 | | \\ pub const _{s} = Package{{ |
| 306 | \\ pub var _{s} = Package{{ |
| 300 | 307 | \\ .directory = dirs._{s}, |
| 301 | 308 | \\ |
| 302 | 309 | , .{ |
| ... | ... | @@ -317,7 +324,7 @@ fn print_pkg_data_to(w: std.fs.File.Writer, notdone: *std.ArrayList(zigmod.Modul |
| 317 | 324 | try w.writeAll(" &.{"); |
| 318 | 325 | for (mod.deps, 0..) |moddep, j| { |
| 319 | 326 | if (moddep.main.len == 0) continue; |
| 320 | | try w.print(" _{s}.pkg.?", .{moddep.id[0..12]}); |
| 327 | try w.print(" &_{s}", .{moddep.id[0..12]}); |
| 321 | 328 | if (j != mod.deps.len - 1) try w.writeAll(","); |
| 322 | 329 | } |
| 323 | 330 | try w.writeAll(" } },\n"); |
| ... | ... | @@ -402,7 +409,7 @@ fn print_pkgs(alloc: std.mem.Allocator, w: std.fs.File.Writer, m: zigmod.Module) |
| 402 | 409 | continue; |
| 403 | 410 | } |
| 404 | 411 | const ident = try zig_name_from_pkg_name(alloc, d.name); |
| 405 | | try w.print(" pub const {s} = package_data._{s};\n", .{ ident, d.id[0..12] }); |
| 412 | try w.print(" pub const {s} = &package_data._{s};\n", .{ ident, d.id[0..12] }); |
| 406 | 413 | } |
| 407 | 414 | try w.writeAll("}"); |
| 408 | 415 | } |