Commit 5c04c22bcc

Shritesh Bhattarai <shritesh@shritesh.com>
2019-05-02 00:48:26
docgen: support wasm and wasi
1 parent f6937db
Changed files (2)
doc/docgen.zig
@@ -512,6 +512,10 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {
                             target_str = "x86_64-windows";
                         } else if (mem.eql(u8, end_tag_name, "target_linux_x86_64")) {
                             target_str = "x86_64-linux";
+                        } else if (mem.eql(u8, end_tag_name, "target_wasm")) {
+                            target_str = "wasm32-freestanding";
+                        } else if (mem.eql(u8, end_tag_name, "target_wasi")) {
+                            target_str = "wasm32-wasi";
                         } else if (mem.eql(u8, end_tag_name, "link_libc")) {
                             link_libc = true;
                         } else if (mem.eql(u8, end_tag_name, "code_end")) {
@@ -1101,7 +1105,8 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
                         _ = exec(allocator, &env_map, build_args.toSliceConst()) catch return parseError(tokenizer, code.source_token, "example failed to compile");
 
                         if (code.target_str) |triple| {
-                            if (mem.startsWith(u8, triple, "x86_64-linux") and
+                            if (mem.startsWith(u8, triple, "wasm32") or
+                                mem.startsWith(u8, triple, "x86_64-linux") and
                                 (builtin.os != builtin.Os.linux or builtin.arch != builtin.Arch.x86_64))
                             {
                                 // skip execution
doc/langref.html.in
@@ -8958,6 +8958,33 @@ all your base are belong to us</code></pre>
       {#see_also|Targets|Zig Build System#}
       {#header_close#}
       {#header_close#}
+      {#header_open|WebAssembly#}
+      {#header_open|Freestanding#}
+      {#code_begin|exe|wasm#}
+      {#target_wasm#}
+extern fn print(i32) void;
+
+export fn add(a: i32, b: i32) void {
+    print(a + b);
+}
+      {#code_end#}
+      {#header_close#}
+      {#header_open|WASI#}
+      {#code_begin|exe|wasi#}
+      {#target_wasi#}
+const std = @import("std");
+
+pub fn main() !void {
+    const args = try std.os.argsAlloc(std.heap.wasm_allocator);
+    defer std.os.argsFree(std.heap.wasm_allocator, args);
+
+    for (args) |arg, i| {
+        std.debug.warn("{}: {}\n", i, arg);
+    }
+}
+      {#code_end#}
+      {#header_close#}
+      {#header_close#}
       {#header_open|Targets#}
       <p>
       Zig supports generating code for all targets that LLVM supports. Here is