xref: /aosp_15_r20/external/harfbuzz_ng/src/check-libstdc++.py (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1#!/usr/bin/env python3
2
3import sys, os, shutil, subprocess
4
5os.chdir (os.getenv ('srcdir', os.path.dirname (__file__)))
6
7libs = os.getenv ('libs', '.libs')
8
9ldd = os.getenv ('LDD', shutil.which ('ldd'))
10if not ldd:
11	otool = os.getenv ('OTOOL', shutil.which ('otool'))
12	if otool:
13		ldd = otool + ' -L'
14	else:
15		print ('check-libstdc++.py: \'ldd\' not found; skipping test')
16		sys.exit (77)
17
18stat = 0
19tested = False
20
21# harfbuzz-icu links to libstdc++ because icu does.
22for soname in ['harfbuzz', 'harfbuzz-subset', 'harfbuzz-gobject', 'harfbuzz-cairo']:
23	for suffix in ['so', 'dylib']:
24		so = os.path.join (libs, 'lib%s.%s' % (soname, suffix))
25		if not os.path.exists (so): continue
26
27		print ('Checking that we are not linking to libstdc++ or libc++ in %s' % so)
28		ldd_result = subprocess.check_output (ldd.split() + [so])
29		if (b'libstdc++' in ldd_result) or (b'libc++' in ldd_result):
30			print ('Ouch, %s is linked to libstdc++ or libc++' % so)
31			stat = 1
32
33		tested = True
34
35if not tested:
36	print ('check-libstdc++.py: libharfbuzz shared library not found; skipping test')
37	sys.exit (77)
38
39sys.exit (stat)
40