Make testrunner use an environment variable to control building.

If it sees ART_TEST_RUN_TEST_BUILD=true then it will build
dependencies before runnning tests by default.

Test: m clean && \
      ART_TEST_RUN_TEST_BUILD=false \
      ./test/testrunner/testrunner.py --verbose --host -j40 -b;
      # Observe that it calls make
Test: m clean && \
      ART_TEST_RUN_TEST_BUILD=true \
      ./test/testrunner/testrunner.py --verbose --host -j40 \
      --no-build-dependencies;
      # Observe that it does not call make
Test: m clean && \
      ART_TEST_RUN_TEST_BUILD=false\
      ./test/testrunner/testrunner.py --verbose --host -j40;
      # Observe that it does not call make
Test: m clean && \
      ART_TEST_RUN_TEST_BUILD=true \
      ./test/testrunner/testrunner.py --verbose --host -j40;
      # Observe that it calls make
Test: m clean && \
      ./test/testrunner/testrunner.py --verbose --host -j40;
      # Observe that it does not call make

Change-Id: Iedd9e5be42b0977b177c4c4e7f9a4805387d4535
diff --git a/test/testrunner/env.py b/test/testrunner/env.py
index 4336d77..ed4b4a9 100644
--- a/test/testrunner/env.py
+++ b/test/testrunner/env.py
@@ -178,6 +178,8 @@
 
 EXTRA_DISABLED_TESTS = set(env.get("ART_TEST_RUN_TEST_SKIP", "").split())
 
+ART_TEST_RUN_TEST_BUILD = getEnvBoolean('ART_TEST_RUN_TEST_BUILD', False)
+
 TARGET_2ND_ARCH = get_build_var('TARGET_2ND_ARCH')
 TARGET_ARCH = get_build_var('TARGET_ARCH')
 if TARGET_2ND_ARCH:
diff --git a/test/testrunner/testrunner.py b/test/testrunner/testrunner.py
index 8c0b928..ec301de 100755
--- a/test/testrunner/testrunner.py
+++ b/test/testrunner/testrunner.py
@@ -704,7 +704,6 @@
     return {match.group(12)}
   raise ValueError(test_name + " is not a valid test")
 
-
 def parse_option():
   global verbose
   global dry_run
@@ -726,7 +725,15 @@
   parser.add_argument('--dry-run', action='store_true', dest='dry_run')
   parser.add_argument("--skip", action="append", dest="skips", default=[],
                       help="Skip the given test in all circumstances.")
-  parser.add_argument('-b', '--build-dependencies', action='store_true', dest='build')
+  parser.add_argument('--no-build-dependencies',
+                      action='store_false', dest='build',
+                      help="Don't build dependencies under any circumstances. This is the " +
+                           "behavior if ART_TEST_RUN_TEST_ALWAYS_BUILD is not set to 'true'.")
+  parser.add_argument('-b', '--build-dependencies',
+                      action='store_true', dest='build',
+                      help="Build dependencies under all circumstances. By default we will " +
+                           "not build dependencies unless ART_TEST_RUN_TEST_BUILD=true.")
+  parser.set_defaults(build = env.ART_TEST_RUN_TEST_BUILD)
   parser.add_argument('--gdb', action='store_true', dest='gdb')
   parser.add_argument('--gdb-arg', dest='gdb_arg')
 
@@ -804,8 +811,7 @@
   if options.dry_run:
     dry_run = True
     verbose = True
-  if options.build:
-    build = True
+  build = options.build
   if options.gdb:
     n_thread = 1
     gdb = True