Disable the new run test modules when not building ART from sources.

Test: m droid SOONG_CONFIG_art_module_source_build=false
  in a platform tree
Test: art/build/build-art-module.sh
  on master-art
Test: lunch armv8-eng && art/tools/buildbot-build.sh
  on master-art
Bug: 172480615
Change-Id: Ic342e427d4911e2afce7d5bdf032cc9fdb5a3eb0
diff --git a/build/Android.bp b/build/Android.bp
index 34f11fe..ad27d42 100644
--- a/build/Android.bp
+++ b/build/Android.bp
@@ -69,6 +69,8 @@
         "art_module_art_global_defaults",
         "art_module_cc_defaults",
         "art_module_java_defaults",
+        "art_module_genrule_defaults",
+        "art_module_prebuilt_defaults",
     ],
 }
 
@@ -339,58 +341,6 @@
     min_sdk_version: "S",
 }
 
-// Use this to enable a cc_* module only when building ART from sources.
-// TODO(b/172480617): Clean up when sources are gone from the platform tree and
-// we no longer need to support sources present when prebuilts are used.
-art_module_cc_defaults {
-    name: "art_module_source_build_defaults",
-    defaults_visibility: [
-        "//art:__subpackages__",
-        "//libcore:__subpackages__",
-        "//libnativehelper:__subpackages__",
-    ],
-
-    enabled: false,
-    soong_config_variables: {
-        source_build: {
-            enabled: true,
-        },
-    },
-    target: {
-        windows: {
-            // Windows is disabled by default, but if we set enabled:true
-            // globally above we need to disable it explicitly.
-            enabled: false,
-        },
-    },
-}
-
-// Use this to enable a java_* module only when building ART from sources.
-// TODO(b/172480617): Clean up when sources are gone from the platform tree and
-// we no longer need to support sources present when prebuilts are used.
-art_module_java_defaults {
-    name: "art_module_source_build_java_defaults",
-    defaults_visibility: [
-        "//art:__subpackages__",
-        "//libcore:__subpackages__",
-        "//libnativehelper:__subpackages__",
-    ],
-
-    enabled: false,
-    soong_config_variables: {
-        source_build: {
-            enabled: true,
-        },
-    },
-    target: {
-        windows: {
-            // Windows is disabled by default, but if we set enabled:true
-            // globally above we need to disable it explicitly.
-            enabled: false,
-        },
-    },
-}
-
 // A version of conscrypt only for enabling the "-hostdex" version to test ART on host.
 java_library {
     // We need our own name to not clash with the conscrypt library.
@@ -434,3 +384,86 @@
         },
     },
 }
+
+// Defaults for different module types to enable them only when building ART
+// from sources. TODO(b/172480617): Clean up when sources are gone from the
+// platform tree and we no longer need to support sources present when prebuilts
+// are used.
+art_module_cc_defaults {
+    name: "art_module_source_build_defaults",
+    defaults_visibility: [
+        "//art:__subpackages__",
+        "//libcore:__subpackages__",
+        "//libnativehelper:__subpackages__",
+    ],
+    enabled: false,
+    soong_config_variables: {
+        source_build: {
+            enabled: true,
+        },
+    },
+    target: {
+        windows: {
+            // Windows is disabled by default, but if we set enabled:true
+            // globally above we need to disable it explicitly.
+            enabled: false,
+        },
+    },
+}
+art_module_java_defaults {
+    name: "art_module_source_build_java_defaults",
+    defaults_visibility: [
+        "//art:__subpackages__",
+        "//libcore:__subpackages__",
+        "//libnativehelper:__subpackages__",
+    ],
+    enabled: false,
+    soong_config_variables: {
+        source_build: {
+            enabled: true,
+        },
+    },
+    target: {
+        windows: {
+            enabled: false,
+        },
+    },
+}
+art_module_genrule_defaults {
+    name: "art_module_source_build_genrule_defaults",
+    defaults_visibility: [
+        "//art:__subpackages__",
+        "//libcore:__subpackages__",
+        "//libnativehelper:__subpackages__",
+    ],
+    enabled: false,
+    soong_config_variables: {
+        source_build: {
+            enabled: true,
+        },
+    },
+    target: {
+        windows: {
+            enabled: false,
+        },
+    },
+}
+art_module_prebuilt_defaults {
+    name: "art_module_source_build_prebuilt_defaults",
+    defaults_visibility: [
+        "//art:__subpackages__",
+        "//libcore:__subpackages__",
+        "//libnativehelper:__subpackages__",
+    ],
+    enabled: false,
+    soong_config_variables: {
+        source_build: {
+            enabled: true,
+        },
+    },
+    target: {
+        windows: {
+            enabled: false,
+        },
+    },
+}
diff --git a/build/SoongConfig.bp b/build/SoongConfig.bp
index 3e2d8fc..657f136 100644
--- a/build/SoongConfig.bp
+++ b/build/SoongConfig.bp
@@ -54,6 +54,14 @@
 }
 
 soong_config_module_type {
+    name: "art_module_java_defaults",
+    module_type: "java_defaults",
+    config_namespace: "art_module",
+    bool_variables: ["source_build"],
+    properties: ["enabled"],
+}
+
+soong_config_module_type {
     name: "art_module_genrule_defaults",
     module_type: "genrule_defaults",
     config_namespace: "art_module",
@@ -62,8 +70,8 @@
 }
 
 soong_config_module_type {
-    name: "art_module_java_defaults",
-    module_type: "java_defaults",
+    name: "art_module_prebuilt_defaults",
+    module_type: "prebuilt_defaults",
     config_namespace: "art_module",
     bool_variables: ["source_build"],
     properties: ["enabled"],
diff --git a/build/apex/Android.bp b/build/apex/Android.bp
index e8cb4b8..de18cdd 100644
--- a/build/apex/Android.bp
+++ b/build/apex/Android.bp
@@ -17,7 +17,6 @@
     module_types: [
         "art_module_apex_defaults",
         "art_module_cc_defaults",
-        "art_module_genrule_defaults",
     ],
 }
 
