-
Notifications
You must be signed in to change notification settings - Fork 878
Expand file tree
/
Copy pathwasm2c.py
More file actions
67 lines (51 loc) · 2.42 KB
/
Copy pathwasm2c.py
File metadata and controls
67 lines (51 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Copyright 2026 WebAssembly Community Group participants
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import pathlib
import subprocess
import tempfile
from . import shared, support
from .shared import print_heading
spec_tests = [
]
def test_wasm2c_spec_output():
for t in shared.options.spec_tests:
test_path = pathlib.Path(t)
if test_path.name not in spec_tests:
continue
print('..', test_path.name)
is_fail_test = '.fail' in test_path.name
test_subdir = f'wasm2c_spec_{test_path.stem}'
test_subdir_path = pathlib.Path(test_subdir)
test_subdir_path.mkdir(exist_ok=True)
wasm2c_cmd = [shared.WASM2C[0], t, '-o', f'{test_subdir}/{test_path.stem}.c', '--allow-asserts']
support.run_command(wasm2c_cmd, expected_status = (1 if is_fail_test else 0))
c_sources = sorted(test_subdir_path.glob('*.c'))
wasm_rt_dir = pathlib.Path(shared.options.binaryen_root) / 'src' / 'tools' / 'wasm2c' / 'wasm-rt'
c_sources.append(wasm_rt_dir / 'wasm-rt-impl.c')
c_sources.append(wasm_rt_dir / 'wasm-rt-mem-impl.c')
c_sources.append(wasm_rt_dir / 'wasm-rt-exceptions-impl.c')
compile_cmd = [shared.NATIVECC, '-O2', '-std=c11', '-D_GNU_SOURCE', '-D_DEFAULT_SOURCE', '-I.', f"-I{wasm_rt_dir}"] + [str(s) for s in c_sources] + ['-o', f'{test_subdir}/spec_test_runner']
compile_cmd += ['-fno-optimize-sibling-calls', '-frounding-math']
if 'gcc' in shared.NATIVECC.lower():
compile_cmd.append('-fsignaling-nans')
compile_cmd.append('-lm')
compile_cmd.append('-lpthread')
support.run_command(compile_cmd)
# Run spec test runner binary and assert success
support.run_command([f'{test_subdir}/spec_test_runner'])
def test_wasm2c_spec():
print_heading('checking wasm2c spec testcases...')
if shared.skip_if_on_windows('wasm2c-spec'):
return
test_wasm2c_spec_output()