| 1 | module wasmbuilder |
| 2 | |
| 3 | import v.pref |
| 4 | import v.util |
| 5 | import v.builder |
| 6 | import v.gen.wasm |
| 7 | |
| 8 | pub 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 | |
| 14 | pub 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 | |
| 31 | pub 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 | |