diff options
| author | frmdstryr <frmdstryr@protonmail.com> | 2020-01-31 13:02:12 -0500 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-02-02 15:21:27 -0500 |
| commit | 32291ab70249c874e6941292de8611e619c838e5 (patch) | |
| tree | d31c96bbd686f91ebfc79869e2b2381aaed8aa5e /lib | |
| parent | 4f2652d504c796bbba6d7ccf6a699dc01055e3e7 (diff) | |
| download | zig-32291ab70249c874e6941292de8611e619c838e5.tar.gz zig-32291ab70249c874e6941292de8611e619c838e5.zip | |
Add support for dependent packages when using build.zig
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/std/build.zig | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/std/build.zig b/lib/std/build.zig index 4537d5dd07..66660fc74c 100644 --- a/lib/std/build.zig +++ b/lib/std/build.zig @@ -1075,9 +1075,10 @@ pub const CrossTarget = std.Target.Cross; /// Deprecated. Use `std.Target`. pub const Target = std.Target; -const Pkg = struct { +pub const Pkg = struct { name: []const u8, path: []const u8, + dependencies: ?[]Pkg = null, }; const CSourceFile = struct { @@ -1742,6 +1743,10 @@ pub const LibExeObjStep = struct { self.framework_dirs.append(self.builder.dupe(dir_path)) catch unreachable; } + pub fn addPackage(self: *LibExeObjStep, package: Pkg) void { + self.packages.append(package) catch unreachable; + } + pub fn addPackagePath(self: *LibExeObjStep, name: []const u8, pkg_index_path: []const u8) void { self.packages.append(Pkg{ .name = self.builder.dupe(name), @@ -2091,10 +2096,20 @@ pub const LibExeObjStep = struct { }, } for (self.packages.toSliceConst()) |pkg| { - zig_args.append("--pkg-begin") catch unreachable; - zig_args.append(pkg.name) catch unreachable; - zig_args.append(builder.pathFromRoot(pkg.path)) catch unreachable; - zig_args.append("--pkg-end") catch unreachable; + try zig_args.append("--pkg-begin"); + try zig_args.append(pkg.name); + try zig_args.append(builder.pathFromRoot(pkg.path)); + + if (pkg.dependencies) |dependencies| { + for (dependencies) |sub_pkg| { + try zig_args.append("--pkg-begin"); + try zig_args.append(sub_pkg.name); + try zig_args.append(builder.pathFromRoot(sub_pkg.path)); + try zig_args.append("--pkg-end"); + } + } + + try zig_args.append("--pkg-end"); } for (self.include_dirs.toSliceConst()) |include_dir| { |
