Commit a9eab69b58

Andrew Kelley <andrew@ziglang.org>
2018-12-01 07:21:59
zig build: addStaticExecutable
1 parent 823969a
Changed files (1)
std/build.zig
@@ -150,7 +150,11 @@ pub const Builder = struct {
     }
 
     pub fn addExecutable(self: *Builder, name: []const u8, root_src: ?[]const u8) *LibExeObjStep {
-        return LibExeObjStep.createExecutable(self, name, root_src);
+        return LibExeObjStep.createExecutable(self, name, root_src, false);
+    }
+
+    pub fn addStaticExecutable(self: *Builder, name: []const u8, root_src: ?[]const u8) *LibExeObjStep {
+        return LibExeObjStep.createExecutable(self, name, root_src, true);
     }
 
     pub fn addObject(self: *Builder, name: []const u8, root_src: []const u8) *LibExeObjStep {
@@ -891,8 +895,8 @@ pub const LibExeObjStep = struct {
         return self;
     }
 
-    pub fn createExecutable(builder: *Builder, name: []const u8, root_src: ?[]const u8) *LibExeObjStep {
-        const self = builder.allocator.create(initExtraArgs(builder, name, root_src, Kind.Exe, false, builder.version(0, 0, 0))) catch unreachable;
+    pub fn createExecutable(builder: *Builder, name: []const u8, root_src: ?[]const u8, static: bool) *LibExeObjStep {
+        const self = builder.allocator.create(initExtraArgs(builder, name, root_src, Kind.Exe, static, builder.version(0, 0, 0))) catch unreachable;
         return self;
     }
 
@@ -1270,6 +1274,9 @@ pub const LibExeObjStep = struct {
             zig_args.append("--ver-patch") catch unreachable;
             zig_args.append(builder.fmt("{}", self.version.patch)) catch unreachable;
         }
+        if (self.kind == Kind.Exe and self.static) {
+            zig_args.append("--static") catch unreachable;
+        }
 
         switch (self.target) {
             Target.Native => {},