Roll src/third_party/WebKit 9f7fb92:f103b33 (svn 202621:202622)
[chromium-blink-merge.git] / components / cronet / tools / cr_cronet.py
blob96e69c906c911f3a34fcc0f23b5b8130af7d7d6f
1 #!/usr/bin/python
2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 """
7 cr_cronet.py - cr - like helper tool for cronet developers
8 """
10 import argparse
11 import os
12 import sys
15 def run(command, extra_options=''):
16 command = command + ' ' + extra_options
17 print command
18 return os.system(command)
21 def build(out_dir, extra_options=''):
22 return run('ninja -C ' + out_dir + ' cronet_test_instrumentation_apk',
23 extra_options)
26 def install(release_arg):
27 return run('build/android/adb_install_apk.py ' + release_arg + \
28 ' --apk=CronetTest.apk')
31 def test(release_arg, extra_options):
32 return run('build/android/test_runner.py instrumentation '+ \
33 release_arg + ' --test-apk=CronetTestInstrumentation',
34 extra_options)
37 def debug(extra_options):
38 return run('build/android/adb_gdb --start ' + \
39 '--activity=.CronetTestActivity ' + \
40 '--program-name=CronetTest ' + \
41 '--package-name=org.chromium.net',
42 extra_options)
45 def stack(out_dir):
46 return run('adb logcat -d | third_party/android_tools/ndk/ndk-stack ' + \
47 '-sym ' + out_dir + '/lib')
50 def main():
51 parser = argparse.ArgumentParser()
52 parser.add_argument('command',
53 choices=['gyp',
54 'sync',
55 'build',
56 'install',
57 'proguard',
58 'test',
59 'build-test',
60 'stack',
61 'debug',
62 'build-debug'])
63 parser.add_argument('-r', '--release', action='store_true',
64 help='use release configuration')
66 options, extra_options_list = parser.parse_known_args()
67 print options
68 print extra_options_list
69 gyp_defines = 'GYP_DEFINES="OS=android run_findbugs=1 enable_websockets=0 '+ \
70 'disable_file_support=1 disable_ftp_support=1" '
71 out_dir = 'out/Debug'
72 release_arg = ''
73 extra_options = ' '.join(extra_options_list)
74 if options.release:
75 out_dir = 'out/Release'
76 release_arg = ' --release'
78 if (options.command=='gyp'):
79 return run (gyp_defines + ' gclient runhooks')
80 if (options.command=='sync'):
81 return run ('git pull --rebase && ' + gyp_defines + ' gclient sync')
82 if (options.command=='build'):
83 return build(out_dir, extra_options)
84 if (options.command=='install'):
85 return install(release_arg)
86 if (options.command=='proguard'):
87 return run ('ninja -C ' + out_dir + ' cronet_sample_proguard_apk')
88 if (options.command=='test'):
89 return install(release_arg) or test(release_arg, extra_options)
90 if (options.command=='build-test'):
91 return build(out_dir) or install(release_arg) or \
92 test(release_arg, extra_options)
93 if (options.command=='stack'):
94 return stack(out_dir)
95 if (options.command=='debug'):
96 return install(release_arg) or debug(extra_options)
97 if (options.command=='build-debug'):
98 return build(out_dir) or install(release_arg) or debug(extra_options)
100 parser.print_help()
101 return 1
104 if __name__ == '__main__':
105 sys.exit(main())