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())