xref: /aosp_15_r20/bionic/tools/generate-version-script.py (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*8d67ca89SAndroid Build Coastguard Worker
3*8d67ca89SAndroid Build Coastguard Worker# This tool is used to generate the version scripts for libc, libm, libdl,
4*8d67ca89SAndroid Build Coastguard Worker# and libstdc++ for every architecture.
5*8d67ca89SAndroid Build Coastguard Worker
6*8d67ca89SAndroid Build Coastguard Worker# usage: generate-version-script.py ARCH INPUT OUTPUT
7*8d67ca89SAndroid Build Coastguard Worker
8*8d67ca89SAndroid Build Coastguard Workerimport sys
9*8d67ca89SAndroid Build Coastguard Worker
10*8d67ca89SAndroid Build Coastguard Workerdef has_arch_tags(tags):
11*8d67ca89SAndroid Build Coastguard Worker  for arch in ["arm", "arm64", "riscv64", "x86", "x86_64"]:
12*8d67ca89SAndroid Build Coastguard Worker    if arch in tags:
13*8d67ca89SAndroid Build Coastguard Worker      return True
14*8d67ca89SAndroid Build Coastguard Worker  return False
15*8d67ca89SAndroid Build Coastguard Worker
16*8d67ca89SAndroid Build Coastguard Workerdef GenerateVersionScript(arch, in_filename, out_filename):
17*8d67ca89SAndroid Build Coastguard Worker  with open(out_filename, "w") as fout:
18*8d67ca89SAndroid Build Coastguard Worker    with open(in_filename, "r") as fin:
19*8d67ca89SAndroid Build Coastguard Worker      for line in fin:
20*8d67ca89SAndroid Build Coastguard Worker        index = line.find("#")
21*8d67ca89SAndroid Build Coastguard Worker        if index != -1:
22*8d67ca89SAndroid Build Coastguard Worker          tags = line[index+1:].split()
23*8d67ca89SAndroid Build Coastguard Worker          if arch not in tags and has_arch_tags(tags):
24*8d67ca89SAndroid Build Coastguard Worker            continue
25*8d67ca89SAndroid Build Coastguard Worker        fout.write(line)
26*8d67ca89SAndroid Build Coastguard Worker
27*8d67ca89SAndroid Build Coastguard Workerarch = sys.argv[1]
28*8d67ca89SAndroid Build Coastguard Workerin_filename = sys.argv[2]
29*8d67ca89SAndroid Build Coastguard Workerout_filename = sys.argv[3]
30*8d67ca89SAndroid Build Coastguard WorkerGenerateVersionScript(arch, in_filename, out_filename)
31