| ... | ... | @@ -284,6 +284,7 @@ const Code = struct { |
| 284 | 284 | link_objects: []const []const u8, |
| 285 | 285 | target_str: ?[]const u8, |
| 286 | 286 | link_libc: bool, |
| 287 | link_mode: ?std.builtin.LinkMode, |
| 287 | 288 | disable_cache: bool, |
| 288 | 289 | |
| 289 | 290 | const Id = union(enum) { |
| ... | ... | @@ -533,6 +534,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { |
| 533 | 534 | defer link_objects.deinit(); |
| 534 | 535 | var target_str: ?[]const u8 = null; |
| 535 | 536 | var link_libc = false; |
| 537 | var link_mode: ?std.builtin.LinkMode = null; |
| 536 | 538 | var disable_cache = false; |
| 537 | 539 | |
| 538 | 540 | const source_token = while (true) { |
| ... | ... | @@ -562,6 +564,8 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { |
| 562 | 564 | target_str = "wasm32-wasi"; |
| 563 | 565 | } else if (mem.eql(u8, end_tag_name, "link_libc")) { |
| 564 | 566 | link_libc = true; |
| 567 | } else if (mem.eql(u8, end_tag_name, "link_mode_dynamic")) { |
| 568 | link_mode = .Dynamic; |
| 565 | 569 | } else if (mem.eql(u8, end_tag_name, "code_end")) { |
| 566 | 570 | _ = try eatToken(tokenizer, Token.Id.BracketClose); |
| 567 | 571 | break content_tok; |
| ... | ... | @@ -585,6 +589,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { |
| 585 | 589 | .link_objects = link_objects.toOwnedSlice(), |
| 586 | 590 | .target_str = target_str, |
| 587 | 591 | .link_libc = link_libc, |
| 592 | .link_mode = link_mode, |
| 588 | 593 | .disable_cache = disable_cache, |
| 589 | 594 | }, |
| 590 | 595 | }); |
| ... | ... | @@ -1468,6 +1473,18 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any |
| 1468 | 1473 | try test_args.appendSlice(&[_][]const u8{ "-target", triple }); |
| 1469 | 1474 | try out.print(" -target {s}", .{triple}); |
| 1470 | 1475 | } |
| 1476 | if (code.link_mode) |link_mode| { |
| 1477 | switch (link_mode) { |
| 1478 | .Static => { |
| 1479 | try test_args.append("-static"); |
| 1480 | try out.print(" -static", .{}); |
| 1481 | }, |
| 1482 | .Dynamic => { |
| 1483 | try test_args.append("-dynamic"); |
| 1484 | try out.print(" -dynamic", .{}); |
| 1485 | }, |
| 1486 | } |
| 1487 | } |
| 1471 | 1488 | const result = exec(allocator, &env_map, test_args.items) catch return parseError(tokenizer, code.source_token, "test failed", .{}); |
| 1472 | 1489 | const escaped_stderr = try escapeHtml(allocator, result.stderr); |
| 1473 | 1490 | const escaped_stdout = try escapeHtml(allocator, result.stdout); |