#!/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()