Add --use-remoteexec option to build_aar.py

build_aar.py is used at "build android archive" step.
This script also needs to support reclient.

Bug: b/243628179
Change-Id: Ic95058195db0b97109150a009fe44f87c5ebf2d1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273600
Auto-Submit: Junji Watanabe <jwata@google.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Takuto Ikuta <tikuta@google.com>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37960}
diff --git a/tools_webrtc/android/build_aar.py b/tools_webrtc/android/build_aar.py
index de5fe2f..32a9ed6 100755
--- a/tools_webrtc/android/build_aar.py
+++ b/tools_webrtc/android/build_aar.py
@@ -68,6 +68,10 @@
                       action='store_true',
                       default=False,
                       help='Use goma.')
+  parser.add_argument('--use-remoteexec',
+                      action='store_true',
+                      default=False,
+                      help='Use RBE.')
   parser.add_argument('--use-unstripped-libs',
                       action='store_true',
                       default=False,
@@ -163,8 +167,8 @@
   raise Exception('Unknown arch: ' + arch)
 
 
-def Build(build_dir, arch, use_goma, extra_gn_args, extra_gn_switches,
-          extra_ninja_switches):
+def Build(build_dir, arch, use_goma, use_remoteexe, extra_gn_args,
+          extra_gn_switches, extra_ninja_switches):
   """Generates target architecture using GN and builds it using ninja."""
   logging.info('Building: %s', arch)
   output_directory = _GetOutputDirectory(build_dir, arch)
@@ -174,7 +178,8 @@
       'is_component_build': False,
       'rtc_include_tests': False,
       'target_cpu': _GetTargetCpu(arch),
-      'use_goma': use_goma
+      'use_goma': use_goma,
+      'use_remoteexec': use_remoteexe,
   }
   arm_version = _GetArmVersion(arch)
   if arm_version:
@@ -187,7 +192,7 @@
   _RunGN(gn_args_list)
 
   ninja_args = TARGETS[:]
-  if use_goma:
+  if use_goma or use_remoteexe:
     ninja_args.extend(['-j', '200'])
   ninja_args.extend(extra_ninja_switches)
   _RunNinja(output_directory, ninja_args)
@@ -223,6 +228,7 @@
 def BuildAar(archs,
              output_file,
              use_goma=False,
+             use_remoteexe=False,
              extra_gn_args=None,
              ext_build_dir=None,
              extra_gn_switches=None,
@@ -234,8 +240,8 @@
   build_dir = ext_build_dir if ext_build_dir else tempfile.mkdtemp()
 
   for arch in archs:
-    Build(build_dir, arch, use_goma, extra_gn_args, extra_gn_switches,
-          extra_ninja_switches)
+    Build(build_dir, arch, use_goma, use_remoteexe, extra_gn_args,
+          extra_gn_switches, extra_ninja_switches)
 
   with zipfile.ZipFile(output_file, 'w') as aar_file:
     # Architecture doesn't matter here, arbitrarily using the first one.
@@ -254,9 +260,9 @@
   args = _ParseArgs()
   logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
 
-  BuildAar(args.arch, args.output, args.use_goma, args.extra_gn_args,
-           args.build_dir, args.extra_gn_switches, args.extra_ninja_switches,
-           args.use_unstripped_libs)
+  BuildAar(args.arch, args.output, args.use_goma, args.use_remoteexe,
+           args.extra_gn_args, args.build_dir, args.extra_gn_switches,
+           args.extra_ninja_switches, args.use_unstripped_libs)
 
 
 if __name__ == '__main__':