| #!/usr/bin/env python3 |
| |
| import os |
| import re |
| import sys |
| |
| import_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) |
| import_path = os.path.abspath(os.path.join(import_path, 'utils')) |
| sys.path.insert(1, import_path) |
| |
| from utils import run_header_abi_dumper |
| from utils import copy_reference_dump_content |
| from module import Module |
| |
| SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) |
| INPUT_DIR = os.path.join(SCRIPT_DIR, 'input') |
| EXPECTED_DIR = os.path.join(SCRIPT_DIR, 'expected') |
| REFERENCE_DUMP_DIR = os.path.join(SCRIPT_DIR, 'reference_dumps') |
| FILE_EXTENSIONS = ['h', 'hpp', 'hxx', 'cpp', 'cc', 'c'] |
| |
| def make_and_copy_reference_dumps(module, default_cflags=[], |
| reference_dump_dir=REFERENCE_DUMP_DIR): |
| lsdump_content = module.make_dump(default_cflags) |
| return copy_reference_dump_content(module.get_dump_name(), lsdump_content, |
| reference_dump_dir, '', module.arch) |
| |
| def main(): |
| patt = re.compile( |
| '^.*\\.(?:' + \ |
| '|'.join('(?:' + re.escape(ext) + ')' for ext in FILE_EXTENSIONS) + \ |
| ')$') |
| input_dir_prefix_len = len(INPUT_DIR) + 1 |
| for base, dirnames, filenames in os.walk(INPUT_DIR): |
| for filename in filenames: |
| if not patt.match(filename): |
| print('ignore:', filename) |
| continue |
| |
| input_path = os.path.join(base, filename) |
| input_rel_path = input_path[input_dir_prefix_len:] |
| output_path = os.path.join(EXPECTED_DIR, input_rel_path) |
| |
| print('generating', output_path, '...') |
| output_content = run_header_abi_dumper(input_path, True) |
| |
| os.makedirs(os.path.dirname(output_path), exist_ok=True) |
| with open(output_path, 'w') as f: |
| f.write(output_content) |
| modules = Module.get_test_modules() |
| for module in modules: |
| make_and_copy_reference_dumps(module) |
| |
| return 0 |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |