mirror of
https://github.com/Dillonb/n64.git
synced 2025-04-02 10:42:08 -04:00
65 lines
1.7 KiB
Python
Executable file
65 lines
1.7 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
from typing import List
|
|
|
|
import os
|
|
import toml
|
|
import glob
|
|
|
|
cmakelists = open("CMakeLists.txt", "w")
|
|
cmakelists.write("# This file generated by the python script `generate.py` - it should not be edited by hand.\n")
|
|
|
|
|
|
def get_data_size(input_desc: List[str]) -> int:
|
|
size = 0
|
|
for elem in input_desc:
|
|
t, n = elem.split(":")
|
|
if t == "v128":
|
|
size += 16
|
|
elif t == "u32":
|
|
size += 4
|
|
else:
|
|
print("Unknown type: %s" % t)
|
|
exit(1)
|
|
|
|
return size
|
|
|
|
|
|
def get_just_filename(path: str):
|
|
base = os.path.basename(path)
|
|
name, ext = os.path.splitext(base)
|
|
return name
|
|
|
|
|
|
for filename in glob.glob("./input/*.toml"):
|
|
test_name = get_just_filename(filename)
|
|
|
|
cmakelists.write("configure_file(%s.golden %s.golden COPYONLY)\n" % (test_name, test_name))
|
|
cmakelists.write("configure_file(%s.rsp %s.rsp COPYONLY)\n" % (test_name, test_name))
|
|
cmakelists.write("configure_file(%s.input %s.input COPYONLY)\n" % (test_name, test_name))
|
|
|
|
test_data = toml.load(filename)
|
|
|
|
input_size = get_data_size(test_data["input_desc"])
|
|
output_size = get_data_size(test_data["output_desc"])
|
|
|
|
input_data = open("./%s.input" % test_name, "wb")
|
|
|
|
test_names = []
|
|
|
|
for test in test_data["test"]:
|
|
test_names.append(test["name"])
|
|
for val in test["input"]:
|
|
data = val.to_bytes(4, 'little')
|
|
input_data.write(data)
|
|
|
|
input_data.close()
|
|
|
|
addtest_line = "add_test(NAME test_rsp_%s COMMAND test_rsp %s %d %d" % (test_name, test_name, input_size, output_size)
|
|
|
|
for name in test_names:
|
|
addtest_line += " " + name
|
|
addtest_line += ")\n"
|
|
|
|
cmakelists.write(addtest_line)
|
|
|
|
cmakelists.close()
|