#!/usr/bin/env python # Copyright 2015 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import argparse import json import os import sys from util import build_utils _GCC_PREPROCESS_PATH = os.path.join( os.path.dirname(__file__), 'gcc_preprocess.py') def ParseArgs(): parser = argparse.ArgumentParser() parser.add_argument('--configuration-name', required=True, help='The build CONFIGURATION_NAME.') parser.add_argument('--enable-multidex', action='store_true', default=False, help='If passed, multidex may be enabled.') parser.add_argument('--enabled-configurations', default=[], help='The configuration(s) for which multidex should be ' 'enabled. If not specified and --enable-multidex is ' 'passed, multidex will be enabled for all ' 'configurations.') parser.add_argument('--multidex-configuration-path', required=True, help='The path to which the multidex configuration JSON ' 'should be saved.') parser.add_argument('--multidex-config-java-file', required=True) parser.add_argument('--multidex-config-java-stamp', required=True) parser.add_argument('--multidex-config-java-template', required=True) args = parser.parse_args() if args.enabled_configurations: args.enabled_configurations = build_utils.ParseGypList( args.enabled_configurations) return args def _WriteConfigJson(multidex_enabled, multidex_configuration_path): config = { 'enabled': multidex_enabled, } with open(multidex_configuration_path, 'w') as f: f.write(json.dumps(config)) def _GenerateMultidexConfigJava(multidex_enabled, args): gcc_preprocess_cmd = [ sys.executable, _GCC_PREPROCESS_PATH, '--include-path=', '--template', args.multidex_config_java_template, '--stamp', args.multidex_config_java_stamp, '--output', args.multidex_config_java_file, ] if multidex_enabled: gcc_preprocess_cmd += [ '--defines', 'ENABLE_MULTIDEX', ] build_utils.CheckOutput(gcc_preprocess_cmd) def main(): args = ParseArgs() multidex_enabled = ( args.enable_multidex and (not args.enabled_configurations or args.configuration_name in args.enabled_configurations)) _WriteConfigJson(multidex_enabled, args.multidex_configuration_path) _GenerateMultidexConfigJava(multidex_enabled, args) return 0 if __name__ == '__main__': sys.exit(main())