v2 / vlib / v / builder / wasmbuilder / wasmbuilder.v
36 lines · 32 sloc · 941 bytes · 667f65bb5fde05bcf1148784049cc28088efd4fa
Raw
1module wasmbuilder
2
3import v.pref
4import v.util
5import v.builder
6import v.gen.wasm
7
8pub fn start() {
9 mut args_and_flags := util.join_env_vflags_and_os_args()[1..]
10 prefs, _ := pref.parse_args([], args_and_flags)
11 builder.compile('build', prefs, compile_wasm)
12}
13
14pub fn compile_wasm(mut b builder.Builder) {
15 mut files := b.get_builtin_files()
16 files << b.get_user_files()
17 b.set_module_lookup_paths()
18 if b.pref.is_verbose {
19 println('all .v files:')
20 println(files)
21 }
22 mut name := b.pref.out_name
23 if name.ends_with('/-') || name.ends_with(r'\-') || name == '-' {
24 name = '-'
25 } else if !name.ends_with('.wasm') {
26 name += '.wasm'
27 }
28 build_wasm(mut b, files, name)
29}
30
31pub fn build_wasm(mut b builder.Builder, v_files []string, out_file string) {
32 b.front_and_middle_stages(v_files) or { return }
33 util.timing_start('WebAssembly GEN')
34 wasm.gen(b.parsed_files, mut b.table, out_file, b.pref)
35 util.timing_measure('WebAssembly GEN')
36}
37