Additional switches to build_aar.py

Extra switches to GN could be passed via --extra-gn-switches.
Extra switches to Ninja could be passed via --extra-ninja-switches.
They could be used in different scenarios, when additional switches
need to be passed to GN or Ninja. For example, when diagnosing
build issues extra switch `-v` could be passed to enable
verbose logging of GN and Ninja.

Bug: None
Change-Id: I09d18a57b3df4e698784fb7d58c02e8adecddefa
Reviewed-on: https://webrtc-review.googlesource.com/78722
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23388}
This commit is contained in:
Yura Yaroshevich
2018-05-24 16:48:02 +03:00
committed by Commit Bot
parent 94150ee487
commit f517f11fcb

View File

@ -67,8 +67,21 @@ def _ParseArgs():
help='Debug logging.') help='Debug logging.')
parser.add_argument('--extra-gn-args', default=[], nargs='*', parser.add_argument('--extra-gn-args', default=[], nargs='*',
help="""Additional GN arguments to be used during Ninja generation. help="""Additional GN arguments to be used during Ninja generation.
These are applied after any other arguments and will These are passed to gn inside `--args` switch and
override any values defined by the script.""") applied after any other arguments and will
override any values defined by the script.
Example of building debug aar file:
build_aar.py --extra-gn-args='is_debug=true'""")
parser.add_argument('--extra-ninja-switches', default=[], nargs='*',
help="""Additional Ninja switches to be used during compilation.
These are applied after any other Ninja switches.
Example of enabling verbose Ninja output:
build_aar.py --extra-ninja-switches='-v'""")
parser.add_argument('--extra-gn-switches', default=[], nargs='*',
help="""Additional GN switches to be used during compilation.
These are applied after any other GN switches.
Example of enabling verbose GN output:
build_aar.py --extra-gn-switches='-v'""")
return parser.parse_args() return parser.parse_args()
@ -129,7 +142,8 @@ def _GetArmVersion(arch):
raise Exception('Unknown arch: ' + arch) raise Exception('Unknown arch: ' + arch)
def Build(build_dir, arch, use_goma, extra_gn_args): def Build(build_dir, arch, use_goma, extra_gn_args, extra_gn_switches,
extra_ninja_switches):
"""Generates target architecture using GN and builds it using ninja.""" """Generates target architecture using GN and builds it using ninja."""
logging.info('Building: %s', arch) logging.info('Building: %s', arch)
output_directory = _GetOutputDirectory(build_dir, arch) output_directory = _GetOutputDirectory(build_dir, arch)
@ -147,11 +161,14 @@ def Build(build_dir, arch, use_goma, extra_gn_args):
gn_args_str = '--args=' + ' '.join([ gn_args_str = '--args=' + ' '.join([
k + '=' + _EncodeForGN(v) for k, v in gn_args.items()] + extra_gn_args) k + '=' + _EncodeForGN(v) for k, v in gn_args.items()] + extra_gn_args)
_RunGN(['gen', output_directory, gn_args_str]) gn_args = ['gen', output_directory, gn_args_str]
gn_args.extend(extra_gn_switches)
_RunGN(gn_args)
ninja_args = TARGETS[:] ninja_args = TARGETS[:]
if use_goma: if use_goma:
ninja_args.extend(['-j', '200']) ninja_args.extend(['-j', '200'])
ninja_args.extend(extra_ninja_switches)
_RunNinja(output_directory, ninja_args) _RunNinja(output_directory, ninja_args)
@ -181,12 +198,16 @@ def GenerateLicenses(output_dir, build_dir, archs):
def BuildAar(archs, output_file, use_goma=False, extra_gn_args=None, def BuildAar(archs, output_file, use_goma=False, extra_gn_args=None,
ext_build_dir=None): ext_build_dir=None, extra_gn_switches=None,
extra_ninja_switches=None):
extra_gn_args = extra_gn_args or [] extra_gn_args = extra_gn_args or []
extra_gn_switches = extra_gn_switches or []
extra_ninja_switches = extra_ninja_switches or []
build_dir = ext_build_dir if ext_build_dir else tempfile.mkdtemp() build_dir = ext_build_dir if ext_build_dir else tempfile.mkdtemp()
for arch in archs: for arch in archs:
Build(build_dir, arch, use_goma, extra_gn_args) Build(build_dir, arch, use_goma, extra_gn_args, extra_gn_switches,
extra_ninja_switches)
with zipfile.ZipFile(output_file, 'w') as aar_file: with zipfile.ZipFile(output_file, 'w') as aar_file:
# Architecture doesn't matter here, arbitrarily using the first one. # Architecture doesn't matter here, arbitrarily using the first one.
@ -206,7 +227,7 @@ def main():
logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO) logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
BuildAar(args.arch, args.output, args.use_goma, args.extra_gn_args, BuildAar(args.arch, args.output, args.use_goma, args.extra_gn_args,
args.build_dir) args.build_dir, args.extra_gn_switches, args.extra_ninja_switches)
if __name__ == '__main__': if __name__ == '__main__':