diff options
author | Dmitriy Ivanov <dimitry@google.com> | 2015-10-28 15:14:13 -0700 |
---|---|---|
committer | Dmitriy Ivanov <dimitry@google.com> | 2015-10-28 16:40:53 -0700 |
commit | 284b4685246197890b4f75a9912096b8e13c62ba (patch) | |
tree | 867725cd196b02582edd6dcc0f95b5c40a4d7688 /libc/tools/genversion-scripts.py | |
parent | d9146c24041ad571e3725ab630d9ac94df3ff6d1 (diff) |
Generate per-architecture version scripts.
Bug: http://b/24767418
Change-Id: I23e49d8d30c0def3215ffbd99d09f207d9483624
Diffstat (limited to 'libc/tools/genversion-scripts.py')
-rwxr-xr-x | libc/tools/genversion-scripts.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/libc/tools/genversion-scripts.py b/libc/tools/genversion-scripts.py new file mode 100755 index 000000000..73faf2a8b --- /dev/null +++ b/libc/tools/genversion-scripts.py @@ -0,0 +1,55 @@ +#!/usr/bin/python + +# This tool is used to generate the version scripts for libc and libm +# for every architecture. + +import atexit +import os.path +import shutil +import tempfile + + +all_arches = ["arm", "arm64", "mips", "mips64", "x86", "x86_64"] +bionic_libc_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libc") +bionic_libm_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libm") +libc_script = os.path.join(bionic_libc_root, "libc.map.txt") +libm_script = os.path.join(bionic_libm_root, "libm.map.txt") + +# TODO (dimity): generate architecture-specific version scripts as part of build + +# temp directory where we store all intermediate files +bionic_temp = tempfile.mkdtemp(prefix="bionic_genversionscripts") +# Make sure the directory is deleted when the script exits. +atexit.register(shutil.rmtree, bionic_temp) + +bionic_libc_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libc") + +warning = "Generated by genversionscripts.py. Do not edit." + + +class VersionScriptGenerator(object): + + def run(self): + for script in [libc_script, libm_script]: + basename = os.path.basename(script) + dirname = os.path.dirname(script) + for arch in all_arches: + name = basename.split(".")[0] + "." + arch + ".map" + tmp_path = os.path.join(bionic_temp, name) + dest_path = os.path.join(dirname, name) + with open(tmp_path, "w") as fout: + with open(script, "r") as fin: + fout.write("# %s\n" % warning) + for line in fin: + index = line.find("#") + if index != -1: + arches = line[index+1:].split() + if arch not in arches: + continue + fout.write(line) + shutil.copyfile(tmp_path, dest_path) + + +generator = VersionScriptGenerator() +generator.run() + |