diff --git a/lib/std/zig/PkgConfig.zig b/lib/std/zig/PkgConfig.zig index c37b1476436f87363132b2f2f567d844759abddc..77a445c051a726fe57470412507e78563eccbd04 100644 --- a/lib/std/zig/PkgConfig.zig +++ b/lib/std/zig/PkgConfig.zig @@ -95,6 +95,7 @@ pub const Parsed = struct { cflags: []const []const u8, libs: []const []const u8, unknown_flags: []const []const u8, + pthread: bool, }; pub const ParseError = Allocator.Error || error{InvalidPkgConfigOutput}; @@ -105,6 +106,7 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed { var zig_libs: std.ArrayList([]const u8) = .empty; var unknown_flags: std.ArrayList([]const u8) = .empty; var arg_it = mem.tokenizeAny(u8, stdout, " \r\n\t"); + var pthread = false; while (arg_it.next()) |arg| { if (mem.eql(u8, arg, "-I")) { @@ -129,6 +131,8 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed { try zig_cflags.append(arena, arg); } else if (mem.cutPrefix(u8, arg, "-Wl,-rpath,")) |rest| { try zig_cflags.appendSlice(arena, &.{ "-rpath", rest }); + } else if (mem.eql(u8, arg, "-pthread")) { + pthread = true; } else { try unknown_flags.append(arena, arg); } @@ -142,5 +146,6 @@ pub fn parse(arena: Allocator, stdout: []const u8) ParseError!Parsed { .cflags = zig_cflags.toOwnedSliceAssert(), .libs = zig_libs.toOwnedSliceAssert(), .unknown_flags = unknown_flags.toOwnedSliceAssert(), + .pthread = pthread, }; }