1 #!/usr/bin/env python3 2 3 import tempfile 4 import os 5 import subprocess 6 7 SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) 8 AOSP_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, *['..'] * 5)) 9 10 BUILTIN_HEADERS_DIR = ( 11 os.path.join(AOSP_DIR, 'bionic', 'libc', 'include'), 12 os.path.join(AOSP_DIR, 'external', 'libcxx', 'include'), 13 os.path.join(AOSP_DIR, 'prebuilts', 'sdk', 'renderscript', 'clang-include'), 14 ) 15 16 EXPORTED_HEADERS_DIR = ( 17 os.path.join(AOSP_DIR, 'development', 'vndk', 'tools', 'header-checker', 18 'tests'), 19 ) 20 21 def run_header_checker(input_path, cflags=[]): 22 with tempfile.TemporaryDirectory() as tmp: 23 output_name = os.path.join(tmp, os.path.basename(input_path)) + '.dump' 24 cmd = ['header-abi-dumper', '-o', output_name, input_path,] 25 for d in EXPORTED_HEADERS_DIR: 26 cmd += ['-I', d] 27 cmd+= ['--'] 28 for d in BUILTIN_HEADERS_DIR: 29 cmd += ['-isystem', d] 30 cmd += cflags 31 subprocess.check_call(cmd) 32 with open(output_name, 'r') as f: 33 return f.read().replace(SCRIPT_DIR, '.') 34