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