mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-07 22:34:28 +00:00
docgen: add additional_option token; fix wasm-freestanding example
- Fix usage string `--skip-code-test` to `--skip-code-tests`.
- Added a token `{#additonal_option|-rdynamic#}` which introduce arbitrary flag to `build-exe/obj/lib` example.
- Fix wasm freestanding example, it now needs explicit export symbols to work.
This commit is contained in:
parent
64214b1ca6
commit
c964e10821
2 changed files with 23 additions and 2 deletions
|
|
@ -18,13 +18,13 @@ const tmp_dir_name = "docgen_tmp";
|
||||||
const test_out_path = tmp_dir_name ++ fs.path.sep_str ++ "test" ++ exe_ext;
|
const test_out_path = tmp_dir_name ++ fs.path.sep_str ++ "test" ++ exe_ext;
|
||||||
|
|
||||||
const usage =
|
const usage =
|
||||||
\\Usage: docgen [--zig] [--skip-code-test] input output"
|
\\Usage: docgen [--zig] [--skip-code-tests] input output"
|
||||||
\\
|
\\
|
||||||
\\ Generates an HTML document from a docgen template.
|
\\ Generates an HTML document from a docgen template.
|
||||||
\\
|
\\
|
||||||
\\Options:
|
\\Options:
|
||||||
\\ -h, --help Print this help and exit
|
\\ -h, --help Print this help and exit
|
||||||
\\ --skip-code-test Skip the doctests
|
\\ --skip-code-tests Skip the doctests
|
||||||
\\
|
\\
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -329,6 +329,7 @@ const Code = struct {
|
||||||
link_mode: ?std.builtin.LinkMode,
|
link_mode: ?std.builtin.LinkMode,
|
||||||
disable_cache: bool,
|
disable_cache: bool,
|
||||||
verbose_cimport: bool,
|
verbose_cimport: bool,
|
||||||
|
additional_options: []const []const u8,
|
||||||
|
|
||||||
const Id = union(enum) {
|
const Id = union(enum) {
|
||||||
Test,
|
Test,
|
||||||
|
|
@ -596,6 +597,8 @@ fn genToc(allocator: Allocator, tokenizer: *Tokenizer) !Toc {
|
||||||
var disable_cache = false;
|
var disable_cache = false;
|
||||||
var verbose_cimport = false;
|
var verbose_cimport = false;
|
||||||
var backend_stage1 = false;
|
var backend_stage1 = false;
|
||||||
|
var additional_options = std.ArrayList([]const u8).init(allocator);
|
||||||
|
defer additional_options.deinit();
|
||||||
|
|
||||||
const source_token = while (true) {
|
const source_token = while (true) {
|
||||||
const content_tok = try eatToken(tokenizer, Token.Id.Content);
|
const content_tok = try eatToken(tokenizer, Token.Id.Content);
|
||||||
|
|
@ -630,6 +633,10 @@ fn genToc(allocator: Allocator, tokenizer: *Tokenizer) !Toc {
|
||||||
link_mode = .Dynamic;
|
link_mode = .Dynamic;
|
||||||
} else if (mem.eql(u8, end_tag_name, "backend_stage1")) {
|
} else if (mem.eql(u8, end_tag_name, "backend_stage1")) {
|
||||||
backend_stage1 = true;
|
backend_stage1 = true;
|
||||||
|
} else if (mem.eql(u8, end_tag_name, "additonal_option")) {
|
||||||
|
_ = try eatToken(tokenizer, Token.Id.Separator);
|
||||||
|
const option = try eatToken(tokenizer, Token.Id.TagContent);
|
||||||
|
try additional_options.append(tokenizer.buffer[option.start..option.end]);
|
||||||
} else if (mem.eql(u8, end_tag_name, "code_end")) {
|
} else if (mem.eql(u8, end_tag_name, "code_end")) {
|
||||||
_ = try eatToken(tokenizer, Token.Id.BracketClose);
|
_ = try eatToken(tokenizer, Token.Id.BracketClose);
|
||||||
break content_tok;
|
break content_tok;
|
||||||
|
|
@ -657,6 +664,7 @@ fn genToc(allocator: Allocator, tokenizer: *Tokenizer) !Toc {
|
||||||
.link_mode = link_mode,
|
.link_mode = link_mode,
|
||||||
.disable_cache = disable_cache,
|
.disable_cache = disable_cache,
|
||||||
.verbose_cimport = verbose_cimport,
|
.verbose_cimport = verbose_cimport,
|
||||||
|
.additional_options = try additional_options.toOwnedSlice(),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
tokenizer.code_node_count += 1;
|
tokenizer.code_node_count += 1;
|
||||||
|
|
@ -1418,6 +1426,10 @@ fn genHtml(
|
||||||
try build_args.append("--verbose-cimport");
|
try build_args.append("--verbose-cimport");
|
||||||
try shell_out.print("--verbose-cimport ", .{});
|
try shell_out.print("--verbose-cimport ", .{});
|
||||||
}
|
}
|
||||||
|
for (code.additional_options) |option| {
|
||||||
|
try build_args.append(option);
|
||||||
|
try shell_out.print("{s} ", .{option});
|
||||||
|
}
|
||||||
|
|
||||||
try shell_out.print("\n", .{});
|
try shell_out.print("\n", .{});
|
||||||
|
|
||||||
|
|
@ -1729,6 +1741,10 @@ fn genHtml(
|
||||||
try build_args.appendSlice(&[_][]const u8{ "-target", triple });
|
try build_args.appendSlice(&[_][]const u8{ "-target", triple });
|
||||||
try shell_out.print("-target {s} ", .{triple});
|
try shell_out.print("-target {s} ", .{triple});
|
||||||
}
|
}
|
||||||
|
for (code.additional_options) |option| {
|
||||||
|
try build_args.append(option);
|
||||||
|
try shell_out.print("{s} ", .{option});
|
||||||
|
}
|
||||||
|
|
||||||
if (maybe_error_match) |error_match| {
|
if (maybe_error_match) |error_match| {
|
||||||
const result = try ChildProcess.exec(.{
|
const result = try ChildProcess.exec(.{
|
||||||
|
|
@ -1811,6 +1827,10 @@ fn genHtml(
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (code.additional_options) |option| {
|
||||||
|
try test_args.append(option);
|
||||||
|
try shell_out.print("{s} ", .{option});
|
||||||
|
}
|
||||||
const result = exec(allocator, &env_map, test_args.items) catch return parseError(tokenizer, code.source_token, "test failed", .{});
|
const result = exec(allocator, &env_map, test_args.items) catch return parseError(tokenizer, code.source_token, "test failed", .{});
|
||||||
const escaped_stderr = try escapeHtml(allocator, result.stderr);
|
const escaped_stderr = try escapeHtml(allocator, result.stderr);
|
||||||
const escaped_stdout = try escapeHtml(allocator, result.stdout);
|
const escaped_stdout = try escapeHtml(allocator, result.stdout);
|
||||||
|
|
|
||||||
|
|
@ -11149,6 +11149,7 @@ all your base are belong to us{#end_shell_samp#}
|
||||||
{#code_begin|lib|math#}
|
{#code_begin|lib|math#}
|
||||||
{#target_wasm#}
|
{#target_wasm#}
|
||||||
{#link_mode_dynamic#}
|
{#link_mode_dynamic#}
|
||||||
|
{#additonal_option|-rdynamic#}
|
||||||
extern fn print(i32) void;
|
extern fn print(i32) void;
|
||||||
|
|
||||||
export fn add(a: i32, b: i32) void {
|
export fn add(a: i32, b: i32) void {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue