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 {...@@ -95,6 +95,7 @@ pub const Parsed = struct {
95 cflags: []const []const u8,95 cflags: []const []const u8,
96 libs: []const []const u8,96 libs: []const []const u8,
97 unknown_flags: []const []const u8,97 unknown_flags: []const []const u8,
98 pthread: bool,
98};99};
99100
100pub const ParseError = Allocator.Error || error{InvalidPkgConfigOutput};101pub const ParseError = Allocator.Error || error{InvalidPkgConfigOutput};
...@@ -105,6 +106,7 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {...@@ -105,6 +106,7 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {
105 var zig_libs: std.ArrayList([]const u8) = .empty;106 var zig_libs: std.ArrayList([]const u8) = .empty;
106 var unknown_flags: std.ArrayList([]const u8) = .empty;107 var unknown_flags: std.ArrayList([]const u8) = .empty;
107 var arg_it = mem.tokenizeAny(u8, stdout, " \r\n\t");108 var arg_it = mem.tokenizeAny(u8, stdout, " \r\n\t");
109 var pthread = false;
108110
109 while (arg_it.next()) |arg| {111 while (arg_it.next()) |arg| {
110 if (mem.eql(u8, arg, "-I")) {112 if (mem.eql(u8, arg, "-I")) {
...@@ -129,6 +131,8 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {...@@ -129,6 +131,8 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {
129 try zig_cflags.append(arena, arg);131 try zig_cflags.append(arena, arg);
130 } else if (mem.cutPrefix(u8, arg, "-Wl,-rpath,")) |rest| {132 } else if (mem.cutPrefix(u8, arg, "-Wl,-rpath,")) |rest| {
131 try zig_cflags.appendSlice(arena, &.{ "-rpath", rest });133 try zig_cflags.appendSlice(arena, &.{ "-rpath", rest });
134 } else if (mem.eql(u8, arg, "-pthread")) {
135 pthread = true;
132 } else {136 } else {
133 try unknown_flags.append(arena, arg);137 try unknown_flags.append(arena, arg);
134 }138 }
...@@ -142,5 +146,6 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {...@@ -142,5 +146,6 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed {
142 .cflags = zig_cflags.toOwnedSliceAssert(),146 .cflags = zig_cflags.toOwnedSliceAssert(),
143 .libs = zig_libs.toOwnedSliceAssert(),147 .libs = zig_libs.toOwnedSliceAssert(),
144 .unknown_flags = unknown_flags.toOwnedSliceAssert(),148 .unknown_flags = unknown_flags.toOwnedSliceAssert(),
149 .pthread = pthread,
145 };150 };
146}151}