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