Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(570)

Unified Diff: tools-webrtc/android/build_aar.py

Issue 2864213004: Rename tools-webrtc -> tools_webrtc (Closed)
Patch Set: REmove symlink Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools-webrtc/android/adb_shell.sh ('k') | tools-webrtc/android/profiling/perf_setup.sh » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools-webrtc/android/build_aar.py
diff --git a/tools-webrtc/android/build_aar.py b/tools-webrtc/android/build_aar.py
deleted file mode 100755
index 9db8f8f2b5010e2b9df4d40152850233f862e854..0000000000000000000000000000000000000000
--- a/tools-webrtc/android/build_aar.py
+++ /dev/null
@@ -1,180 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
-#
-# Use of this source code is governed by a BSD-style license
-# that can be found in the LICENSE file in the root of the source
-# tree. An additional intellectual property rights grant can be found
-# in the file PATENTS. All contributing project authors may
-# be found in the AUTHORS file in the root of the source tree.
-
-"""Script to generate libwebrtc.aar for distribution.
-
-The script has to be run from the root src folder.
-./tools-webrtc/android/build_aar.py
-
-.aar-file is just a zip-archive containing the files of the library. The file
-structure generated by this script looks like this:
- - AndroidManifest.xml
- - classes.jar
- - libs/
- - armeabi-v7a/
- - libjingle_peerconnection_so.so
- - x86/
- - libjingle_peerconnection_so.so
-"""
-
-import argparse
-import logging
-import os
-import shutil
-import subprocess
-import sys
-import tempfile
-import zipfile
-
-
-DEFAULT_ARCHS = ['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64']
-NEEDED_SO_FILES = ['libjingle_peerconnection_so.so']
-JAR_FILE = 'lib.java/webrtc/sdk/android/libwebrtc.jar'
-MANIFEST_FILE = 'webrtc/sdk/android/AndroidManifest.xml'
-TARGETS = [
- 'webrtc/sdk/android:libwebrtc',
- 'webrtc/sdk/android:libjingle_peerconnection_so',
-]
-
-
-def _ParseArgs():
- parser = argparse.ArgumentParser(description='libwebrtc.aar generator.')
- parser.add_argument('--output', default='libwebrtc.aar',
- help='Output file of the script.')
- parser.add_argument('--arch', default=DEFAULT_ARCHS, nargs='*',
- help='Architectures to build. Defaults to %(default)s.')
- parser.add_argument('--use-goma', action='store_true', default=False,
- help='Use goma.')
- parser.add_argument('--verbose', action='store_true', default=False,
- help='Debug logging.')
- parser.add_argument('--extra-gn-args', default=[], nargs='*',
- help='Additional GN args to be used during Ninja generation.')
- return parser.parse_args()
-
-
-def _RunGN(args):
- cmd = ['gn']
- cmd.extend(args)
- logging.debug('Running: %r', cmd)
- subprocess.check_call(cmd)
-
-
-def _RunNinja(output_directory, args):
- cmd = ['ninja', '-C', output_directory]
- cmd.extend(args)
- logging.debug('Running: %r', cmd)
- subprocess.check_call(cmd)
-
-
-def _EncodeForGN(value):
- """Encodes value as a GN literal."""
- if type(value) is str:
- return '"' + value + '"'
- elif type(value) is bool:
- return repr(value).lower()
- else:
- return repr(value)
-
-
-def _GetOutputDirectory(tmp_dir, arch):
- """Returns the GN output directory for the target architecture."""
- return os.path.join(tmp_dir, arch)
-
-
-def _GetTargetCpu(arch):
- """Returns target_cpu for the GN build with the given architecture."""
- if arch in ['armeabi', 'armeabi-v7a']:
- return 'arm'
- elif arch == 'arm64-v8a':
- return 'arm64'
- elif arch == 'x86':
- return 'x86'
- elif arch == 'x86_64':
- return 'x64'
- else:
- raise Exception('Unknown arch: ' + arch)
-
-
-def _GetArmVersion(arch):
- """Returns arm_version for the GN build with the given architecture."""
- if arch == 'armeabi':
- return 6
- elif arch == 'armeabi-v7a':
- return 7
- elif arch in ['arm64-v8a', 'x86', 'x86_64']:
- return None
- else:
- raise Exception('Unknown arch: ' + arch)
-
-
-def Build(tmp_dir, arch, use_goma, extra_gn_args):
- """Generates target architecture using GN and builds it using ninja."""
- logging.info('Building: %s', arch)
- output_directory = _GetOutputDirectory(tmp_dir, arch)
- gn_args = {
- 'target_os': 'android',
- 'is_debug': False,
- 'is_component_build': False,
- 'target_cpu': _GetTargetCpu(arch),
- 'use_goma': use_goma
- }
- arm_version = _GetArmVersion(arch)
- if arm_version:
- gn_args['arm_version'] = arm_version
- gn_args_str = '--args=' + ' '.join([
- k + '=' + _EncodeForGN(v) for k, v in gn_args.items()] + extra_gn_args)
-
- _RunGN(['gen', output_directory, gn_args_str])
-
- ninja_args = TARGETS
- if use_goma:
- ninja_args.extend(['-j', '200'])
- _RunNinja(output_directory, ninja_args)
-
-
-def CollectCommon(aar_file, tmp_dir, arch):
- """Collects architecture independent files into the .aar-archive."""
- logging.info('Collecting common files.')
- output_directory = _GetOutputDirectory(tmp_dir, arch)
- aar_file.write(MANIFEST_FILE, 'AndroidManifest.xml')
- aar_file.write(os.path.join(output_directory, JAR_FILE), 'classes.jar')
-
-
-def Collect(aar_file, tmp_dir, arch):
- """Collects architecture specific files into the .aar-archive."""
- logging.info('Collecting: %s', arch)
- output_directory = _GetOutputDirectory(tmp_dir, arch)
-
- abi_dir = os.path.join('jni', arch)
- for so_file in NEEDED_SO_FILES:
- aar_file.write(os.path.join(output_directory, so_file),
- os.path.join(abi_dir, so_file))
-
-
-def main():
- args = _ParseArgs()
- logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
-
- tmp_dir = tempfile.mkdtemp()
-
- for arch in args.arch:
- Build(tmp_dir, arch, args.use_goma, args.extra_gn_args)
-
- with zipfile.ZipFile(args.output, 'w') as aar_file:
- # Architecture doesn't matter here, arbitrarily using the first one.
- CollectCommon(aar_file, tmp_dir, args.arch[0])
- for arch in args.arch:
- Collect(aar_file, tmp_dir, arch)
-
- shutil.rmtree(tmp_dir, True)
-
-
-if __name__ == '__main__':
- sys.exit(main())
« no previous file with comments | « tools-webrtc/android/adb_shell.sh ('k') | tools-webrtc/android/profiling/perf_setup.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698