aboutsummaryrefslogtreecommitdiff
path: root/lib/std/build.zig
diff options
context:
space:
mode:
authorfrmdstryr <frmdstryr@protonmail.com>2020-01-31 13:02:12 -0500
committerAndrew Kelley <andrew@ziglang.org>2020-02-02 15:21:27 -0500
commit32291ab70249c874e6941292de8611e619c838e5 (patch)
treed31c96bbd686f91ebfc79869e2b2381aaed8aa5e /lib/std/build.zig
parent4f2652d504c796bbba6d7ccf6a699dc01055e3e7 (diff)
downloadzig-32291ab70249c874e6941292de8611e619c838e5.tar.gz
zig-32291ab70249c874e6941292de8611e619c838e5.zip
Add support for dependent packages when using build.zig
Diffstat (limited to 'lib/std/build.zig')
-rw-r--r--lib/std/build.zig25
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| {