| ... | @@ -226,6 +226,8 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { | ... | @@ -226,6 +226,8 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { |
| 226 | }, | 226 | }, |
| 227 | else => |e| return e, | 227 | else => |e| return e, |
| 228 | }; | 228 | }; |
| | 229 | // Only .def.in files need preprocessing |
| | 230 | const def_needs_preprocessing = mem.endsWith(u8, def_file_path, ".def.in"); |
| 229 | | 231 | |
| 230 | const target = comp.getTarget(); | 232 | const target = comp.getTarget(); |
| 231 | | 233 | |
| ... | @@ -292,22 +294,25 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { | ... | @@ -292,22 +294,25 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { |
| 292 | } | 294 | } |
| 293 | | 295 | |
| 294 | const members = members: { | 296 | const members = members: { |
| 295 | const input = pp: { | 297 | const input = switch (def_needs_preprocessing) { |
| 296 | var aw: Io.Writer.Allocating = .init(gpa); | 298 | true => pp: { |
| 297 | errdefer aw.deinit(); | 299 | var aw: Io.Writer.Allocating = .init(gpa); |
| 298 | | 300 | errdefer aw.deinit(); |
| 299 | var pp_arena = std.heap.ArenaAllocator.init(gpa); | 301 | |
| 300 | defer pp_arena.deinit(); | 302 | var pp_arena = std.heap.ArenaAllocator.init(gpa); |
| 301 | var pp: Preprocessor = .{ | 303 | defer pp_arena.deinit(); |
| 302 | .io = io, | 304 | var pp: Preprocessor = .{ |
| 303 | .arena = pp_arena.allocator(), | 305 | .io = io, |
| 304 | .include_dir = include_dir, | 306 | .arena = pp_arena.allocator(), |
| 305 | .target = target, | 307 | .include_dir = include_dir, |
| 306 | }; | 308 | .target = target, |
| 307 | try pp.preprocess(def_file_path); | 309 | }; |
| 308 | try pp.prettyPrintTokens(&aw.writer); | 310 | try pp.preprocess(def_file_path); |
| 309 | | 311 | try pp.prettyPrintTokens(&aw.writer); |
| 310 | break :pp try aw.toOwnedSliceSentinel(0); | 312 | |
| | 313 | break :pp try aw.toOwnedSliceSentinel(0); |
| | 314 | }, |
| | 315 | false => try Io.Dir.cwd().readFileAllocOptions(io, def_file_path, gpa, .unlimited, .of(u8), 0), |
| 311 | }; | 316 | }; |
| 312 | defer gpa.free(input); | 317 | defer gpa.free(input); |
| 313 | | 318 | |