Add support for building other architectures.

Since we often make changes that might break on other architectures,
let the buildbot deal with some of these for us. They can be invoked
by `bionicbb:ARCH`, where `ARCH` is one of:

 * arm
 * aarch64
 * mips
 * mips64
 * x86
 * x86_64

Specifying arm isn't particularly interesting (since the default
target for the buildbot is hammerhead), but there are some differences
in the math instructions available for the default ARM target, so it
could be helpful for testing changes to the compiler-rt builtins.

Change-Id: I94018fd3c30d26fcf405e747fc633cbdd08ff4e5
diff --git a/tools/bionicbb/gmail_listener.py b/tools/bionicbb/gmail_listener.py
index 8718484..1dc82fa 100644
--- a/tools/bionicbb/gmail_listener.py
+++ b/tools/bionicbb/gmail_listener.py
@@ -130,7 +130,7 @@
     return True
 
 
-def build_project(gerrit_info, dry_run):
+def build_project(gerrit_info, dry_run, lunch_target=None):
     project_to_jenkins_map = {
         'platform/bionic': 'bionic-presubmit',
         'platform/build': 'bionic-presubmit',
@@ -177,6 +177,8 @@
             'CHANGE_ID': change_id,
             'PROJECT': project_path
         }
+        if lunch_target is not None:
+            params['LUNCH_TARGET'] = lunch_target
         if not dry_run:
             job = jenkins[build].invoke(build_params=params)
             url = job.get_build().baseurl
@@ -233,6 +235,19 @@
     command_map = {
         'clean': lambda: clean_project(gerrit_info, dry_run),
         'retry': lambda: build_project(gerrit_info, dry_run),
+
+        'arm': lambda: build_project(gerrit_info, dry_run,
+                                     lunch_target='aosp_arm-eng'),
+        'aarch64': lambda: build_project(gerrit_info, dry_run,
+                                         lunch_target='aosp_arm64-eng'),
+        'mips': lambda: build_project(gerrit_info, dry_run,
+                                      lunch_target='aosp_mips-eng'),
+        'mips64': lambda: build_project(gerrit_info, dry_run,
+                                        lunch_target='aosp_mips64-eng'),
+        'x86': lambda: build_project(gerrit_info, dry_run,
+                                     lunch_target='aosp_x86-eng'),
+        'x86_64': lambda: build_project(gerrit_info, dry_run,
+                                        lunch_target='aosp_x86_64-eng'),
     }
 
     def handle_unknown_command():