@@ -19,6 +19,11 @@ def _wasm_rust_transition_impl(settings, attr):
1919 "//command_line_option:platforms" : "@rules_rust//rust/platform:wasm" ,
2020 }
2121
22+ def _wasi_rust_transition_impl (settings , attr ):
23+ return {
24+ "//command_line_option:platforms" : "@rules_rust//rust/platform:wasi" ,
25+ }
26+
2227wasm_rust_transition = transition (
2328 implementation = _wasm_rust_transition_impl ,
2429 inputs = [],
@@ -27,6 +32,14 @@ wasm_rust_transition = transition(
2732 ],
2833)
2934
35+ wasi_rust_transition = transition (
36+ implementation = _wasi_rust_transition_impl ,
37+ inputs = [],
38+ outputs = [
39+ "//command_line_option:platforms" ,
40+ ],
41+ )
42+
3043def _wasm_binary_impl (ctx ):
3144 out = ctx .actions .declare_file (ctx .label .name )
3245 ctx .actions .run (
@@ -49,7 +62,12 @@ wasm_rust_binary_rule = rule(
4962 attrs = _wasm_attrs (wasm_rust_transition ),
5063)
5164
52- def wasm_rust_binary (name , tags = [], ** kwargs ):
65+ wasi_rust_binary_rule = rule (
66+ implementation = _wasm_binary_impl ,
67+ attrs = _wasm_attrs (wasi_rust_transition ),
68+ )
69+
70+ def wasm_rust_binary (name , tags = [], wasi = False , ** kwargs ):
5371 wasm_name = "_wasm_" + name .replace ("." , "_" )
5472 kwargs .setdefault ("visibility" , ["//visibility:public" ])
5573
@@ -62,7 +80,11 @@ def wasm_rust_binary(name, tags = [], **kwargs):
6280 ** kwargs
6381 )
6482
65- wasm_rust_binary_rule (
83+ bin_rule = wasm_rust_binary_rule
84+ if wasi :
85+ bin_rule = wasi_rust_binary_rule
86+
87+ bin_rule (
6688 name = name ,
6789 binary = ":" + wasm_name ,
6890 tags = tags + ["manual" ],
0 commit comments