Home | History | Annotate | Download | only in tests
      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