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