authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-06-02 16:51:07-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-06-02 16:51:07-07:00
logb0f124d46dfd719fc138ab140622f5f6b1aa65f0
tree0aae30de51f1ba7dbe85ad0a2e0c8bf521b20d94
parentf83e200ac04e26beac1f147f9a3bef8c6291de0f

std.zig.PkgConfig: recognize -pthread


1 files changed, 5 insertions(+), 0 deletions(-)

lib/std/zig/PkgConfig.zig+5
......@@ -95,6 +95,7 @@ pub const Parsed = struct {
9595 cflags: []const []const u8,
9696 libs: []const []const u8,
9797 unknown_flags: []const []const u8,
98 pthread: bool,
9899};
99100
100101pub const ParseError = Allocator.Error || error{InvalidPkgConfigOutput};
......@@ -105,6 +106,7 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {
105106 var zig_libs: std.ArrayList([]const u8) = .empty;
106107 var unknown_flags: std.ArrayList([]const u8) = .empty;
107108 var arg_it = mem.tokenizeAny(u8, stdout, " \r\n\t");
109 var pthread = false;
108110
109111 while (arg_it.next()) |arg| {
110112 if (mem.eql(u8, arg, "-I")) {
......@@ -129,6 +131,8 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {
129131 try zig_cflags.append(arena, arg);
130132 } else if (mem.cutPrefix(u8, arg, "-Wl,-rpath,")) |rest| {
131133 try zig_cflags.appendSlice(arena, &.{ "-rpath", rest });
134 } else if (mem.eql(u8, arg, "-pthread")) {
135 pthread = true;
132136 } else {
133137 try unknown_flags.append(arena, arg);
134138 }
......@@ -142,5 +146,6 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {
142146 .cflags = zig_cflags.toOwnedSliceAssert(),
143147 .libs = zig_libs.toOwnedSliceAssert(),
144148 .unknown_flags = unknown_flags.toOwnedSliceAssert(),
149 .pthread = pthread,
145150 };
146151}