1#!/usr/bin/env python3 2 3import os 4import re 5import sys 6 7import_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 8import_path = os.path.abspath(os.path.join(import_path, 'utils')) 9sys.path.insert(1, import_path) 10 11from utils import run_header_abi_dumper 12from module import Module 13from test import INPUT_DIR 14from test import EXPECTED_DIR 15from test import EXPORTED_HEADER_DIRS 16from test import REF_DUMP_DIR 17from test import make_and_copy_dump 18 19FILE_EXTENSIONS = ['h', 'hpp', 'hxx', 'cpp', 'cc', 'c'] 20 21 22def main(): 23 patt = re.compile( 24 '^.*\\.(?:' + 25 '|'.join('(?:' + re.escape(ext) + ')' for ext in FILE_EXTENSIONS) + 26 ')$') 27 input_dir_prefix_len = len(INPUT_DIR) + 1 28 for base, dirnames, filenames in os.walk(INPUT_DIR): 29 for filename in filenames: 30 if not patt.match(filename): 31 print('ignore:', filename) 32 continue 33 34 input_path = os.path.join(base, filename) 35 input_rel_path = input_path[input_dir_prefix_len:] 36 output_path = os.path.join(EXPECTED_DIR, input_rel_path) 37 38 print('generating', output_path, '...') 39 os.makedirs(os.path.dirname(output_path), exist_ok=True) 40 run_header_abi_dumper(input_path, output_path, 41 export_include_dirs=EXPORTED_HEADER_DIRS) 42 43 modules = Module.get_test_modules() 44 for module in modules: 45 if module.has_reference_dump: 46 print('Created abi dump at', 47 make_and_copy_dump(module, REF_DUMP_DIR)) 48 49 return 0 50 51 52if __name__ == '__main__': 53 sys.exit(main()) 54