xref: /aosp_15_r20/development/vndk/tools/header-checker/tests/gen_all.py (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
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