xref: /aosp_15_r20/external/harfbuzz_ng/src/check-externs.py (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*2d1272b8SAndroid Build Coastguard Worker
3*2d1272b8SAndroid Build Coastguard Workerimport sys, os, re
4*2d1272b8SAndroid Build Coastguard Worker
5*2d1272b8SAndroid Build Coastguard Workeros.chdir (os.getenv ('srcdir', os.path.dirname (__file__)))
6*2d1272b8SAndroid Build Coastguard Worker
7*2d1272b8SAndroid Build Coastguard WorkerHBHEADERS = [os.path.basename (x) for x in os.getenv ('HBHEADERS', '').split ()] or \
8*2d1272b8SAndroid Build Coastguard Worker	[x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith ('.h')]
9*2d1272b8SAndroid Build Coastguard Worker
10*2d1272b8SAndroid Build Coastguard Workerstat = 0
11*2d1272b8SAndroid Build Coastguard Worker
12*2d1272b8SAndroid Build Coastguard Workerprint ('Checking that all public symbols are exported with HB_EXTERN')
13*2d1272b8SAndroid Build Coastguard Workerfor x in HBHEADERS:
14*2d1272b8SAndroid Build Coastguard Worker	with open (x, 'r', encoding='utf-8') as f: content = f.read ()
15*2d1272b8SAndroid Build Coastguard Worker	for s in re.findall (r'\n.+\nhb_.+\n', content):
16*2d1272b8SAndroid Build Coastguard Worker		if not s.startswith ('\nHB_EXTERN '):
17*2d1272b8SAndroid Build Coastguard Worker			print ('failure on:', s)
18*2d1272b8SAndroid Build Coastguard Worker			stat = 1
19*2d1272b8SAndroid Build Coastguard Worker
20*2d1272b8SAndroid Build Coastguard Workersys.exit (stat)
21