perfetto: add script to strip binary in Android tree
Change-Id: I75c7cda5eba7de74d6395d10f19dacaa6a4ec3dc
diff --git a/Android.bp b/Android.bp
index 1639e3e..7e336d0 100644
--- a/Android.bp
+++ b/Android.bp
@@ -8091,4 +8091,30 @@
out: [
"statslog_perfetto.cpp",
],
+}
+
+cc_genrule {
+ name: "trace_processor_shell.stripped",
+ device_supported: false,
+ host_supported: true,
+ cmd: "$(location tools/strip_android_host_binary.py) $(in) -o $(out)",
+ enabled: false,
+ compile_multilib: "64",
+ tool_files: [
+ "tools/strip_android_host_binary.py",
+ ],
+ dist: {
+ targets: [
+ "sdk_repo",
+ ],
+ },
+ target: {
+ linux: {
+ out: [
+ "trace_processor_shell.stripped",
+ ],
+ srcs: [":trace_processor_shell"],
+ enabled: true,
+ },
+ },
}
\ No newline at end of file
diff --git a/Android.bp.extras b/Android.bp.extras
index 65a81f4..a4615eb 100644
--- a/Android.bp.extras
+++ b/Android.bp.extras
@@ -78,3 +78,29 @@
"statslog_perfetto.cpp",
],
}
+
+cc_genrule {
+ name: "trace_processor_shell.stripped",
+ device_supported: false,
+ host_supported: true,
+ cmd: "$(location tools/strip_android_host_binary.py) $(in) -o $(out)",
+ enabled: false,
+ compile_multilib: "64",
+ tool_files: [
+ "tools/strip_android_host_binary.py",
+ ],
+ dist: {
+ targets: [
+ "sdk_repo",
+ ],
+ },
+ target: {
+ linux: {
+ out: [
+ "trace_processor_shell.stripped",
+ ],
+ srcs: [":trace_processor_shell"],
+ enabled: true,
+ },
+ },
+}
diff --git a/tools/strip_android_host_binary.py b/tools/strip_android_host_binary.py
new file mode 100755
index 0000000..488368a
--- /dev/null
+++ b/tools/strip_android_host_binary.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+# Copyright (C) 2020 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from __future__ import print_function
+
+import argparse
+import os
+import subprocess
+import sys
+
+THIS_DIR = os.path.realpath(os.path.dirname(__file__))
+
+
+def android_build_top():
+ return os.path.realpath(os.path.join(THIS_DIR, '../../..'))
+
+
+def clang_build():
+ gofile = os.path.join(android_build_top(), 'build', 'soong', 'cc', 'config',
+ 'global.go')
+ try:
+ with open(gofile) as f:
+ lines = f.readlines()
+ versionLine = [l for l in lines if 'ClangDefaultVersion' in l][0]
+ start, end = versionLine.index('"'), versionLine.rindex('"')
+ return versionLine[start + 1:end]
+ except Exception as err:
+ raise RuntimeError("Extracting Clang version failed with {0}".format(err))
+
+
+def llvm_strip():
+ return os.path.join(android_build_top(), 'prebuilts', 'clang', 'host',
+ 'linux-x86', clang_build(), 'bin', 'llvm-strip')
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ description='Strips a binary in the Android tree.')
+ parser.add_argument(
+ '-o', dest='output', default=None, help='Output file', required=True)
+ parser.add_argument('binary', type=str, help='location of binary')
+ args = parser.parse_args()
+ return subprocess.call([llvm_strip(), args.binary, '-o', args.output])
+
+
+if __name__ == '__main__':
+ sys.exit(main())