@@ -478,17 +477,9 @@
 
 // The non-flattened APEXes are always checked, as they are always generated
 // (even when APEX flattening is enabled).
-art_module_genrule_defaults {
+genrule_defaults {
     name: "art-check-apex-gen-defaults",
-
-    // Enable if SOONG_CONFIG_art_module_source_build is true.
-    enabled: false,
-    soong_config_variables: {
-        source_build: {
-            enabled: true,
-        },
-    },
-
+    defaults: ["art_module_source_build_genrule_defaults"],
     tools: [
         "art-apex-tester",
         "deapexer",
diff --git a/test/Android.bp b/test/Android.bp
index 06e55f9..d618477 100644
--- a/test/Android.bp
+++ b/test/Android.bp
@@ -1315,6 +1315,7 @@
 // Install run-test data in the output directory.
 prebuilt_etc_host {
     name: "art-run-test-host-data",
+    defaults: ["art_module_source_build_prebuilt_defaults"],
     src: ":art-run-test-host-data-merged",
     sub_dir: "art",
     filename: "art-run-test-host-data.zip",
@@ -1323,6 +1324,7 @@
 // Install run-test data in the output directory.
 prebuilt_etc_host {
     name: "art-run-test-jvm-data",
+    defaults: ["art_module_source_build_prebuilt_defaults"],
     src: ":art-run-test-jvm-data-merged",
     sub_dir: "art",
     filename: "art-run-test-jvm-data.zip",
@@ -1331,6 +1333,7 @@
 // Install run-test data in the output directory.
 prebuilt_etc_host {
     name: "art-run-test-target-data",
+    defaults: ["art_module_source_build_prebuilt_defaults"],
     src: ":art-run-test-target-data-merged",
     sub_dir: "art",
     filename: "art-run-test-target-data.zip",
@@ -1814,6 +1817,11 @@
 
 genrule_defaults {
     name: "art-run-test-data-defaults",
+    defaults: [
+        // Enable only in source builds, where com.android.art.testing is
+        // available.
+        "art_module_source_build_genrule_defaults",
+    ],
     tool_files: [
         "run-test-build.py",
         "knownfailures.json",
diff --git a/test/Android.run-test.bp b/test/Android.run-test.bp
index 493d3b5..27666f8 100644
--- a/test/Android.run-test.bp
+++ b/test/Android.run-test.bp
@@ -903,6 +903,7 @@
 
 java_genrule {
     name: "art-run-test-host-data-merged",
+    defaults: ["art-run-test-data-defaults"],
     out: ["art-run-test-host-data-merged.zip"],
     srcs: [
         ":art-run-test-host-data-shard00",
@@ -1912,6 +1913,7 @@
 
 java_genrule {
     name: "art-run-test-target-data-merged",
+    defaults: ["art-run-test-data-defaults"],
     out: ["art-run-test-target-data-merged.zip"],
     srcs: [
         ":art-run-test-target-data-shard00",
@@ -2921,6 +2923,7 @@
 
 java_genrule {
     name: "art-run-test-jvm-data-merged",
+    defaults: ["art-run-test-data-defaults"],
     out: ["art-run-test-jvm-data-merged.zip"],
     srcs: [
         ":art-run-test-jvm-data-shard00",
diff --git a/test/Android.run-test.bp.py b/test/Android.run-test.bp.py
index 1aa57df..a051a1d 100755
--- a/test/Android.run-test.bp.py
+++ b/test/Android.run-test.bp.py
@@ -47,6 +47,7 @@
       f.write(textwrap.dedent("""
         java_genrule {{
             name: "art-run-test-{mode}-data-merged",
+            defaults: ["art-run-test-data-defaults"],
             out: ["art-run-test-{mode}-data-merged.zip"],
             srcs: [
                 {srcs}