| ... | @@ -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 | }; |
| 99 | | 100 | |
| 100 | pub const ParseError = Allocator.Error || error{InvalidPkgConfigOutput}; | 101 | pub 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; |
| 108 | | 110 | |
| 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 | } |