Disable VtsHalWifiV1_0Target#WifiChipHidlTest.RequestFirmwareDebugDump am: 00b7a39b53 am: fa96c98821 am: 487790a341 am: d0068fe9fd
am: c36cf597d7

Change-Id: I30ffd6e780ade3854979386e3aa139cbd3f1d4b1
diff --git a/Android.bp b/Android.bp
index 82a982f..1ec2e46 100644
--- a/Android.bp
+++ b/Android.bp
@@ -37,9 +37,11 @@
     defaults: ["VtsHalLibDefaults"],
     shared_libs: [
         "libfmq",
+        "libhidlmemory",
         "libvts_profiling",
         "libvts_multidevice_proto",
         "libprotobuf-cpp-full",
+        "android.hidl.memory@1.0",
     ],
     // Userdebug only, should not be used to build modules contained in a user build device image.
     multilib: {
diff --git a/atrace/V1_0/build/Android.bp b/atrace/V1_0/build/Android.bp
new file mode 100644
index 0000000..a1160fa
--- /dev/null
+++ b/atrace/V1_0/build/Android.bp
@@ -0,0 +1,94 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.atrace@1.0-vts.spec",
+    hidl_gen_args: "-r android.hardware:hardware/interfaces",
+    srcs: [
+        ":android.hardware.atrace@1.0_hal",
+    ],
+    out: [
+        "android/hardware/atrace/1.0/AtraceDevice.vts",
+        "android/hardware/atrace/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.atrace@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.atrace@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/atrace/1.0/ $(genDir)/android/hardware/atrace/1.0/",
+    srcs: [
+        ":android.hardware.atrace@1.0_hal",
+    ],
+    out: [
+        "android/hardware/atrace/1.0/AtraceDevice.vts.cpp",
+        "android/hardware/atrace/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.atrace@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.atrace@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/atrace/1.0/ $(genDir)/android/hardware/atrace/1.0/",
+    srcs: [
+        ":android.hardware.atrace@1.0_hal",
+    ],
+    out: [
+        "android/hardware/atrace/1.0/AtraceDevice.vts.h",
+        "android/hardware/atrace/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.atrace@1.0-vts.driver",
+    generated_sources: ["android.hardware.atrace@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.atrace@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.atrace@1.0-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hardware.atrace@1.0",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.atrace@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.atrace@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/atrace/1.0/ $(genDir)/android/hardware/atrace/1.0/",
+    srcs: [
+        ":android.hardware.atrace@1.0_hal",
+    ],
+    out: [
+        "android/hardware/atrace/1.0/AtraceDevice.vts.cpp",
+        "android/hardware/atrace/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.atrace@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.atrace@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/atrace/1.0/ $(genDir)/android/hardware/atrace/1.0/",
+    srcs: [
+        ":android.hardware.atrace@1.0_hal",
+    ],
+    out: [
+        "android/hardware/atrace/1.0/AtraceDevice.vts.h",
+        "android/hardware/atrace/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.atrace@1.0-vts.profiler",
+    generated_sources: ["android.hardware.atrace@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.atrace@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.atrace@1.0-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hardware.atrace@1.0",
+    ],
+}
+
diff --git a/audio/V2_0/target/Android.mk b/audio/V2_0/target/Android.mk
index 9a02d84..7e60e6a 100644
--- a/audio/V2_0/target/Android.mk
+++ b/audio/V2_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalAudioV2_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/audio/V2_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/V2_0/target/AndroidTest.xml b/audio/V2_0/target/AndroidTest.xml
index c14a7b5..0899fad 100644
--- a/audio/V2_0/target/AndroidTest.xml
+++ b/audio/V2_0/target/AndroidTest.xml
@@ -31,6 +31,7 @@
         <option name="exclude-coverage-path" value="hardware/qcom/audio/post_proc" />
         <option name="exclude-coverage-path" value="hardware/qcom/audio/visualizer" />
         <option name="exclude-coverage-path" value="hardware/qcom/audio/voice_processing/" />
+        <option name="precondition-lshal" value="android.hardware.audio@2.0"/>
         <option name="test-timeout" value="30m"/>
         <option name="gtest-batch-mode" value="true"/>
     </test>
diff --git a/audio/V2_0/target_profiling/Android.mk b/audio/V2_0/target_profiling/Android.mk
index f1e7176..24a705d 100644
--- a/audio/V2_0/target_profiling/Android.mk
+++ b/audio/V2_0/target_profiling/Android.mk
@@ -19,6 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalAudioV2_0TargetProfiling
-
-VTS_CONFIG_SRC_DIR := testcases/hal/audio/V2_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/V2_0/target_profiling/AndroidTest.xml b/audio/V2_0/target_profiling/AndroidTest.xml
index c1ee846..a2f9e50 100644
--- a/audio/V2_0/target_profiling/AndroidTest.xml
+++ b/audio/V2_0/target_profiling/AndroidTest.xml
@@ -37,6 +37,7 @@
         <option name="exclude-coverage-path" value="hardware/qcom/audio/post_proc" />
         <option name="exclude-coverage-path" value="hardware/qcom/audio/visualizer" />
         <option name="exclude-coverage-path" value="hardware/qcom/audio/voice_processing/" />
+        <option name="precondition-lshal" value="android.hardware.audio@2.0"/>
         <option name="test-timeout" value="60m"/>
         <option name="gtest-batch-mode" value="true"/>
     </test>
diff --git a/audio/effect/V2_0/target/Android.mk b/audio/effect/V2_0/target/Android.mk
index d67ad68..d80c79a 100644
--- a/audio/effect/V2_0/target/Android.mk
+++ b/audio/effect/V2_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalAudioEffectV2_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/audio/effect/V2_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/effect/V2_0/target_profiling/Android.mk b/audio/effect/V2_0/target_profiling/Android.mk
index 7611426..5e3ba87 100644
--- a/audio/effect/V2_0/target_profiling/Android.mk
+++ b/audio/effect/V2_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalAudioEffectV2_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/audio/effect/V2_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/effect/V2_0/target_replay/Android.mk b/audio/effect/V2_0/target_replay/Android.mk
index 9bbfa23..1a5c508 100644
--- a/audio/effect/V2_0/target_replay/Android.mk
+++ b/audio/effect/V2_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalAudioEffectV2_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/audio/effect/V2_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/authsecret/V1_0/target/AndroidTest.xml b/authsecret/V1_0/target/AndroidTest.xml
index 94bc442..80f991a 100644
--- a/authsecret/V1_0/target/AndroidTest.xml
+++ b/authsecret/V1_0/target/AndroidTest.xml
@@ -27,6 +27,7 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.authsecret@1.0"/>
         <option name="test-timeout" value="1m"/>
     </test>
 </configuration>
diff --git a/automotive/evs/V1_0/target/Android.mk b/automotive/evs/V1_0/target/Android.mk
index b511a08..af47e56 100644
--- a/automotive/evs/V1_0/target/Android.mk
+++ b/automotive/evs/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalEvsV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/automotive/evs/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/automotive/evs/V1_0/target_profiling/Android.mk b/automotive/evs/V1_0/target_profiling/Android.mk
index 9070902..765fe39 100644
--- a/automotive/evs/V1_0/target_profiling/Android.mk
+++ b/automotive/evs/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalEvsV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/automotive/evs/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/automotive/vehicle/V2_0/host/Android.mk b/automotive/vehicle/V2_0/host/Android.mk
index aa38340..5320921 100644
--- a/automotive/vehicle/V2_0/host/Android.mk
+++ b/automotive/vehicle/V2_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalAutomotiveVehicleV2_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/automotive/vehicle/V2_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/automotive/vehicle/V2_0/host_profiling/Android.mk b/automotive/vehicle/V2_0/host_profiling/Android.mk
index f4099a4..55fa746 100644
--- a/automotive/vehicle/V2_0/host_profiling/Android.mk
+++ b/automotive/vehicle/V2_0/host_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalAutomotiveVehicleV2_0HostProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/automotive/vehicle/V2_0/host_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/biometrics/fingerprint/V2_1/target/Android.mk b/biometrics/fingerprint/V2_1/target/Android.mk
index 07a6a75..8cad9cf 100644
--- a/biometrics/fingerprint/V2_1/target/Android.mk
+++ b/biometrics/fingerprint/V2_1/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBiometricsFingerprintV2_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/biometrics/fingerprint/V2_1/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/biometrics/fingerprint/V2_1/target_profiling/Android.mk b/biometrics/fingerprint/V2_1/target_profiling/Android.mk
index 70ab2a2..52e9ac7 100644
--- a/biometrics/fingerprint/V2_1/target_profiling/Android.mk
+++ b/biometrics/fingerprint/V2_1/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBiometricsFingerprintV2_1TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/biometrics/fingerprint/V2_1/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/biometrics/fingerprint/V2_1/target_replay/Android.mk b/biometrics/fingerprint/V2_1/target_replay/Android.mk
index 1743005..34e1c7d 100644
--- a/biometrics/fingerprint/V2_1/target_replay/Android.mk
+++ b/biometrics/fingerprint/V2_1/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBiometricsFingerprintV2_1TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/biometrics/fingerprint/V2_1/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/bluetooth/V1_0/target/Android.mk b/bluetooth/V1_0/target/Android.mk
index 1bd05ba..2d97b19 100644
--- a/bluetooth/V1_0/target/Android.mk
+++ b/bluetooth/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBluetoothV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/bluetooth/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/bluetooth/V1_0/target_profiling/Android.mk b/bluetooth/V1_0/target_profiling/Android.mk
index e4c4c9c..0f2893a 100644
--- a/bluetooth/V1_0/target_profiling/Android.mk
+++ b/bluetooth/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBluetoothV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/bluetooth/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/bluetooth/V1_0/target_replay/Android.mk b/bluetooth/V1_0/target_replay/Android.mk
index e44a943..7745d8a 100644
--- a/bluetooth/V1_0/target_replay/Android.mk
+++ b/bluetooth/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBluetoothV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/bluetooth/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/bluetooth/a2dp/V1_0/build/Android.bp b/bluetooth/a2dp/V1_0/build/Android.bp
new file mode 100644
index 0000000..deab3c9
--- /dev/null
+++ b/bluetooth/a2dp/V1_0/build/Android.bp
@@ -0,0 +1,99 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.bluetooth.a2dp@1.0-vts.spec",
+    hidl_gen_args: "-r android.hardware:hardware/interfaces",
+    srcs: [
+        ":android.hardware.bluetooth.a2dp@1.0_hal",
+    ],
+    out: [
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioHost.vts",
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioOffload.vts",
+        "android/hardware/bluetooth/a2dp/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.bluetooth.a2dp@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.bluetooth.a2dp@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/bluetooth/a2dp/1.0/ $(genDir)/android/hardware/bluetooth/a2dp/1.0/",
+    srcs: [
+        ":android.hardware.bluetooth.a2dp@1.0_hal",
+    ],
+    out: [
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioHost.vts.cpp",
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioOffload.vts.cpp",
+        "android/hardware/bluetooth/a2dp/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.bluetooth.a2dp@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.bluetooth.a2dp@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/bluetooth/a2dp/1.0/ $(genDir)/android/hardware/bluetooth/a2dp/1.0/",
+    srcs: [
+        ":android.hardware.bluetooth.a2dp@1.0_hal",
+    ],
+    out: [
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioHost.vts.h",
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioOffload.vts.h",
+        "android/hardware/bluetooth/a2dp/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.bluetooth.a2dp@1.0-vts.driver",
+    generated_sources: ["android.hardware.bluetooth.a2dp@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.bluetooth.a2dp@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.bluetooth.a2dp@1.0-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hardware.bluetooth.a2dp@1.0",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.bluetooth.a2dp@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.bluetooth.a2dp@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/bluetooth/a2dp/1.0/ $(genDir)/android/hardware/bluetooth/a2dp/1.0/",
+    srcs: [
+        ":android.hardware.bluetooth.a2dp@1.0_hal",
+    ],
+    out: [
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioHost.vts.cpp",
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioOffload.vts.cpp",
+        "android/hardware/bluetooth/a2dp/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.bluetooth.a2dp@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.bluetooth.a2dp@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/bluetooth/a2dp/1.0/ $(genDir)/android/hardware/bluetooth/a2dp/1.0/",
+    srcs: [
+        ":android.hardware.bluetooth.a2dp@1.0_hal",
+    ],
+    out: [
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioHost.vts.h",
+        "android/hardware/bluetooth/a2dp/1.0/BluetoothAudioOffload.vts.h",
+        "android/hardware/bluetooth/a2dp/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.bluetooth.a2dp@1.0-vts.profiler",
+    generated_sources: ["android.hardware.bluetooth.a2dp@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.bluetooth.a2dp@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.bluetooth.a2dp@1.0-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hardware.bluetooth.a2dp@1.0",
+    ],
+}
+
diff --git a/boot/V1_0/target/Android.mk b/boot/V1_0/target/Android.mk
index 6cd564a..0b0a58f 100644
--- a/boot/V1_0/target/Android.mk
+++ b/boot/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBootV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/boot/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/boot/V1_0/target_profiling/Android.mk b/boot/V1_0/target_profiling/Android.mk
index 2df23cb..87e7950 100644
--- a/boot/V1_0/target_profiling/Android.mk
+++ b/boot/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBootV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/boot/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/broadcastradio/V1_0/target/Android.mk b/broadcastradio/V1_0/target/Android.mk
index 8c20147..4139218 100644
--- a/broadcastradio/V1_0/target/Android.mk
+++ b/broadcastradio/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBroadcastradioV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/broadcastradio/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/broadcastradio/V1_0/target/AndroidTest.xml b/broadcastradio/V1_0/target/AndroidTest.xml
index 7b24b5f..1042472 100644
--- a/broadcastradio/V1_0/target/AndroidTest.xml
+++ b/broadcastradio/V1_0/target/AndroidTest.xml
@@ -15,7 +15,6 @@
 -->
 <configuration description="Config for VTS VtsHalBroadcastradioV1_0Target test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-hal-auto" />
-    <option name="config-descriptor:metadata" key="plan" value="vts-hal" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlTargetTest.push"/>
diff --git a/broadcastradio/V1_0/target_profiling/Android.mk b/broadcastradio/V1_0/target_profiling/Android.mk
index ba55aaf..64cd088 100644
--- a/broadcastradio/V1_0/target_profiling/Android.mk
+++ b/broadcastradio/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBroadcastradioV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/broadcastradio/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/broadcastradio/V1_1/target/Android.mk b/broadcastradio/V1_1/target/Android.mk
index 7ec9a3c..5d60809 100644
--- a/broadcastradio/V1_1/target/Android.mk
+++ b/broadcastradio/V1_1/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBroadcastradioV1_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/broadcastradio/V1_1/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/broadcastradio/V1_1/target_profiling/Android.mk b/broadcastradio/V1_1/target_profiling/Android.mk
index a4ee112..889d99d 100644
--- a/broadcastradio/V1_1/target_profiling/Android.mk
+++ b/broadcastradio/V1_1/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalBroadcastradioV1_1TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/broadcastradio/V1_1/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/camera/provider/V2_4/target/Android.mk b/camera/provider/V2_4/target/Android.mk
index a179da3..7eac592 100644
--- a/camera/provider/V2_4/target/Android.mk
+++ b/camera/provider/V2_4/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalCameraProviderV2_4Target
-VTS_CONFIG_SRC_DIR := testcases/hal/camera/provider/V2_4/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/camera/provider/V2_4/target_profiling/Android.mk b/camera/provider/V2_4/target_profiling/Android.mk
index 16f080e..4420439 100644
--- a/camera/provider/V2_4/target_profiling/Android.mk
+++ b/camera/provider/V2_4/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalCameraProviderV2_4TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/camera/provider/V2_4/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/cas/V1_0/target/Android.mk b/cas/V1_0/target/Android.mk
index 72836ba..04a5832 100644
--- a/cas/V1_0/target/Android.mk
+++ b/cas/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalCasV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/cas/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/configstore/V1_0/target/Android.mk b/configstore/V1_0/target/Android.mk
index 7b6dbce..c9641d5 100644
--- a/configstore/V1_0/target/Android.mk
+++ b/configstore/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalConfigstoreV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/configstore/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/configstore/V1_0/target_profiling/Android.mk b/configstore/V1_0/target_profiling/Android.mk
index e9f8597..fe39bd8 100644
--- a/configstore/V1_0/target_profiling/Android.mk
+++ b/configstore/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalConfigstoreV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/configstore/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/configstore/V1_0/target_replay/Android.mk b/configstore/V1_0/target_replay/Android.mk
index 2132348..961f36f 100644
--- a/configstore/V1_0/target_replay/Android.mk
+++ b/configstore/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalConfigstoreV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/configstore/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/configstore/V1_1/build/Android.bp b/configstore/V1_1/build/Android.bp
new file mode 100644
index 0000000..c5f74d1
--- /dev/null
+++ b/configstore/V1_1/build/Android.bp
@@ -0,0 +1,100 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.configstore@1.1-vts.spec",
+    hidl_gen_args: "-r android.hardware:hardware/interfaces",
+    srcs: [
+        ":android.hardware.configstore@1.1_hal",
+    ],
+    out: [
+        "android/hardware/configstore/1.1/SurfaceFlingerConfigs.vts",
+        "android/hardware/configstore/1.1/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.configstore@1.1-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.configstore@1.1 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/configstore/1.1/ $(genDir)/android/hardware/configstore/1.1/",
+    srcs: [
+        ":android.hardware.configstore@1.1_hal",
+    ],
+    out: [
+        "android/hardware/configstore/1.1/SurfaceFlingerConfigs.vts.cpp",
+        "android/hardware/configstore/1.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.configstore@1.1-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.configstore@1.1 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/configstore/1.1/ $(genDir)/android/hardware/configstore/1.1/",
+    srcs: [
+        ":android.hardware.configstore@1.1_hal",
+    ],
+    out: [
+        "android/hardware/configstore/1.1/SurfaceFlingerConfigs.vts.h",
+        "android/hardware/configstore/1.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.configstore@1.1-vts.driver",
+    generated_sources: ["android.hardware.configstore@1.1-vts.driver_genc++"],
+    generated_headers: ["android.hardware.configstore@1.1-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.configstore@1.1-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [
+        "android.hardware.configstore@1.0-vts.driver",
+    ],
+    static_libs: [
+        "android.hardware.configstore@1.0",
+        "android.hardware.configstore@1.1",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.configstore@1.1-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.configstore@1.1 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/configstore/1.1/ $(genDir)/android/hardware/configstore/1.1/",
+    srcs: [
+        ":android.hardware.configstore@1.1_hal",
+    ],
+    out: [
+        "android/hardware/configstore/1.1/SurfaceFlingerConfigs.vts.cpp",
+        "android/hardware/configstore/1.1/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.configstore@1.1-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.configstore@1.1 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/configstore/1.1/ $(genDir)/android/hardware/configstore/1.1/",
+    srcs: [
+        ":android.hardware.configstore@1.1_hal",
+    ],
+    out: [
+        "android/hardware/configstore/1.1/SurfaceFlingerConfigs.vts.h",
+        "android/hardware/configstore/1.1/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.configstore@1.1-vts.profiler",
+    generated_sources: ["android.hardware.configstore@1.1-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.configstore@1.1-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.configstore@1.1-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [
+        "android.hardware.configstore@1.0-vts.profiler",
+    ],
+    static_libs: [
+        "android.hardware.configstore@1.0",
+        "android.hardware.configstore@1.1",
+    ],
+}
+
diff --git a/contexthub/V1_0/host/Android.mk b/contexthub/V1_0/host/Android.mk
index 6c60251..ba9d822 100644
--- a/contexthub/V1_0/host/Android.mk
+++ b/contexthub/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalContexthubV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/contexthub/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/contexthub/V1_0/host/AndroidTest.xml b/contexthub/V1_0/host/AndroidTest.xml
index 9d4f08a..fd73afd 100644
--- a/contexthub/V1_0/host/AndroidTest.xml
+++ b/contexthub/V1_0/host/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS VtsHalContexthubV1_0Host test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlHostTest.push"/>
diff --git a/contexthub/V1_0/target/Android.mk b/contexthub/V1_0/target/Android.mk
index 5e7d7a9..8738e85 100644
--- a/contexthub/V1_0/target/Android.mk
+++ b/contexthub/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalContexthubV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/contexthub/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/contexthub/V1_0/target_profiling/Android.mk b/contexthub/V1_0/target_profiling/Android.mk
index 40ebb6c..d7472fc 100644
--- a/contexthub/V1_0/target_profiling/Android.mk
+++ b/contexthub/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalContexthubV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/contexthub/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/contexthub/V1_0/target_replay/Android.mk b/contexthub/V1_0/target_replay/Android.mk
index d935d2b..4b79935 100644
--- a/contexthub/V1_0/target_replay/Android.mk
+++ b/contexthub/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalContexthubV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/contexthub/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/drm/V1_0/target/Android.mk b/drm/V1_0/target/Android.mk
index 22d31f1..669fedc 100644
--- a/drm/V1_0/target/Android.mk
+++ b/drm/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalDrmV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/drm/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/drm/V1_0/target_profiling/Android.mk b/drm/V1_0/target_profiling/Android.mk
index 609e3ec..f5352bb 100644
--- a/drm/V1_0/target_profiling/Android.mk
+++ b/drm/V1_0/target_profiling/Android.mk
@@ -21,6 +21,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalDrmV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/drm/V1_0/target_profiling
-
 include test/vts/tools/build/Android.host_config.mk
diff --git a/drm/V1_1/target/AndroidTest.xml b/drm/V1_1/target/AndroidTest.xml
index e35980d..9092108 100644
--- a/drm/V1_1/target/AndroidTest.xml
+++ b/drm/V1_1/target/AndroidTest.xml
@@ -27,6 +27,7 @@
         <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalDrmV1_1TargetTest/VtsHalDrmV1_1TargetTest"/>
         <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalDrmV1_1TargetTest/VtsHalDrmV1_1TargetTest"/>
         <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="precondition-lshal" value="android.hardware.drm@1.1"/>
         <option name="test-timeout" value="15m"/>
     </test>
 </configuration>
diff --git a/drm/V1_1/target_profiling/AndroidTest.xml b/drm/V1_1/target_profiling/AndroidTest.xml
index dda5a49..4094859 100644
--- a/drm/V1_1/target_profiling/AndroidTest.xml
+++ b/drm/V1_1/target_profiling/AndroidTest.xml
@@ -31,6 +31,7 @@
         <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalDrmV1_1TargetTest/VtsHalDrmV1_1TargetTest"/>
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.drm@1.1"/>
         <option name="test-timeout" value="15m"/>
     </test>
 </configuration>
diff --git a/dumpstate/V1_0/target/Android.mk b/dumpstate/V1_0/target/Android.mk
index 04ea176..56ac84d 100644
--- a/dumpstate/V1_0/target/Android.mk
+++ b/dumpstate/V1_0/target/Android.mk
@@ -19,6 +19,5 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalDumpstateV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/dumpstate/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
 
diff --git a/fastboot/V1_0/build/Android.bp b/fastboot/V1_0/build/Android.bp
new file mode 100644
index 0000000..9b64dfa
--- /dev/null
+++ b/fastboot/V1_0/build/Android.bp
@@ -0,0 +1,94 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.fastboot@1.0-vts.spec",
+    hidl_gen_args: "-r android.hardware:hardware/interfaces",
+    srcs: [
+        ":android.hardware.fastboot@1.0_hal",
+    ],
+    out: [
+        "android/hardware/fastboot/1.0/Fastboot.vts",
+        "android/hardware/fastboot/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.fastboot@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.fastboot@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/fastboot/1.0/ $(genDir)/android/hardware/fastboot/1.0/",
+    srcs: [
+        ":android.hardware.fastboot@1.0_hal",
+    ],
+    out: [
+        "android/hardware/fastboot/1.0/Fastboot.vts.cpp",
+        "android/hardware/fastboot/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.fastboot@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.fastboot@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/fastboot/1.0/ $(genDir)/android/hardware/fastboot/1.0/",
+    srcs: [
+        ":android.hardware.fastboot@1.0_hal",
+    ],
+    out: [
+        "android/hardware/fastboot/1.0/Fastboot.vts.h",
+        "android/hardware/fastboot/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.fastboot@1.0-vts.driver",
+    generated_sources: ["android.hardware.fastboot@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.fastboot@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.fastboot@1.0-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hardware.fastboot@1.0",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.fastboot@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.fastboot@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/fastboot/1.0/ $(genDir)/android/hardware/fastboot/1.0/",
+    srcs: [
+        ":android.hardware.fastboot@1.0_hal",
+    ],
+    out: [
+        "android/hardware/fastboot/1.0/Fastboot.vts.cpp",
+        "android/hardware/fastboot/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.fastboot@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.fastboot@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/fastboot/1.0/ $(genDir)/android/hardware/fastboot/1.0/",
+    srcs: [
+        ":android.hardware.fastboot@1.0_hal",
+    ],
+    out: [
+        "android/hardware/fastboot/1.0/Fastboot.vts.h",
+        "android/hardware/fastboot/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.fastboot@1.0-vts.profiler",
+    generated_sources: ["android.hardware.fastboot@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.fastboot@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.fastboot@1.0-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hardware.fastboot@1.0",
+    ],
+}
+
diff --git a/gatekeeper/V1_0/target/Android.mk b/gatekeeper/V1_0/target/Android.mk
index ff457e6..c16419c 100644
--- a/gatekeeper/V1_0/target/Android.mk
+++ b/gatekeeper/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGatekeeperV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/gatekeeper/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/gatekeeper/V1_0/target_profiling/Android.mk b/gatekeeper/V1_0/target_profiling/Android.mk
index 603a4c1..fabf05b 100644
--- a/gatekeeper/V1_0/target_profiling/Android.mk
+++ b/gatekeeper/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGatekeeperV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/gatekeeper/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/gatekeeper/V1_0/target_replay/Android.mk b/gatekeeper/V1_0/target_replay/Android.mk
index d53e149..54ba536 100644
--- a/gatekeeper/V1_0/target_replay/Android.mk
+++ b/gatekeeper/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGatekeeperV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/gatekeeper/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/gnss/V1_0/host/binderize/Android.mk b/gnss/V1_0/host/binderize/Android.mk
index bbdbd75..2ba2e79 100644
--- a/gnss/V1_0/host/binderize/Android.mk
+++ b/gnss/V1_0/host/binderize/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGnssV1_0HostBinderize
-VTS_CONFIG_SRC_DIR := testcases/hal/gnss/V1_0/host/binderize
 include test/vts/tools/build/Android.host_config.mk
diff --git a/gnss/V1_0/host/binderize/AndroidTest.xml b/gnss/V1_0/host/binderize/AndroidTest.xml
index 3e68b03..93d51f2 100644
--- a/gnss/V1_0/host/binderize/AndroidTest.xml
+++ b/gnss/V1_0/host/binderize/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS HAL gnss Provider (Binder Mode) test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlHostTest.push" />
diff --git a/gnss/V1_0/target/Android.mk b/gnss/V1_0/target/Android.mk
index 7a60e2c..5a30e90 100644
--- a/gnss/V1_0/target/Android.mk
+++ b/gnss/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGnssV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/gnss/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/gnss/V1_0/target_profiling/Android.mk b/gnss/V1_0/target_profiling/Android.mk
index bb14b55..1cf2d1b 100644
--- a/gnss/V1_0/target_profiling/Android.mk
+++ b/gnss/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGnssV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/gnss/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/gnss/V1_1/target/AndroidTest.xml b/gnss/V1_1/target/AndroidTest.xml
index 9b262ca..f84248b 100644
--- a/gnss/V1_1/target/AndroidTest.xml
+++ b/gnss/V1_1/target/AndroidTest.xml
@@ -27,6 +27,7 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.gnss@1.1"/>
         <option name="test-timeout" value="15m"/>
         <!-- TODO(b/113276383): re-enable GetLocationLowPower when b/112611179 is fixed. -->
         <option name="exclude-filter" value="GnssHalTest.GetLocationLowPower" />
diff --git a/graphics/composer/V2_1/target/Android.mk b/graphics/composer/V2_1/target/Android.mk
index 5c3cd0b..3349682 100644
--- a/graphics/composer/V2_1/target/Android.mk
+++ b/graphics/composer/V2_1/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGraphicsComposerV2_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/graphics/composer/V2_1/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/graphics/composer/V2_1/target_profiling/Android.mk b/graphics/composer/V2_1/target_profiling/Android.mk
index 2178f89..545a560 100644
--- a/graphics/composer/V2_1/target_profiling/Android.mk
+++ b/graphics/composer/V2_1/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGraphicsComposerV2_1TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/graphics/composer/V2_1/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/graphics/composer/V2_2/target/AndroidTest.xml b/graphics/composer/V2_2/target/AndroidTest.xml
index 82d9d06..f273af3 100644
--- a/graphics/composer/V2_2/target/AndroidTest.xml
+++ b/graphics/composer/V2_2/target/AndroidTest.xml
@@ -27,6 +27,7 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.graphics.composer@2.2"/>
         <option name="test-timeout" value="1m"/>
     </test>
 </configuration>
diff --git a/graphics/mapper/V2_0/target/Android.mk b/graphics/mapper/V2_0/target/Android.mk
index 5bb66f0..9fd8d65 100644
--- a/graphics/mapper/V2_0/target/Android.mk
+++ b/graphics/mapper/V2_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGraphicsMapperV2_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/graphics/mapper/V2_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/graphics/mapper/V2_0/target_profiling/Android.mk b/graphics/mapper/V2_0/target_profiling/Android.mk
index e8edcff..3aa3a94 100644
--- a/graphics/mapper/V2_0/target_profiling/Android.mk
+++ b/graphics/mapper/V2_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalGraphicsMapperV2_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/graphics/mapper/V2_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/graphics/mapper/V2_1/target/AndroidTest.xml b/graphics/mapper/V2_1/target/AndroidTest.xml
index fe08332..2e9d11e 100644
--- a/graphics/mapper/V2_1/target/AndroidTest.xml
+++ b/graphics/mapper/V2_1/target/AndroidTest.xml
@@ -29,6 +29,7 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.graphics.mapper@2.1"/>
         <option name="test-timeout" value="5m"/>
     </test>
 </configuration>
diff --git a/graphics/mapper/V2_1/target_profiling/AndroidTest.xml b/graphics/mapper/V2_1/target_profiling/AndroidTest.xml
index c192993..016c91c 100644
--- a/graphics/mapper/V2_1/target_profiling/AndroidTest.xml
+++ b/graphics/mapper/V2_1/target_profiling/AndroidTest.xml
@@ -37,6 +37,7 @@
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
         <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.graphics.mapper@2.1"/>
         <option name="test-timeout" value="5m"/>
     </test>
 </configuration>
diff --git a/health/V1_0/target/Android.mk b/health/V1_0/target/Android.mk
index 1c42abd..f97bea2 100644
--- a/health/V1_0/target/Android.mk
+++ b/health/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalHealthV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/health/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/health/V1_0/target_profiling/Android.mk b/health/V1_0/target_profiling/Android.mk
index 20ceeee..0ce3f96 100644
--- a/health/V1_0/target_profiling/Android.mk
+++ b/health/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalHealthV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/health/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/health/V2_0/target/AndroidTest.xml b/health/V2_0/target/AndroidTest.xml
index c4b8d5f..da96a9e 100644
--- a/health/V2_0/target/AndroidTest.xml
+++ b/health/V2_0/target/AndroidTest.xml
@@ -27,6 +27,7 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.health@2.0"/>
         <option name="test-timeout" value="1m"/>
     </test>
 </configuration>
diff --git a/health/storage/V1_0/build/Android.bp b/health/storage/V1_0/build/Android.bp
new file mode 100644
index 0000000..a4f2e04
--- /dev/null
+++ b/health/storage/V1_0/build/Android.bp
@@ -0,0 +1,99 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.health.storage@1.0-vts.spec",
+    hidl_gen_args: "-r android.hardware:hardware/interfaces",
+    srcs: [
+        ":android.hardware.health.storage@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/storage/1.0/GarbageCollectCallback.vts",
+        "android/hardware/health/storage/1.0/Storage.vts",
+        "android/hardware/health/storage/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.health.storage@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.health.storage@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/health/storage/1.0/ $(genDir)/android/hardware/health/storage/1.0/",
+    srcs: [
+        ":android.hardware.health.storage@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/storage/1.0/GarbageCollectCallback.vts.cpp",
+        "android/hardware/health/storage/1.0/Storage.vts.cpp",
+        "android/hardware/health/storage/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.health.storage@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.health.storage@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/health/storage/1.0/ $(genDir)/android/hardware/health/storage/1.0/",
+    srcs: [
+        ":android.hardware.health.storage@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/storage/1.0/GarbageCollectCallback.vts.h",
+        "android/hardware/health/storage/1.0/Storage.vts.h",
+        "android/hardware/health/storage/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.health.storage@1.0-vts.driver",
+    generated_sources: ["android.hardware.health.storage@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.health.storage@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.health.storage@1.0-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hardware.health.storage@1.0",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.health.storage@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.health.storage@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/health/storage/1.0/ $(genDir)/android/hardware/health/storage/1.0/",
+    srcs: [
+        ":android.hardware.health.storage@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/storage/1.0/GarbageCollectCallback.vts.cpp",
+        "android/hardware/health/storage/1.0/Storage.vts.cpp",
+        "android/hardware/health/storage/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.health.storage@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.health.storage@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/health/storage/1.0/ $(genDir)/android/hardware/health/storage/1.0/",
+    srcs: [
+        ":android.hardware.health.storage@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/storage/1.0/GarbageCollectCallback.vts.h",
+        "android/hardware/health/storage/1.0/Storage.vts.h",
+        "android/hardware/health/storage/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.health.storage@1.0-vts.profiler",
+    generated_sources: ["android.hardware.health.storage@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.health.storage@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.health.storage@1.0-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hardware.health.storage@1.0",
+    ],
+}
+
diff --git a/tetheroffload/config/V1_0/target_profiling/Android.mk b/health/storage/V1_0/target/Android.mk
similarity index 77%
rename from tetheroffload/config/V1_0/target_profiling/Android.mk
rename to health/storage/V1_0/target/Android.mk
index ecb4cad..08ba4a3 100644
--- a/tetheroffload/config/V1_0/target_profiling/Android.mk
+++ b/health/storage/V1_0/target/Android.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2017 The Android Open Source Project
+# Copyright (C) 2018 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,6 +18,5 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := VtsHalTetherOffloadConfigV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/tetheroffload/config/V1_0/target_profiling
+LOCAL_MODULE := VtsHalHealthStorageV1_0Target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/health/storage/V1_0/target/AndroidTest.xml b/health/storage/V1_0/target/AndroidTest.xml
new file mode 100644
index 0000000..61325ea
--- /dev/null
+++ b/health/storage/V1_0/target/AndroidTest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for VTS VtsHalHealthStorageV1_0Target test cases">
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal" />
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+        <option name="abort-on-push-failure" value="false"/>
+        <option name="push-group" value="HalHidlTargetTest.push"/>
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+        <option name="test-module-name" value="VtsHalHealthStorageV1_0Target"/>
+        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalHealthStorageV1_0TargetTest/VtsHalHealthStorageV1_0TargetTest"/>
+        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalHealthStorageV1_0TargetTest/VtsHalHealthStorageV1_0TargetTest"/>
+        <option name="binary-test-type" value="hal_hidl_gtest"/>
+        <option name="test-timeout" value="5m"/>
+    </test>
+</configuration>
diff --git a/ir/V1_0/target/Android.mk b/ir/V1_0/target/Android.mk
index bd1a082..1ac9098 100644
--- a/ir/V1_0/target/Android.mk
+++ b/ir/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalIrV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/ir/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/ir/V1_0/target_profiling/Android.mk b/ir/V1_0/target_profiling/Android.mk
index 8c16ab2..b3147cd 100644
--- a/ir/V1_0/target_profiling/Android.mk
+++ b/ir/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalIrV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/ir/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/keymaster/V3_0/target/Android.mk b/keymaster/V3_0/target/Android.mk
index 2457aec..3955d2a 100644
--- a/keymaster/V3_0/target/Android.mk
+++ b/keymaster/V3_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalKeymasterV3_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/keymaster/V3_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/keymaster/V3_0/target_profiling/Android.mk b/keymaster/V3_0/target_profiling/Android.mk
index f010639..0a88365 100644
--- a/keymaster/V3_0/target_profiling/Android.mk
+++ b/keymaster/V3_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalKeymasterV3_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/keymaster/V3_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/keymaster/V3_0/target_replay/Android.mk b/keymaster/V3_0/target_replay/Android.mk
index daed556..fbca711 100644
--- a/keymaster/V3_0/target_replay/Android.mk
+++ b/keymaster/V3_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalKeymasterV3_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/keymaster/V3_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/light/V2_0/target/Android.mk b/light/V2_0/target/Android.mk
index a9b93e8..ab6bd15 100644
--- a/light/V2_0/target/Android.mk
+++ b/light/V2_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalLightV2_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/light/V2_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/light/V2_0/target_profiling/Android.mk b/light/V2_0/target_profiling/Android.mk
index 31bf8c7..b23b20a 100644
--- a/light/V2_0/target_profiling/Android.mk
+++ b/light/V2_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalLightV2_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/light/V2_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/light/V2_0/target_replay/Android.mk b/light/V2_0/target_replay/Android.mk
index a92b553..f2dd2ce 100644
--- a/light/V2_0/target_replay/Android.mk
+++ b/light/V2_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalLightV2_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/light/V2_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/media/omx/V1_0/host/Android.mk b/media/omx/V1_0/host/Android.mk
index 6244a05..3a2de59 100644
--- a/media/omx/V1_0/host/Android.mk
+++ b/media/omx/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalMediaOmxV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/media/omx/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/media/omx/V1_0/host/AndroidTest.xml b/media/omx/V1_0/host/AndroidTest.xml
index 3e82fed..297ccd6 100644
--- a/media/omx/V1_0/host/AndroidTest.xml
+++ b/media/omx/V1_0/host/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS VtsHalMediaOmxV1_0Host test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="true"/>
         <option name="push-group" value="HalHidlHostTest.push"/>
diff --git a/media/omx/V1_0/host_omxstore/Android.mk b/media/omx/V1_0/host_omxstore/Android.mk
index 7f178b2..b24c794 100644
--- a/media/omx/V1_0/host_omxstore/Android.mk
+++ b/media/omx/V1_0/host_omxstore/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalMediaOmxStoreV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/media/omx/V1_0/host_omxstore
 include test/vts/tools/build/Android.host_config.mk
diff --git a/memtrack/V1_0/target/Android.mk b/memtrack/V1_0/target/Android.mk
index 7469bcf..9f6001f 100644
--- a/memtrack/V1_0/target/Android.mk
+++ b/memtrack/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalMemtrackV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/memtrack/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/memtrack/V1_0/target_profiling/Android.mk b/memtrack/V1_0/target_profiling/Android.mk
index 9e3c1d6..1532cf1 100644
--- a/memtrack/V1_0/target_profiling/Android.mk
+++ b/memtrack/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalMemtrackV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/memtrack/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/memtrack/V1_0/target_replay/Android.mk b/memtrack/V1_0/target_replay/Android.mk
index fba0bca..ee233e5 100644
--- a/memtrack/V1_0/target_replay/Android.mk
+++ b/memtrack/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalMemtrackV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/memtrack/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/neuralnetworks/V1_0/target/Android.mk b/neuralnetworks/V1_0/target/Android.mk
index 521fc01..eb11d00 100644
--- a/neuralnetworks/V1_0/target/Android.mk
+++ b/neuralnetworks/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNeuralnetworksV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/neuralnetworks/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/neuralnetworks/V1_0/target_profiling/Android.mk b/neuralnetworks/V1_0/target_profiling/Android.mk
index 37d2011..c953ec4 100644
--- a/neuralnetworks/V1_0/target_profiling/Android.mk
+++ b/neuralnetworks/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNeuralnetworksV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/neuralnetworks/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/neuralnetworks/V1_2/build/Android.bp b/neuralnetworks/V1_2/build/Android.bp
new file mode 100644
index 0000000..6c40021
--- /dev/null
+++ b/neuralnetworks/V1_2/build/Android.bp
@@ -0,0 +1,104 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.neuralnetworks@1.2-vts.spec",
+    hidl_gen_args: "-r android.hardware:hardware/interfaces",
+    srcs: [
+        ":android.hardware.neuralnetworks@1.2_hal",
+    ],
+    out: [
+        "android/hardware/neuralnetworks/1.2/Device.vts",
+        "android/hardware/neuralnetworks/1.2/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.neuralnetworks@1.2-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.neuralnetworks@1.2 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/neuralnetworks/1.2/ $(genDir)/android/hardware/neuralnetworks/1.2/",
+    srcs: [
+        ":android.hardware.neuralnetworks@1.2_hal",
+    ],
+    out: [
+        "android/hardware/neuralnetworks/1.2/Device.vts.cpp",
+        "android/hardware/neuralnetworks/1.2/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.neuralnetworks@1.2-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.neuralnetworks@1.2 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/neuralnetworks/1.2/ $(genDir)/android/hardware/neuralnetworks/1.2/",
+    srcs: [
+        ":android.hardware.neuralnetworks@1.2_hal",
+    ],
+    out: [
+        "android/hardware/neuralnetworks/1.2/Device.vts.h",
+        "android/hardware/neuralnetworks/1.2/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.neuralnetworks@1.2-vts.driver",
+    generated_sources: ["android.hardware.neuralnetworks@1.2-vts.driver_genc++"],
+    generated_headers: ["android.hardware.neuralnetworks@1.2-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.neuralnetworks@1.2-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [
+        "android.hardware.neuralnetworks@1.0-vts.driver",
+        "android.hardware.neuralnetworks@1.1-vts.driver",
+    ],
+    static_libs: [
+        "android.hardware.neuralnetworks@1.0",
+        "android.hardware.neuralnetworks@1.1",
+        "android.hardware.neuralnetworks@1.2",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.neuralnetworks@1.2-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.neuralnetworks@1.2 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/neuralnetworks/1.2/ $(genDir)/android/hardware/neuralnetworks/1.2/",
+    srcs: [
+        ":android.hardware.neuralnetworks@1.2_hal",
+    ],
+    out: [
+        "android/hardware/neuralnetworks/1.2/Device.vts.cpp",
+        "android/hardware/neuralnetworks/1.2/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.neuralnetworks@1.2-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.neuralnetworks@1.2 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/neuralnetworks/1.2/ $(genDir)/android/hardware/neuralnetworks/1.2/",
+    srcs: [
+        ":android.hardware.neuralnetworks@1.2_hal",
+    ],
+    out: [
+        "android/hardware/neuralnetworks/1.2/Device.vts.h",
+        "android/hardware/neuralnetworks/1.2/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.neuralnetworks@1.2-vts.profiler",
+    generated_sources: ["android.hardware.neuralnetworks@1.2-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.neuralnetworks@1.2-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.neuralnetworks@1.2-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [
+        "android.hardware.neuralnetworks@1.0-vts.profiler",
+        "android.hardware.neuralnetworks@1.1-vts.profiler",
+    ],
+    static_libs: [
+        "android.hardware.neuralnetworks@1.0",
+        "android.hardware.neuralnetworks@1.1",
+        "android.hardware.neuralnetworks@1.2",
+    ],
+}
+
diff --git a/nfc/V1_0/host/binderize/Android.mk b/nfc/V1_0/host/binderize/Android.mk
index 25fce74..ead4fb3 100644
--- a/nfc/V1_0/host/binderize/Android.mk
+++ b/nfc/V1_0/host/binderize/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNfcV1_0HostBinderize
-VTS_CONFIG_SRC_DIR := testcases/hal/nfc/V1_0/host/binderize
 include test/vts/tools/build/Android.host_config.mk
diff --git a/nfc/V1_0/host/binderize/AndroidTest.xml b/nfc/V1_0/host/binderize/AndroidTest.xml
index 430c3b2..5332f93 100644
--- a/nfc/V1_0/host/binderize/AndroidTest.xml
+++ b/nfc/V1_0/host/binderize/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS HAL NFC (Binder Mode) test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlHostTest.push" />
diff --git a/nfc/V1_0/host/passthrough/Android.mk b/nfc/V1_0/host/passthrough/Android.mk
index b8f330f..b07edfc 100644
--- a/nfc/V1_0/host/passthrough/Android.mk
+++ b/nfc/V1_0/host/passthrough/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNfcV1_0HostPassthrough
-VTS_CONFIG_SRC_DIR := testcases/hal/nfc/V1_0/host/passthrough
 include test/vts/tools/build/Android.host_config.mk
diff --git a/nfc/V1_0/host/passthrough/AndroidTest.xml b/nfc/V1_0/host/passthrough/AndroidTest.xml
index b2d6b62..ad77818 100644
--- a/nfc/V1_0/host/passthrough/AndroidTest.xml
+++ b/nfc/V1_0/host/passthrough/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS HAL NFC (Passthrough) test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlHostTest.push" />
diff --git a/nfc/V1_0/host_profiling/Android.mk b/nfc/V1_0/host_profiling/Android.mk
index 1cdd983..51a18ae 100644
--- a/nfc/V1_0/host_profiling/Android.mk
+++ b/nfc/V1_0/host_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNfcV1_0HostProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/nfc/V1_0/host_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/nfc/V1_0/target/Android.mk b/nfc/V1_0/target/Android.mk
index 52fd286..b50d1bc 100644
--- a/nfc/V1_0/target/Android.mk
+++ b/nfc/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNfcV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/nfc/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/nfc/V1_0/target_profiling/Android.mk b/nfc/V1_0/target_profiling/Android.mk
index 909f990..b8c03a1 100644
--- a/nfc/V1_0/target_profiling/Android.mk
+++ b/nfc/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNfcV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/nfc/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/nfc/V1_0/target_replay/Android.mk b/nfc/V1_0/target_replay/Android.mk
index 75a685c..547b51c 100644
--- a/nfc/V1_0/target_replay/Android.mk
+++ b/nfc/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNfcV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/nfc/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/nfc/V1_1/target/Android.mk b/nfc/V1_1/target/Android.mk
index 3a0a340..f6d78b0 100644
--- a/nfc/V1_1/target/Android.mk
+++ b/nfc/V1_1/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNfcV1_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/nfc/V1_1/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/nfc/V1_1/target_profiling/Android.mk b/nfc/V1_1/target_profiling/Android.mk
index bad3c63..b43ba71 100644
--- a/nfc/V1_1/target_profiling/Android.mk
+++ b/nfc/V1_1/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalNfcV1_1TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/nfc/V1_1/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/oemlock/V1_0/target/Android.mk b/oemlock/V1_0/target/Android.mk
index d66d3b5..797bb7b 100644
--- a/oemlock/V1_0/target/Android.mk
+++ b/oemlock/V1_0/target/Android.mk
@@ -19,6 +19,5 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalOemLockV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/oemlock/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
 
diff --git a/oemlock/V1_0/target_profiling/Android.mk b/oemlock/V1_0/target_profiling/Android.mk
index b6163f8..d015b49 100644
--- a/oemlock/V1_0/target_profiling/Android.mk
+++ b/oemlock/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalOemLockV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/oemlock/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_0/target/Android.mk b/power/V1_0/target/Android.mk
index 6057ecf..989d2b4 100644
--- a/power/V1_0/target/Android.mk
+++ b/power/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalPowerV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_0/target_profiling/Android.mk b/power/V1_0/target_profiling/Android.mk
index c20df37..eda6514 100644
--- a/power/V1_0/target_profiling/Android.mk
+++ b/power/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalPowerV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_0/target_replay/Android.mk b/power/V1_0/target_replay/Android.mk
index aac686a..6202ad0 100644
--- a/power/V1_0/target_replay/Android.mk
+++ b/power/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalPowerV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_1/target/Android.mk b/power/V1_1/target/Android.mk
index c7f3216..3825282 100644
--- a/power/V1_1/target/Android.mk
+++ b/power/V1_1/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalPowerV1_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_1/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_1/target_profiling/Android.mk b/power/V1_1/target_profiling/Android.mk
index a337e81..96eb874 100644
--- a/power/V1_1/target_profiling/Android.mk
+++ b/power/V1_1/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalPowerV1_1TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_1/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/power/V1_2/target/AndroidTest.xml b/power/V1_2/target/AndroidTest.xml
index fe17d0f..4ec3342 100644
--- a/power/V1_2/target/AndroidTest.xml
+++ b/power/V1_2/target/AndroidTest.xml
@@ -27,6 +27,7 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.power@1.2"/>
         <option name="test-timeout" value="1m"/>
     </test>
 </configuration>
diff --git a/power/V1_3/target/Android.mk b/power/V1_3/target/Android.mk
index 812df84..f81b1ef 100644
--- a/power/V1_3/target/Android.mk
+++ b/power/V1_3/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalPowerV1_3Target
-VTS_CONFIG_SRC_DIR := testcases/hal/power/V1_3/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/radio/V1_0/host/Android.mk b/radio/V1_0/host/Android.mk
index 353da11..0ad0bab 100644
--- a/radio/V1_0/host/Android.mk
+++ b/radio/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalRadioV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/radio/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/radio/V1_0/host/AndroidTest.xml b/radio/V1_0/host/AndroidTest.xml
index fd12d6c..d174b30 100644
--- a/radio/V1_0/host/AndroidTest.xml
+++ b/radio/V1_0/host/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS VtsHalRadioV1_0Host test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlHostTest.push"/>
diff --git a/radio/V1_0/target/radio/Android.mk b/radio/V1_0/target/radio/Android.mk
index 29c1bff..639666b 100644
--- a/radio/V1_0/target/radio/Android.mk
+++ b/radio/V1_0/target/radio/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalRadioV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/radio/V1_0/target/radio
 include test/vts/tools/build/Android.host_config.mk
diff --git a/radio/V1_0/target/radio/AndroidTest.xml b/radio/V1_0/target/radio/AndroidTest.xml
index 55c2ce4..73a1c88 100644
--- a/radio/V1_0/target/radio/AndroidTest.xml
+++ b/radio/V1_0/target/radio/AndroidTest.xml
@@ -19,6 +19,10 @@
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlTargetTest.push"/>
     </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
+        <option name="enable-radio-log" value="true"/>
+        <option name="restore-radio-log" value="true"/>
+    </target_preparer>
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
         <option name="test-module-name" value="VtsHalRadioV1_0Target"/>
         <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalRadioV1_0TargetTest/VtsHalRadioV1_0TargetTest"/>
diff --git a/radio/V1_0/target/sap/Android.mk b/radio/V1_0/target/sap/Android.mk
index 850187a..08a4ba9 100644
--- a/radio/V1_0/target/sap/Android.mk
+++ b/radio/V1_0/target/sap/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSapV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/radio/V1_0/target/sap
 include test/vts/tools/build/Android.host_config.mk
diff --git a/radio/V1_0/target_profiling/radio/Android.mk b/radio/V1_0/target_profiling/radio/Android.mk
index 9925675..93894ad 100644
--- a/radio/V1_0/target_profiling/radio/Android.mk
+++ b/radio/V1_0/target_profiling/radio/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalRadioV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/radio/V1_0/target_profiling/radio
 include test/vts/tools/build/Android.host_config.mk
diff --git a/radio/V1_0/target_profiling/sap/Android.mk b/radio/V1_0/target_profiling/sap/Android.mk
index 0d601f2..c354cea 100644
--- a/radio/V1_0/target_profiling/sap/Android.mk
+++ b/radio/V1_0/target_profiling/sap/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSapV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/radio/V1_0/target_profiling/sap
 include test/vts/tools/build/Android.host_config.mk
diff --git a/radio/V1_1/target/radio/Android.mk b/radio/V1_1/target/radio/Android.mk
index bcc71d2..92670d2 100644
--- a/radio/V1_1/target/radio/Android.mk
+++ b/radio/V1_1/target/radio/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalRadioV1_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/radio/V1_1/target/radio
 include test/vts/tools/build/Android.host_config.mk
diff --git a/radio/V1_1/target/radio/AndroidTest.xml b/radio/V1_1/target/radio/AndroidTest.xml
index 08fc1fa..266b368 100644
--- a/radio/V1_1/target/radio/AndroidTest.xml
+++ b/radio/V1_1/target/radio/AndroidTest.xml
@@ -19,6 +19,10 @@
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlTargetTest.push"/>
     </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
+        <option name="enable-radio-log" value="true"/>
+        <option name="restore-radio-log" value="true"/>
+    </target_preparer>
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
         <option name="test-module-name" value="VtsHalRadioV1_1Target"/>
         <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalRadioV1_1TargetTest/VtsHalRadioV1_1TargetTest"/>
diff --git a/radio/V1_2/target/radio/Android.mk b/radio/V1_2/target/radio/Android.mk
index 546b2e8..03bf318 100644
--- a/radio/V1_2/target/radio/Android.mk
+++ b/radio/V1_2/target/radio/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalRadioV1_2Target
-VTS_CONFIG_SRC_DIR := testcases/hal/radio/V1_2/target/radio
 include test/vts/tools/build/Android.host_config.mk
diff --git a/radio/V1_2/target/radio/AndroidTest.xml b/radio/V1_2/target/radio/AndroidTest.xml
index ba0223e..fc815fb 100644
--- a/radio/V1_2/target/radio/AndroidTest.xml
+++ b/radio/V1_2/target/radio/AndroidTest.xml
@@ -19,6 +19,10 @@
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlTargetTest.push"/>
     </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
+        <option name="enable-radio-log" value="true"/>
+        <option name="restore-radio-log" value="true"/>
+    </target_preparer>
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
         <option name="test-module-name" value="VtsHalRadioV1_2Target"/>
         <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalRadioV1_2TargetTest/VtsHalRadioV1_2TargetTest"/>
diff --git a/radio/V1_3/build/Android.bp b/radio/V1_3/build/Android.bp
new file mode 100644
index 0000000..dafc352
--- /dev/null
+++ b/radio/V1_3/build/Android.bp
@@ -0,0 +1,122 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.radio@1.3-vts.spec",
+    hidl_gen_args: "-r android.hardware:hardware/interfaces",
+    srcs: [
+        ":android.hardware.radio@1.3_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.3/Radio.vts",
+        "android/hardware/radio/1.3/RadioIndication.vts",
+        "android/hardware/radio/1.3/RadioResponse.vts",
+        "android/hardware/radio/1.3/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.radio@1.3-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.radio@1.3 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/radio/1.3/ $(genDir)/android/hardware/radio/1.3/",
+    srcs: [
+        ":android.hardware.radio@1.3_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.3/Radio.vts.cpp",
+        "android/hardware/radio/1.3/RadioIndication.vts.cpp",
+        "android/hardware/radio/1.3/RadioResponse.vts.cpp",
+        "android/hardware/radio/1.3/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.radio@1.3-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.radio@1.3 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/radio/1.3/ $(genDir)/android/hardware/radio/1.3/",
+    srcs: [
+        ":android.hardware.radio@1.3_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.3/Radio.vts.h",
+        "android/hardware/radio/1.3/RadioIndication.vts.h",
+        "android/hardware/radio/1.3/RadioResponse.vts.h",
+        "android/hardware/radio/1.3/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.radio@1.3-vts.driver",
+    generated_sources: ["android.hardware.radio@1.3-vts.driver_genc++"],
+    generated_headers: ["android.hardware.radio@1.3-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.radio@1.3-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [
+        "android.hardware.radio@1.0-vts.driver",
+        "android.hardware.radio@1.1-vts.driver",
+        "android.hardware.radio@1.2-vts.driver",
+        "android.hidl.safe_union@1.0-vts.driver",
+    ],
+    static_libs: [
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.1",
+        "android.hardware.radio@1.2",
+        "android.hardware.radio@1.3",
+        "android.hidl.safe_union@1.0",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.radio@1.3-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.radio@1.3 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/radio/1.3/ $(genDir)/android/hardware/radio/1.3/",
+    srcs: [
+        ":android.hardware.radio@1.3_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.3/Radio.vts.cpp",
+        "android/hardware/radio/1.3/RadioIndication.vts.cpp",
+        "android/hardware/radio/1.3/RadioResponse.vts.cpp",
+        "android/hardware/radio/1.3/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.radio@1.3-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.radio@1.3 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/radio/1.3/ $(genDir)/android/hardware/radio/1.3/",
+    srcs: [
+        ":android.hardware.radio@1.3_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.3/Radio.vts.h",
+        "android/hardware/radio/1.3/RadioIndication.vts.h",
+        "android/hardware/radio/1.3/RadioResponse.vts.h",
+        "android/hardware/radio/1.3/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.radio@1.3-vts.profiler",
+    generated_sources: ["android.hardware.radio@1.3-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.radio@1.3-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.radio@1.3-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [
+        "android.hardware.radio@1.0-vts.profiler",
+        "android.hardware.radio@1.1-vts.profiler",
+        "android.hardware.radio@1.2-vts.profiler",
+        "android.hidl.safe_union@1.0-vts.profiler",
+    ],
+    static_libs: [
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.1",
+        "android.hardware.radio@1.2",
+        "android.hardware.radio@1.3",
+        "android.hidl.safe_union@1.0",
+    ],
+}
+
diff --git a/renderscript/V1_0/target/Android.mk b/renderscript/V1_0/target/Android.mk
index 27cb87f..0016822 100644
--- a/renderscript/V1_0/target/Android.mk
+++ b/renderscript/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalRenderscriptV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/renderscript/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/renderscript/V1_0/target_profiling/Android.mk b/renderscript/V1_0/target_profiling/Android.mk
index fcf1e57..bcfac33 100644
--- a/renderscript/V1_0/target_profiling/Android.mk
+++ b/renderscript/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalRenderscriptV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/renderscript/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/script/configure/test_case_creator.py b/script/configure/test_case_creator.py
index 04bfeb4..85c0873 100755
--- a/script/configure/test_case_creator.py
+++ b/script/configure/test_case_creator.py
@@ -51,7 +51,6 @@
         test_plan: string, the plan that the test belongs to.
         test_dir: string, test case absolute directory.
         time_out: string, timeout of the test, default is 1m.
-        is_profiling: boolean, whether to create a profiling test case.
         stop_runtime: boolean whether to stop framework before the test.
         build_top: string, equal to environment variable ANDROID_BUILD_TOP.
         vts_spec_parser: tools that generates and parses vts spec with hidl-gen.
@@ -75,7 +74,6 @@
     def LaunchTestCase(self,
                        test_type,
                        time_out='1m',
-                       is_profiling=False,
                        is_replay=False,
                        stop_runtime=False,
                        update_only=False,
@@ -90,7 +88,6 @@
         Args:
           test_type: type of the test.
           time_out: timeout of the test.
-          is_profiling: whether to create a profiling test case.
           stop_runtime: whether to stop framework before the test.
           update_only: flag to only update existing test configure.
           mapping_dir_path: directory that stores the cts_hal_mapping files.
@@ -101,7 +98,6 @@
         """
         self._test_type = test_type
         self._time_out = time_out
-        self._is_profiling = is_profiling
         self._is_replay = is_replay
         self._stop_runtime = stop_runtime
         self._mapping_dir_path = mapping_dir_path
@@ -121,9 +117,6 @@
         if is_replay:
             self._test_name = self._test_module_name + 'Replay'
             self._test_plan = 'vts-hal-replay'
-        if is_profiling:
-            self._test_name = self._test_module_name + 'Profiling'
-            self._test_plan = 'vts-hal-profiling'
         if self._test_type == 'adapter':
             self._test_plan = 'vts-hal-adapter'
 
@@ -173,7 +166,7 @@
         """Get the name of host side test script file ."""
         test_script_name = self._test_module_name + 'Test.py'
         return os.path.join(
-            self.GetHalTestCasePath(ignore_profiling=True), test_script_name)
+            self.GetHalTestCasePath(), test_script_name)
 
     def GetVtsHalTestModuleName(self):
         """Get the test model name with format VtsHalHalNameVersionTestType."""
@@ -203,13 +196,11 @@
         return os.path.join(self._build_top, self._path_root,
                             self.GetHalPath(), self._hal_version)
 
-    def GetHalTestCasePath(self, ignore_profiling=False):
+    def GetHalTestCasePath(self):
         """Get the directory that stores the test case."""
         test_dir = self._test_type
         if self._is_replay:
             test_dir = test_dir + '_replay'
-        if self._is_profiling and not ignore_profiling:
-            test_dir = test_dir + '_profiling'
         return os.path.join(self._build_top, self._test_config_dir,
                             self.GetHalPath(), self.GetHalVersionToken(),
                             test_dir)
@@ -346,28 +337,16 @@
                     'name': 'push-group',
                     'value': 'HalHidlHostTest.push'
                 })
-            elif self._is_profiling:
-                ET.SubElement(
-                    file_pusher, 'option', {
-                        'name': 'push-group',
-                        'value': 'HalHidlTargetProfilingTest.push'
-                    })
             else:
                 ET.SubElement(file_pusher, 'option', {
                     'name': 'push-group',
                     'value': 'HalHidlTargetTest.push'
                 })
         else:
-            if self._is_profiling:
-                ET.SubElement(file_pusher, 'option', {
-                    'name': 'push-group',
-                    'value': 'HalHidlHostProfilingTest.push'
-                })
-            else:
-                ET.SubElement(file_pusher, 'option', {
-                    'name': 'push-group',
-                    'value': 'HalHidlHostTest.push'
-                })
+            ET.SubElement(file_pusher, 'option', {
+                'name': 'push-group',
+                'value': 'HalHidlHostTest.push'
+            })
 
         imported_package_lists = self._vts_spec_parser.ImportedPackagesList(
             self._hal_name, self._hal_version)
@@ -410,27 +389,6 @@
                     'value': push_driver
                 })
 
-        if self._is_profiling:
-            if self._test_type == 'target':
-                ET.SubElement(file_pusher, 'option', {
-                    'name': 'cleanup',
-                    'value': 'true'
-                })
-            for imported_package in imported_package_lists:
-                profiler_package_name = imported_package + '-vts.profiler.so'
-                push_profiler = VTS_LIB_PUSH_TEMPLATE_32.format(
-                    lib_name=profiler_package_name)
-                ET.SubElement(file_pusher, 'option', {
-                    'name': 'push',
-                    'value': push_profiler
-                })
-                push_profiler = VTS_LIB_PUSH_TEMPLATE_64.format(
-                    lib_name=profiler_package_name)
-                ET.SubElement(file_pusher, 'option', {
-                    'name': 'push',
-                    'value': push_profiler
-                })
-
     def GenerateTestOptionConfigure(self, test):
         """Create the test option configuration within AndroidTest.xml
 
@@ -500,12 +458,6 @@
                 'value': test_script_file
             })
 
-        if self._is_profiling:
-            ET.SubElement(test, 'option', {
-                'name': 'enable-profiling',
-                'value': 'true'
-            })
-
         ET.SubElement(test, 'option', {
             'name': 'test-timeout',
             'value': self._time_out
diff --git a/script/launch_hal_test.py b/script/launch_hal_test.py
index 9cbff00..d4debe9 100755
--- a/script/launch_hal_test.py
+++ b/script/launch_hal_test.py
@@ -40,12 +40,10 @@
   --test_binary_file: Test binary file for target-side HAL test.
   --test_script_file: Test script file for host-side HAL test.
   --test_config_dir: Directory path to store the test configure files.
-  --enable_profiling: Whether this is a profiling test.
   --replay: Whether this is a replay test.
   --disable_stop_runtime: Whether to stop framework before the test.
 Example:
   python launch_hal_test.py android.hardware.nfc@1.0
-  python launch_hal_test.py --enable_profiling android.hardware.nfc@1.0
   python launch_hal_test.py --test_type=host --time_out=5m android.hardware.nfc@1.0
   python launch_hal_test.py --package_root com.qualcomm.qti
   --path_root vendor/qcom/proprietary/interfaces/com/qualcomm/qti/
@@ -68,12 +66,6 @@
         default='1m',
         help='Timeout for the test, default is 1m.')
     parser.add_argument(
-        '--enable_profiling',
-        dest='enable_profiling',
-        action='store_true',
-        required=False,
-        help='Whether to create profiling test.')
-    parser.add_argument(
         '--replay',
         dest='is_replay',
         action='store_true',
@@ -158,7 +150,6 @@
             args.test_type,
             args.time_out,
             is_replay=args.is_replay,
-            is_profiling=args.enable_profiling,
             stop_runtime=stop_runtime,
             test_binary_file=args.test_binary_file,
             test_script_file=args.test_script_file,
@@ -169,7 +160,7 @@
               args.hal_package_name)
         sys.exit(1)
 
-    if args.test_type == "host" or args.enable_profiling:
+    if args.test_type == "host":
         build_rule_gen = BuildRuleGen(
             Constant.BP_WARNING_HEADER, args.package_root, args.path_root)
         name_version = args.hal_package_name[len(args.package_root) + 1:]
diff --git a/script/update_makefiles.py b/script/update_makefiles.py
index ce20dce..a84b666 100755
--- a/script/update_makefiles.py
+++ b/script/update_makefiles.py
@@ -21,15 +21,41 @@
 2. files matching: test/vts-testcase/hal/<hal_name>/<hal_version>/Android.bp
 
 Usage:
-  cd test/vts-testcase/hal; ./script/update_makefiles.py
+  To update build files for all HALs:
+     cd test/vts-testcase/hal; ./script/update_makefiles.py
+  To update build files for a specific HAL:
+     cd test/vts-testcase/hal; ./script/update_makefiles.py --hal nfc@1.0
 """
+import argparse
+import re
 
 from build.build_rule_gen import BuildRuleGen
 from utils.const import Constant
 
 if __name__ == "__main__":
+    parser = argparse.ArgumentParser(
+        description='Update build files for HAL driver/profiler.')
+    parser.add_argument(
+        '--hal',
+        dest='hal_package_name',
+        required=False,
+        help='hal package name (e.g. nfc@1.0).')
+    args = parser.parse_args()
+
     print 'Updating build rules.'
     build_rule_gen = BuildRuleGen(Constant.BP_WARNING_HEADER,
                                   Constant.HAL_PACKAGE_PREFIX,
                                   Constant.HAL_INTERFACE_PATH)
-    build_rule_gen.UpdateBuildRule(Constant.VTS_HAL_TEST_CASE_PATH)
+
+    if args.hal_package_name:
+        regex = re.compile(Constant.HAL_PACKAGE_NAME_PATTERN)
+        result = re.match(regex, args.hal_package_name)
+        if not result:
+            print 'Invalid hal package name. Exiting..'
+            sys.exit(1)
+        package_name, version = args.hal_package_name.split('@')
+        hal_list = [(package_name, version)]
+        build_rule_gen.UpdateHalDirBuildRule(hal_list,
+                                             Constant.VTS_HAL_TEST_CASE_PATH)
+    else:
+        build_rule_gen.UpdateBuildRule(Constant.VTS_HAL_TEST_CASE_PATH)
diff --git a/secure_element/V1_0/target/Android.mk b/secure_element/V1_0/target/Android.mk
index 5f95e3c..2944e92 100644
--- a/secure_element/V1_0/target/Android.mk
+++ b/secure_element/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSecureElementV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/secure_element/config/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/secure_element/V1_0/target_profiling/Android.mk b/secure_element/V1_0/target_profiling/Android.mk
index ab8aef2..289ecd7 100644
--- a/secure_element/V1_0/target_profiling/Android.mk
+++ b/secure_element/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSecureElementV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/secure_element/config/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/sensors/V1_0/host/Android.mk b/sensors/V1_0/host/Android.mk
index 55dc449..cfd7e03 100644
--- a/sensors/V1_0/host/Android.mk
+++ b/sensors/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSensorsV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/sensors/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/sensors/V1_0/host/AndroidTest.xml b/sensors/V1_0/host/AndroidTest.xml
index 95e258a..04a06be 100644
--- a/sensors/V1_0/host/AndroidTest.xml
+++ b/sensors/V1_0/host/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS VtsHalSensorsV1_0Host test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlHostTest.push"/>
diff --git a/sensors/V1_0/host_profiling/Android.mk b/sensors/V1_0/host_profiling/Android.mk
index 74fff3b..c965596 100644
--- a/sensors/V1_0/host_profiling/Android.mk
+++ b/sensors/V1_0/host_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSensorsV1_0HostProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/sensors/V1_0/host_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/sensors/V1_0/target/Android.mk b/sensors/V1_0/target/Android.mk
index 64bb97d..1e68b12 100644
--- a/sensors/V1_0/target/Android.mk
+++ b/sensors/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSensorsV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/sensors/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/sensors/V1_0/target_profiling/Android.mk b/sensors/V1_0/target_profiling/Android.mk
index a989354..24dc7b3 100644
--- a/sensors/V1_0/target_profiling/Android.mk
+++ b/sensors/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSensorsV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/sensors/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/soundtrigger/V2_0/target/Android.mk b/soundtrigger/V2_0/target/Android.mk
index 09e4d6e..e05dfc2 100644
--- a/soundtrigger/V2_0/target/Android.mk
+++ b/soundtrigger/V2_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSoundtriggerV2_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/soundtrigger/V2_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/soundtrigger/V2_0/target_profiling/Android.mk b/soundtrigger/V2_0/target_profiling/Android.mk
index 8b203c3..9563d0f 100644
--- a/soundtrigger/V2_0/target_profiling/Android.mk
+++ b/soundtrigger/V2_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalSoundtriggerV2_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/soundtrigger/V2_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/soundtrigger/V2_1/target/AndroidTest.xml b/soundtrigger/V2_1/target/AndroidTest.xml
index 80413a9..0b4e682 100644
--- a/soundtrigger/V2_1/target/AndroidTest.xml
+++ b/soundtrigger/V2_1/target/AndroidTest.xml
@@ -27,11 +27,7 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
-        <option name="exclude-coverage-path" value="hardware/interfaces/audio/" />
-        <option name="exclude-coverage-path" value="hardware/libhardware/" />
-        <option name="exclude-coverage-path" value="hardware/qcom/audio/post_proc/" />
-        <option name="exclude-coverage-path" value="frameworks/av/media/libnbaio/" />
-        <option name="exclude-coverage-path" value="system/media/audio_utils/" />
+        <option name="precondition-lshal" value="android.hardware.soundtrigger@2.1"/>
         <option name="precondition-file-path-prefix" value="/*/lib/hw/sound_trigger.primary.*" />
         <option name="test-timeout" value="5m"/>
     </test>
diff --git a/soundtrigger/V2_1/target_profiling/AndroidTest.xml b/soundtrigger/V2_1/target_profiling/AndroidTest.xml
index 7d1687f..e01d354 100644
--- a/soundtrigger/V2_1/target_profiling/AndroidTest.xml
+++ b/soundtrigger/V2_1/target_profiling/AndroidTest.xml
@@ -35,11 +35,7 @@
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
         <option name="enable-profiling" value="true"/>
-        <option name="exclude-coverage-path" value="hardware/interfaces/audio/" />
-        <option name="exclude-coverage-path" value="hardware/libhardware/" />
-        <option name="exclude-coverage-path" value="hardware/qcom/audio/post_proc/" />
-        <option name="exclude-coverage-path" value="frameworks/av/media/libnbaio/" />
-        <option name="exclude-coverage-path" value="system/media/audio_utils/" />
+        <option name="precondition-lshal" value="android.hardware.soundtrigger@2.1"/>
         <option name="precondition-file-path-prefix" value="/*/lib/hw/sound_trigger.primary.*" />
         <option name="test-timeout" value="5m"/>
     </test>
diff --git a/system/hidl/safe_union/V1_0/build/Android.bp b/system/hidl/safe_union/V1_0/build/Android.bp
new file mode 100644
index 0000000..2df9de8
--- /dev/null
+++ b/system/hidl/safe_union/V1_0/build/Android.bp
@@ -0,0 +1,89 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hidl.safe_union@1.0-vts.spec",
+    hidl_gen_args: "-r android.hidl:system/libhidl/transport",
+    srcs: [
+        ":android.hidl.safe_union@1.0_hal",
+    ],
+    out: [
+        "android/hidl/safe_union/1.0/types.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hidl.safe_union@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hidl:system/libhidl/transport android.hidl.safe_union@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hidl/safe_union/1.0/ $(genDir)/android/hidl/safe_union/1.0/",
+    srcs: [
+        ":android.hidl.safe_union@1.0_hal",
+    ],
+    out: [
+        "android/hidl/safe_union/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hidl.safe_union@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hidl:system/libhidl/transport android.hidl.safe_union@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hidl/safe_union/1.0/ $(genDir)/android/hidl/safe_union/1.0/",
+    srcs: [
+        ":android.hidl.safe_union@1.0_hal",
+    ],
+    out: [
+        "android/hidl/safe_union/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hidl.safe_union@1.0-vts.driver",
+    generated_sources: ["android.hidl.safe_union@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hidl.safe_union@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hidl.safe_union@1.0-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hidl.safe_union@1.0",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hidl.safe_union@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hidl:system/libhidl/transport android.hidl.safe_union@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hidl/safe_union/1.0/ $(genDir)/android/hidl/safe_union/1.0/",
+    srcs: [
+        ":android.hidl.safe_union@1.0_hal",
+    ],
+    out: [
+        "android/hidl/safe_union/1.0/types.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hidl.safe_union@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hidl:system/libhidl/transport android.hidl.safe_union@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hidl/safe_union/1.0/ $(genDir)/android/hidl/safe_union/1.0/",
+    srcs: [
+        ":android.hidl.safe_union@1.0_hal",
+    ],
+    out: [
+        "android/hidl/safe_union/1.0/types.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hidl.safe_union@1.0-vts.profiler",
+    generated_sources: ["android.hidl.safe_union@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hidl.safe_union@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hidl.safe_union@1.0-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [],
+    static_libs: [
+        "android.hidl.safe_union@1.0",
+    ],
+}
+
diff --git a/tests/safeunion/V1_0/build/Android.bp b/tests/safeunion/V1_0/build/Android.bp
new file mode 100644
index 0000000..8dc3b00
--- /dev/null
+++ b/tests/safeunion/V1_0/build/Android.bp
@@ -0,0 +1,100 @@
+// This file was auto-generated. Do not edit manually.
+// Use launch_hal_test.py or update_makefiles.py in test/vts-testcase/hal/script/ to generate this file.
+
+// Generate .vts spec files.
+hal2vts {
+    name: "android.hardware.tests.safeunion@1.0-vts.spec",
+    hidl_gen_args: "-r android.hardware:hardware/interfaces",
+    srcs: [
+        ":android.hardware.tests.safeunion@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/safeunion/1.0/OtherInterface.vts",
+        "android/hardware/tests/safeunion/1.0/SafeUnion.vts",
+    ],
+}
+
+// Build VTS driver.
+genrule {
+    name: "android.hardware.tests.safeunion@1.0-vts.driver_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.tests.safeunion@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/tests/safeunion/1.0/ $(genDir)/android/hardware/tests/safeunion/1.0/",
+    srcs: [
+        ":android.hardware.tests.safeunion@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/safeunion/1.0/OtherInterface.vts.cpp",
+        "android/hardware/tests/safeunion/1.0/SafeUnion.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.safeunion@1.0-vts.driver_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.tests.safeunion@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/tests/safeunion/1.0/ $(genDir)/android/hardware/tests/safeunion/1.0/",
+    srcs: [
+        ":android.hardware.tests.safeunion@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/safeunion/1.0/OtherInterface.vts.h",
+        "android/hardware/tests/safeunion/1.0/SafeUnion.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.tests.safeunion@1.0-vts.driver",
+    generated_sources: ["android.hardware.tests.safeunion@1.0-vts.driver_genc++"],
+    generated_headers: ["android.hardware.tests.safeunion@1.0-vts.driver_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.safeunion@1.0-vts.driver_genc++_headers"],
+    defaults: ["VtsHalDriverDefaults"],
+    shared_libs: [
+        "android.hidl.safe_union@1.0-vts.driver",
+    ],
+    static_libs: [
+        "android.hardware.tests.safeunion@1.0",
+        "android.hidl.safe_union@1.0",
+    ],
+}
+
+// Build VTS profiler.
+genrule {
+    name: "android.hardware.tests.safeunion@1.0-vts.profiler_genc++",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.tests.safeunion@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/tests/safeunion/1.0/ $(genDir)/android/hardware/tests/safeunion/1.0/",
+    srcs: [
+        ":android.hardware.tests.safeunion@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/safeunion/1.0/OtherInterface.vts.cpp",
+        "android/hardware/tests/safeunion/1.0/SafeUnion.vts.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.safeunion@1.0-vts.profiler_genc++_headers",
+    tools: ["hidl-gen", "vtsc"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lvts -r android.hardware:hardware/interfaces android.hardware.tests.safeunion@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/tests/safeunion/1.0/ $(genDir)/android/hardware/tests/safeunion/1.0/",
+    srcs: [
+        ":android.hardware.tests.safeunion@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/safeunion/1.0/OtherInterface.vts.h",
+        "android/hardware/tests/safeunion/1.0/SafeUnion.vts.h",
+    ],
+}
+
+cc_library_shared {
+    name: "android.hardware.tests.safeunion@1.0-vts.profiler",
+    generated_sources: ["android.hardware.tests.safeunion@1.0-vts.profiler_genc++"],
+    generated_headers: ["android.hardware.tests.safeunion@1.0-vts.profiler_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.safeunion@1.0-vts.profiler_genc++_headers"],
+    defaults: ["VtsHalProfilerDefaults"],
+    shared_libs: [
+        "android.hidl.safe_union@1.0-vts.profiler",
+    ],
+    static_libs: [
+        "android.hardware.tests.safeunion@1.0",
+        "android.hidl.safe_union@1.0",
+    ],
+}
+
diff --git a/tetheroffload/config/V1_0/target/Android.mk b/tetheroffload/config/V1_0/target/Android.mk
index c025bd9..a7be4d3 100644
--- a/tetheroffload/config/V1_0/target/Android.mk
+++ b/tetheroffload/config/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalTetherOffloadConfigV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/tetheroffload/config/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/tetheroffload/config/V1_0/target_profiling/AndroidTest.xml b/tetheroffload/config/V1_0/target_profiling/AndroidTest.xml
deleted file mode 100644
index dccb00e..0000000
--- a/tetheroffload/config/V1_0/target_profiling/AndroidTest.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for VTS VtsHalTetherOffloadConfigV1_0TargetProfiling test cases">
-    <option name="config-descriptor:metadata" key="plan" value="vts-misc" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="abort-on-push-failure" value="false"/>
-        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
-        <option name="cleanup" value="true"/>
-        <option name="push" value="DATA/lib/android.hardware.tetheroffload.config@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.tetheroffload.config@1.0-vts.profiler.so"/>
-        <option name="push" value="DATA/lib64/android.hardware.tetheroffload.config@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.tetheroffload.config@1.0-vts.profiler.so"/>
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
-        <option name="test-module-name" value="VtsHalTetherOffloadConfigV1_0TargetProfiling"/>
-        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalTetheroffloadConfigV1_0TargetTest/VtsHalTetheroffloadConfigV1_0TargetTest"/>
-        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalTetheroffloadConfigV1_0TargetTest/VtsHalTetheroffloadConfigV1_0TargetTest"/>
-        <option name="binary-test-type" value="hal_hidl_gtest"/>
-        <option name="binary-test-disable-framework" value="true"/>
-        <option name="enable-profiling" value="true"/>
-        <option name="test-timeout" value="15m"/>
-    </test>
-</configuration>
diff --git a/tetheroffload/control/V1_0/target/Android.mk b/tetheroffload/control/V1_0/target/Android.mk
index b5b34ce..b3070a7 100644
--- a/tetheroffload/control/V1_0/target/Android.mk
+++ b/tetheroffload/control/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalTetherOffloadControlV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/tetheroffload/control/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/tetheroffload/control/V1_0/target_profiling/Android.mk b/tetheroffload/control/V1_0/target_profiling/Android.mk
deleted file mode 100644
index 03ca4c3..0000000
--- a/tetheroffload/control/V1_0/target_profiling/Android.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := VtsHalTetherOffloadControlV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/tetheroffload/control/V1_0/target_profiling
-include test/vts/tools/build/Android.host_config.mk
diff --git a/tetheroffload/control/V1_0/target_profiling/AndroidTest.xml b/tetheroffload/control/V1_0/target_profiling/AndroidTest.xml
deleted file mode 100644
index 5931064..0000000
--- a/tetheroffload/control/V1_0/target_profiling/AndroidTest.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for VTS VtsHalTetherOffloadConfigV1_0TargetProfiling test cases">
-    <option name="config-descriptor:metadata" key="plan" value="vts-misc" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="abort-on-push-failure" value="false"/>
-        <option name="push-group" value="HalHidlTargetProfilingTest.push"/>
-        <option name="cleanup" value="true"/>
-        <option name="push" value="DATA/lib/android.hardware.tetheroffload.control@1.0-vts.profiler.so->/data/local/tmp/32/android.hardware.tetheroffload.control@1.0-vts.profiler.so"/>
-        <option name="push" value="DATA/lib64/android.hardware.tetheroffload.control@1.0-vts.profiler.so->/data/local/tmp/64/android.hardware.tetheroffload.control@1.0-vts.profiler.so"/>
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
-        <option name="test-module-name" value="VtsHalTetherOffloadControlV1_0TargetProfiling"/>
-        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalTetheroffloadControlV1_0TargetTest/VtsHalTetheroffloadControlV1_0TargetTest"/>
-        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalTetheroffloadControlV1_0TargetTest/VtsHalTetheroffloadControlV1_0TargetTest"/>
-        <option name="binary-test-type" value="hal_hidl_gtest"/>
-        <option name="binary-test-disable-framework" value="true"/>
-        <option name="enable-profiling" value="true"/>
-        <option name="test-timeout" value="30m"/>
-        <option name="exclude-filter" value="OffloadControlHidlTest.SetDataLimitNonZeroOk"/>
-        <option name="exclude-filter" value="OffloadControlHidlTest.SetDataLimitZeroOk"/>
-    </test>
-</configuration>
diff --git a/thermal/V1_0/target/Android.mk b/thermal/V1_0/target/Android.mk
index 0d260e3..31d0c03 100644
--- a/thermal/V1_0/target/Android.mk
+++ b/thermal/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalThermalV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/thermal/V1_0/target_profiling/Android.mk b/thermal/V1_0/target_profiling/Android.mk
index 3aebc82..132f7dd 100644
--- a/thermal/V1_0/target_profiling/Android.mk
+++ b/thermal/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalThermalV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/thermal/V1_0/target_replay/Android.mk b/thermal/V1_0/target_replay/Android.mk
index afe0919..c6413d6 100644
--- a/thermal/V1_0/target_replay/Android.mk
+++ b/thermal/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalThermalV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/thermal/V1_0/target_stress/Android.mk b/thermal/V1_0/target_stress/Android.mk
index 023cfa5..6130e34 100644
--- a/thermal/V1_0/target_stress/Android.mk
+++ b/thermal/V1_0/target_stress/Android.mk
@@ -21,5 +21,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := ThermalHidlTargetStressTest
-VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_0/target_stress
 include test/vts/tools/build/Android.host_config.mk
diff --git a/thermal/V1_1/target/Android.mk b/thermal/V1_1/target/Android.mk
index 1d209ea..ddfa252 100644
--- a/thermal/V1_1/target/Android.mk
+++ b/thermal/V1_1/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalThermalV1_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_1/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/thermal/V1_1/target_profiling/Android.mk b/thermal/V1_1/target_profiling/Android.mk
index 29257c3..996e574 100644
--- a/thermal/V1_1/target_profiling/Android.mk
+++ b/thermal/V1_1/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalThermalV1_1TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/thermal/V1_1/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/treble/platform_version/Android.mk b/treble/platform_version/Android.mk
index 7d1e096..8003142 100644
--- a/treble/platform_version/Android.mk
+++ b/treble/platform_version/Android.mk
@@ -21,5 +21,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsTreblePlatformVersionTest
-VTS_CONFIG_SRC_DIR := testcases/hal/treble/platform_version
 include test/vts/tools/build/Android.host_config.mk
diff --git a/treble/vintf/Android.bp b/treble/vintf/Android.bp
index 1357047..83dba52 100644
--- a/treble/vintf/Android.bp
+++ b/treble/vintf/Android.bp
@@ -62,6 +62,7 @@
     defaults: ["vts_treble_vintf_test_defaults"],
     srcs: [
         "DeviceManifestTest.cpp",
+        "DeviceMatrixTest.cpp",
         "SingleManifestTest.cpp",
     ],
 }
@@ -93,6 +94,7 @@
     defaults: ["vts_treble_vintf_test_defaults"],
     srcs: [
         "DeviceManifestTest.cpp",
+        "DeviceMatrixTest.cpp",
         "SingleManifestTest.cpp",
         "SystemVendorTest.cpp",
     ],
diff --git a/treble/vintf/DeviceMatrixTest.cpp b/treble/vintf/DeviceMatrixTest.cpp
new file mode 100644
index 0000000..86b4fd5
--- /dev/null
+++ b/treble/vintf/DeviceMatrixTest.cpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "DeviceMatrixTest.h"
+
+#include <android-base/properties.h>
+#include <vintf/VintfObject.h>
+
+using android::base::GetProperty;
+
+namespace android {
+namespace vintf {
+namespace testing {
+
+const string kVndkVersionProp{"ro.vndk.version"};
+
+void DeviceMatrixTest::SetUp() {
+  VtsTrebleVintfTestBase::SetUp();
+
+  vendor_matrix_ = VintfObject::GetDeviceCompatibilityMatrix();
+  ASSERT_NE(nullptr, vendor_matrix_)
+      << "Failed to get device compatibility matrix." << endl;
+}
+
+TEST_F(DeviceMatrixTest, VndkVersion) {
+  std::string syspropVndkVersion = GetProperty(kVndkVersionProp, "");
+  ASSERT_NE("", syspropVndkVersion)
+      << kVndkVersionProp << " must not be empty.";
+  std::string vintfVndkVersion = vendor_matrix_->getVendorNdkVersion();
+  ASSERT_NE("", vintfVndkVersion)
+      << "Device compatibility matrix does not declare proper VNDK version.";
+
+  EXPECT_EQ(syspropVndkVersion, vintfVndkVersion)
+      << "VNDK version does not match: " << kVndkVersionProp << "="
+      << syspropVndkVersion << ", device compatibility matrix requires "
+      << vintfVndkVersion << ".";
+}
+
+}  // namespace testing
+}  // namespace vintf
+}  // namespace android
diff --git a/treble/vintf/DeviceMatrixTest.h b/treble/vintf/DeviceMatrixTest.h
new file mode 100644
index 0000000..5942b77
--- /dev/null
+++ b/treble/vintf/DeviceMatrixTest.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef VTS_TREBLE_VINTF_TEST_DEVICE_MATRIX_TEST_H_
+#define VTS_TREBLE_VINTF_TEST_DEVICE_MATRIX_TEST_H_
+
+#include "VtsTrebleVintfTestBase.h"
+
+#include <gtest/gtest.h>
+
+namespace android {
+namespace vintf {
+namespace testing {
+
+// Test for device matrix only.
+
+class DeviceMatrixTest : public VtsTrebleVintfTestBase {
+ public:
+  virtual ~DeviceMatrixTest() {}
+  virtual void SetUp() override;
+
+  MatrixPtr vendor_matrix_;
+};
+
+}  // namespace testing
+}  // namespace vintf
+}  // namespace android
+
+#endif  // VTS_TREBLE_VINTF_TEST_DEVICE_MATRIX_TEST_H_
diff --git a/treble/vintf/SingleManifestTest.cpp b/treble/vintf/SingleManifestTest.cpp
index 4662d48..ecd5a81 100644
--- a/treble/vintf/SingleManifestTest.cpp
+++ b/treble/vintf/SingleManifestTest.cpp
@@ -32,7 +32,7 @@
 // For devices that launched <= Android O-MR1, systems/hals/implementations
 // were delivered to companies which either don't start up on device boot.
 bool LegacyAndExempt(const FQName &fq_name) {
-  return GetShippingApiLevel() <= 27 && !IsGoogleDefinedIface(fq_name);
+  return GetShippingApiLevel() <= 27 && !IsAndroidPlatformInterface(fq_name);
 }
 
 void FailureHalMissing(const FQName &fq_name) {
@@ -115,7 +115,7 @@
         // for both versions (mFoo1_1 != nullptr => you have 1.1)
         // and a 1.0 client still works with the 1.1 interface.
 
-        if (!IsGoogleDefinedIface(fq_name)) {
+        if (!IsAndroidPlatformInterface(fq_name)) {
           // This isn't the case for extensions of core Google interfaces.
           return;
         }
@@ -208,7 +208,7 @@
     // See HalsAreServed. These are always retrieved through the base interface
     // and if it is not a google defined interface, it must be an extension of
     // one.
-    if (!IsGoogleDefinedIface(fq_name)) return;
+    if (!IsAndroidPlatformInterface(fq_name)) return;
 
     const FQName lowest_name =
         fq_name.withVersion(fq_name.getPackageMajorVersion(), 0);
@@ -248,7 +248,7 @@
     // and if it is not a google defined interface, it must be an extension of
     // one.
     if (transport == Transport::PASSTHROUGH &&
-        (!IsGoogleDefinedIface(fq_name) ||
+        (!IsAndroidPlatformInterface(fq_name) ||
          fq_name.getPackageMinorVersion() != 0)) {
       return;
     }
@@ -286,7 +286,7 @@
         FailureHashMissing(fq_iface_name);
       }
 
-      if (IsGoogleDefinedIface(fq_iface_name)) {
+      if (IsAndroidPlatformInterface(fq_iface_name)) {
         set<string> released_hashes = ReleasedHashes(fq_iface_name);
         EXPECT_NE(released_hashes.find(hash), released_hashes.end())
             << "Hash not found. This interface was not released." << endl
diff --git a/treble/vintf/SystemVendorTest.cpp b/treble/vintf/SystemVendorTest.cpp
index 26e3eed..083aed9 100644
--- a/treble/vintf/SystemVendorTest.cpp
+++ b/treble/vintf/SystemVendorTest.cpp
@@ -31,27 +31,76 @@
 
 using std::endl;
 
+// Tests that device manifest and framework compatibility matrix are compatible.
+TEST_F(SystemVendorTest, DeviceManifestFrameworkMatrixCompatibility) {
+  auto device_manifest = VintfObject::GetDeviceHalManifest();
+  ASSERT_NE(device_manifest, nullptr) << "Failed to get device HAL manifest.";
+  auto fwk_matrix = VintfObject::GetFrameworkCompatibilityMatrix();
+  ASSERT_NE(fwk_matrix, nullptr)
+      << "Failed to get framework compatibility matrix.";
+
+  string error;
+  EXPECT_TRUE(device_manifest->checkCompatibility(*fwk_matrix, &error))
+      << error;
+}
+
+// Tests that framework manifest and device compatibility matrix are compatible.
+TEST_F(SystemVendorTest, FrameworkManifestDeviceMatrixCompatibility) {
+  auto fwk_manifest = VintfObject::GetFrameworkHalManifest();
+  ASSERT_NE(fwk_manifest, nullptr) << "Failed to get framework HAL manifest.";
+  auto device_matrix = VintfObject::GetDeviceCompatibilityMatrix();
+  ASSERT_NE(device_matrix, nullptr)
+      << "Failed to get device compatibility matrix.";
+
+  string error;
+  EXPECT_TRUE(fwk_manifest->checkCompatibility(*device_matrix, &error))
+      << error;
+}
+
+// Tests that framework compatibility matrix and runtime info are compatible.
+// AVB version is not a compliance requirement.
+TEST_F(SystemVendorTest, FrameworkMatrixDeviceRuntimeCompatibility) {
+  auto fwk_matrix = VintfObject::GetFrameworkCompatibilityMatrix();
+  ASSERT_NE(fwk_matrix, nullptr)
+      << "Failed to get framework compatibility matrix.";
+  auto runtime_info = VintfObject::GetRuntimeInfo();
+  ASSERT_NE(nullptr, runtime_info) << "Failed to get runtime info.";
+
+  string error;
+  EXPECT_TRUE(runtime_info->checkCompatibility(
+      *fwk_matrix, &error,
+      ::android::vintf::CheckFlags::ENABLE_ALL_CHECKS.disableAvb()
+          .disableKernel()))
+      << error;
+}
+
+// Tests that runtime kernel matches requirements in compatibility matrix.
+// This includes testing kernel version and kernel configurations.
+TEST_F(SystemVendorTest, KernelCompatibility) {
+  auto fwk_matrix = VintfObject::GetFrameworkCompatibilityMatrix();
+  ASSERT_NE(fwk_matrix, nullptr)
+      << "Failed to get framework compatibility matrix.";
+  auto runtime_info = VintfObject::GetRuntimeInfo();
+  ASSERT_NE(nullptr, runtime_info) << "Failed to get runtime info.";
+
+  string error;
+  EXPECT_TRUE(runtime_info->checkCompatibility(
+      *fwk_matrix, &error,
+      ::android::vintf::CheckFlags::DISABLE_ALL_CHECKS.enableKernel()))
+      << error;
+}
+
 // Tests that vendor and framework are compatible.
+// If any of the other tests in SystemVendorTest fails, this test will fail as
+// well. This is a sanity check in case the sub-tests do not cover some
+// checks.
+// AVB version is not a compliance requirement.
 TEST_F(SystemVendorTest, VendorFrameworkCompatibility) {
   string error;
-
-  EXPECT_TRUE(vendor_manifest_->checkCompatibility(
-      *VintfObject::GetFrameworkCompatibilityMatrix(), &error))
-      << error;
-
-  EXPECT_TRUE(fwk_manifest_->checkCompatibility(
-      *VintfObject::GetDeviceCompatibilityMatrix(), &error))
-      << error;
-
-  // AVB version is not a compliance requirement.
-  EXPECT_TRUE(VintfObject::GetRuntimeInfo()->checkCompatibility(
-      *VintfObject::GetFrameworkCompatibilityMatrix(), &error,
-      ::android::vintf::DISABLE_AVB_CHECK))
-      << error;
-
   EXPECT_EQ(android::vintf::COMPATIBLE,
             VintfObject::CheckCompatibility(
-                {}, &error, ::android::vintf::DISABLE_AVB_CHECK))
+                {}, &error,
+                ::android::vintf::CheckFlags::ENABLE_ALL_CHECKS.disableAvb()))
       << error;
 }
 
@@ -64,18 +113,22 @@
 // SingleManifestTest.ServedHwbinderHalsAreInManifest because some HALs may
 // refuse to provide its PID, and the partition cannot be inferred.
 TEST_F(SystemVendorTest, ServedHwbinderHalsAreInManifest) {
-  std::set<std::string> manifest_hwbinder_hals_;
+  auto device_manifest = VintfObject::GetDeviceHalManifest();
+  ASSERT_NE(device_manifest, nullptr) << "Failed to get device HAL manifest.";
+  auto fwk_manifest = VintfObject::GetFrameworkHalManifest();
+  ASSERT_NE(fwk_manifest, nullptr) << "Failed to get framework HAL manifest.";
 
-  insert(&manifest_hwbinder_hals_, GetHwbinderHals(fwk_manifest_));
-  insert(&manifest_hwbinder_hals_, GetHwbinderHals(vendor_manifest_));
+  std::set<std::string> manifest_hwbinder_hals;
+
+  insert(&manifest_hwbinder_hals, GetHwbinderHals(fwk_manifest));
+  insert(&manifest_hwbinder_hals, GetHwbinderHals(device_manifest));
 
   Return<void> ret = default_manager_->list([&](const auto &list) {
     for (const auto &name : list) {
       // TODO(b/73774955): use standardized parsing code for fqinstancename
       if (std::string(name).find(IBase::descriptor) == 0) continue;
 
-      EXPECT_NE(manifest_hwbinder_hals_.find(name),
-                manifest_hwbinder_hals_.end())
+      EXPECT_NE(manifest_hwbinder_hals.find(name), manifest_hwbinder_hals.end())
           << name << " is being served, but it is not in a manifest.";
     }
   });
@@ -85,7 +138,10 @@
 // Tests that deprecated HALs are not served, unless a higher, non-deprecated
 // minor version is served.
 TEST_F(SystemVendorTest, NoDeprecatedHalsOnManager) {
-  if (vendor_manifest_->level() == Level::UNSPECIFIED) {
+  auto device_manifest = VintfObject::GetDeviceHalManifest();
+  ASSERT_NE(device_manifest, nullptr) << "Failed to get device HAL manifest.";
+
+  if (device_manifest->level() == Level::UNSPECIFIED) {
     // On a legacy device, no HALs are deprecated.
     return;
   }
diff --git a/treble/vintf/SystemVendorTest.h b/treble/vintf/SystemVendorTest.h
index 847acd8..fbde2da 100644
--- a/treble/vintf/SystemVendorTest.h
+++ b/treble/vintf/SystemVendorTest.h
@@ -28,21 +28,7 @@
 // device manifest.
 class SystemVendorTest : public VtsTrebleVintfTestBase {
  public:
-  virtual ~SystemVendorTest() {}
-  virtual void SetUp() override {
-    VtsTrebleVintfTestBase::SetUp();
-
-    vendor_manifest_ = VintfObject::GetDeviceHalManifest();
-    ASSERT_NE(vendor_manifest_, nullptr)
-        << "Failed to get vendor HAL manifest." << endl;
-
-    fwk_manifest_ = VintfObject::GetFrameworkHalManifest();
-    ASSERT_NE(fwk_manifest_, nullptr)
-        << "Failed to get framework HAL manifest." << endl;
-  }
-
-  HalManifestPtr vendor_manifest_;
-  HalManifestPtr fwk_manifest_;
+  virtual ~SystemVendorTest(){};
 };
 
 }  // namespace testing
diff --git a/treble/vintf/utils.cpp b/treble/vintf/utils.cpp
index 59b3e5f..cb8839f 100644
--- a/treble/vintf/utils.cpp
+++ b/treble/vintf/utils.cpp
@@ -97,9 +97,9 @@
   return "";
 }
 
-// Returns true iff HAL interface is Google-defined.
-bool IsGoogleDefinedIface(const FQName &fq_iface_name) {
-  // Package roots are only known for Google-defined packages.
+// Returns true iff HAL interface is Android platform.
+bool IsAndroidPlatformInterface(const FQName &fq_iface_name) {
+  // Package roots are only known for Android platform packages.
   return !PackageRoot(fq_iface_name).empty();
 }
 
@@ -148,5 +148,4 @@
   }
   *os << to_string(v->type()) << " manifest";
 }
-void PrintTo(nullptr_t, ostream *os) { *os << "nullptr"; }
 }  // namespace std
diff --git a/treble/vintf/utils.h b/treble/vintf/utils.h
index 8c9c0db..2ad580e 100644
--- a/treble/vintf/utils.h
+++ b/treble/vintf/utils.h
@@ -46,6 +46,7 @@
 using android::vintf::HalManifest;
 using android::vintf::Level;
 using android::vintf::ManifestHal;
+using android::vintf::RuntimeInfo;
 using android::vintf::SchemaType;
 using android::vintf::to_string;
 using android::vintf::Transport;
@@ -64,6 +65,8 @@
                                        const string& instance_name, Transport)>;
 using HashCharArray = hidl_array<unsigned char, 32>;
 using HalManifestPtr = std::shared_ptr<const HalManifest>;
+using MatrixPtr = std::shared_ptr<const CompatibilityMatrix>;
+using RuntimeInfoPtr = std::shared_ptr<const RuntimeInfo>;
 
 // Path to directory on target containing test data.
 extern const string kDataDir;
@@ -85,8 +88,8 @@
 // otherwise.
 const string PackageRoot(const FQName& fq_iface_name);
 
-// Returns true iff HAL interface is Google-defined.
-bool IsGoogleDefinedIface(const FQName& fq_iface_name);
+// Returns true iff HAL interface is Android platform.
+bool IsAndroidPlatformInterface(const FQName& fq_iface_name);
 
 // Returns the set of released hashes for a given HAL interface.
 set<string> ReleasedHashes(const FQName& fq_iface_name);
@@ -117,7 +120,6 @@
 // Allows GTest to print pointers with a human readable string.
 namespace std {
 void PrintTo(const android::vintf::testing::HalManifestPtr& v, ostream* os);
-void PrintTo(nullptr_t, ostream* os);
 template <typename T>
 void PrintTo(const T* v, ostream* os) {
   *os << android::hardware::details::toHexString<uintptr_t>(
diff --git a/treble/vintf/vts_treble_vintf_test_o_mr1.cpp b/treble/vintf/vts_treble_vintf_test_o_mr1.cpp
index 4ee7dd6..3ae3d0c 100644
--- a/treble/vintf/vts_treble_vintf_test_o_mr1.cpp
+++ b/treble/vintf/vts_treble_vintf_test_o_mr1.cpp
@@ -70,7 +70,7 @@
   string hal_name = fq_iface_name.package();
   // Radio-releated and non-Google HAL interfaces are given exemptions.
   return exempt_hals_.find(hal_name) != exempt_hals_.end() ||
-         !IsGoogleDefinedIface(fq_iface_name);
+         !IsAndroidPlatformInterface(fq_iface_name);
 }
 
 class VtsTrebleVintfTest : public ::testing::Test {
@@ -230,7 +230,7 @@
       }
       string hash = hash_chain[i];
 
-      if (IsGoogleDefinedIface(fq_iface_name)) {
+      if (IsAndroidPlatformInterface(fq_iface_name)) {
         set<string> released_hashes = ReleasedHashes(fq_iface_name);
         EXPECT_NE(released_hashes.find(hash), released_hashes.end())
             << "Hash not found. This interface was not released." << endl
diff --git a/tv/cec/V1_0/host/Android.mk b/tv/cec/V1_0/host/Android.mk
index b992cd6..ecb5111 100644
--- a/tv/cec/V1_0/host/Android.mk
+++ b/tv/cec/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalTvCecV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/tv/cec/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/cec/V1_0/host_profiling/Android.mk b/tv/cec/V1_0/host_profiling/Android.mk
index 66c23ab..2a61a7e 100644
--- a/tv/cec/V1_0/host_profiling/Android.mk
+++ b/tv/cec/V1_0/host_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalTvCecV1_0HostProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/tv/cec/V1_0/host_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/V1_0/host/Android.mk b/tv/input/V1_0/host/Android.mk
index d83909a..8cb5fdd 100644
--- a/tv/input/V1_0/host/Android.mk
+++ b/tv/input/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalTvInputV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/tv/input/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/V1_0/host_profiling/Android.mk b/tv/input/V1_0/host_profiling/Android.mk
index a4fd611..399f706 100644
--- a/tv/input/V1_0/host_profiling/Android.mk
+++ b/tv/input/V1_0/host_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalTvInputV1_0HostProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/tv/input/V1_0/host_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/V1_0/target/Android.mk b/tv/input/V1_0/target/Android.mk
index 97ba1af..4d3396e 100644
--- a/tv/input/V1_0/target/Android.mk
+++ b/tv/input/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalTvInputV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/tv/input/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/V1_0/target_profiling/Android.mk b/tv/input/V1_0/target_profiling/Android.mk
index dbba4e1..f187d59 100644
--- a/tv/input/V1_0/target_profiling/Android.mk
+++ b/tv/input/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalTvInputV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/tv/input/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/usb/V1_0/target/Android.mk b/usb/V1_0/target/Android.mk
index 31d2a85..2999b57 100644
--- a/usb/V1_0/target/Android.mk
+++ b/usb/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalUsbV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/usb/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/usb/V1_0/target_profiling/Android.mk b/usb/V1_0/target_profiling/Android.mk
index 6f35895..f9c1498 100644
--- a/usb/V1_0/target_profiling/Android.mk
+++ b/usb/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalUsbV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/usb/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/usb/V1_0/target_replay/Android.mk b/usb/V1_0/target_replay/Android.mk
index f73e6a8..0a77f50 100644
--- a/usb/V1_0/target_replay/Android.mk
+++ b/usb/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalUsbV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/usb/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/usb/V1_1/target/Android.mk b/usb/V1_1/target/Android.mk
index f7e4333..5b41c14 100644
--- a/usb/V1_1/target/Android.mk
+++ b/usb/V1_1/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalUsbV1_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/usb/V1_1/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/usb/gadget/V1_0/host/Android.mk b/usb/gadget/V1_0/host/Android.mk
index 669276d..a85e394 100644
--- a/usb/gadget/V1_0/host/Android.mk
+++ b/usb/gadget/V1_0/host/Android.mk
@@ -19,6 +19,5 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalUsbGadgetV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/usb/gadget/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
 
diff --git a/usb/gadget/V1_0/host/AndroidTest.xml b/usb/gadget/V1_0/host/AndroidTest.xml
index 9a9e3c4..6a7af1c 100644
--- a/usb/gadget/V1_0/host/AndroidTest.xml
+++ b/usb/gadget/V1_0/host/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VtsHalUsbGadgetV1_0Host test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-default" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="push-group" value="HostDrivenTest.push" />
     </target_preparer>
diff --git a/vibrator/V1_0/host/Android.mk b/vibrator/V1_0/host/Android.mk
index d7d253f..3e748cf 100644
--- a/vibrator/V1_0/host/Android.mk
+++ b/vibrator/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVibratorV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/host/AndroidTest.xml b/vibrator/V1_0/host/AndroidTest.xml
index 758a8ea..f8232fb 100644
--- a/vibrator/V1_0/host/AndroidTest.xml
+++ b/vibrator/V1_0/host/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS VtsHalVibratorV1_0Host test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlHostTest.push"/>
diff --git a/vibrator/V1_0/host_profiling/Android.mk b/vibrator/V1_0/host_profiling/Android.mk
index cb5719a..641411d 100644
--- a/vibrator/V1_0/host_profiling/Android.mk
+++ b/vibrator/V1_0/host_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVibratorV1_0HostProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/host_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/target/Android.mk b/vibrator/V1_0/target/Android.mk
index 9ba8846..4f4ee12 100644
--- a/vibrator/V1_0/target/Android.mk
+++ b/vibrator/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVibratorV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/target_profiling/Android.mk b/vibrator/V1_0/target_profiling/Android.mk
index d6b67eb..376dfe6 100644
--- a/vibrator/V1_0/target_profiling/Android.mk
+++ b/vibrator/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVibratorV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_0/target_replay/Android.mk b/vibrator/V1_0/target_replay/Android.mk
index dff0176..fc9be42 100644
--- a/vibrator/V1_0/target_replay/Android.mk
+++ b/vibrator/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVibratorV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vibrator/V1_1/target/Android.mk b/vibrator/V1_1/target/Android.mk
index a621f01..4133b76 100644
--- a/vibrator/V1_1/target/Android.mk
+++ b/vibrator/V1_1/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVibratorV1_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/vibrator/V1_1/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/V1_0/host/Android.mk b/vr/V1_0/host/Android.mk
index bbb2e6c..6ab1655 100644
--- a/vr/V1_0/host/Android.mk
+++ b/vr/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVrV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/vr/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/V1_0/host/AndroidTest.xml b/vr/V1_0/host/AndroidTest.xml
index 1525614..d0dee56 100644
--- a/vr/V1_0/host/AndroidTest.xml
+++ b/vr/V1_0/host/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS VtsHalVrV1_0Host test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-staging-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="false"/>
         <option name="push-group" value="HalHidlHostTest.push"/>
diff --git a/vr/V1_0/target/Android.mk b/vr/V1_0/target/Android.mk
index 0667055..5f1177d 100644
--- a/vr/V1_0/target/Android.mk
+++ b/vr/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVrV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/vr/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/V1_0/target_profiling/Android.mk b/vr/V1_0/target_profiling/Android.mk
index e6c20c9..0df40e8 100644
--- a/vr/V1_0/target_profiling/Android.mk
+++ b/vr/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVrV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/vr/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/V1_0/target_replay/Android.mk b/vr/V1_0/target_replay/Android.mk
index feed713..1ed5957 100644
--- a/vr/V1_0/target_replay/Android.mk
+++ b/vr/V1_0/target_replay/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalVrV1_0TargetReplay
-VTS_CONFIG_SRC_DIR := testcases/hal/vr/V1_0/target_replay
 include test/vts/tools/build/Android.host_config.mk
diff --git a/weaver/V1_0/target/Android.mk b/weaver/V1_0/target/Android.mk
index d43ddba..dc0a646 100644
--- a/weaver/V1_0/target/Android.mk
+++ b/weaver/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWeaverV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/weaver/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/weaver/V1_0/target_profiling/Android.mk b/weaver/V1_0/target_profiling/Android.mk
index 83cf51e..afbb063 100644
--- a/weaver/V1_0/target_profiling/Android.mk
+++ b/weaver/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWeaverV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/weaver/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/V1_0/host/Android.mk b/wifi/V1_0/host/Android.mk
index aafaebb..1a6231b 100644
--- a/wifi/V1_0/host/Android.mk
+++ b/wifi/V1_0/host/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiV1_0Host
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/V1_0/host
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/V1_0/host/AndroidTest.xml b/wifi/V1_0/host/AndroidTest.xml
index 3047266..81bf7a4 100644
--- a/wifi/V1_0/host/AndroidTest.xml
+++ b/wifi/V1_0/host/AndroidTest.xml
@@ -15,6 +15,7 @@
 -->
 <configuration description="Config for VTS VtsHalWifiV1_0Host test cases">
     <option name="config-descriptor:metadata" key="plan" value="vts-hal" />
+    <option name="config-descriptor:metadata" key="plan" value="vts-hal-host" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
         <option name="abort-on-push-failure" value="true"/>
         <option name="push-group" value="HalHidlHostTest.push"/>
diff --git a/wifi/V1_0/target/nan/Android.mk b/wifi/V1_0/target/nan/Android.mk
index c5567c5..65d4a85 100644
--- a/wifi/V1_0/target/nan/Android.mk
+++ b/wifi/V1_0/target/nan/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiNanV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/V1_0/target/nan
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/V1_0/target_profiling/base/Android.mk b/wifi/V1_0/target_profiling/base/Android.mk
index 7b9cd9b..b73c9eb 100644
--- a/wifi/V1_0/target_profiling/base/Android.mk
+++ b/wifi/V1_0/target_profiling/base/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/V1_0/target_profiling/base
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/V1_0/target_profiling/nan/Android.mk b/wifi/V1_0/target_profiling/nan/Android.mk
index 197fe86..d37ad72 100644
--- a/wifi/V1_0/target_profiling/nan/Android.mk
+++ b/wifi/V1_0/target_profiling/nan/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiNanV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/V1_0/target_profiling/nan
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/V1_1/target/base/Android.mk b/wifi/V1_1/target/base/Android.mk
index fe7cc16..0a75238 100644
--- a/wifi/V1_1/target/base/Android.mk
+++ b/wifi/V1_1/target/base/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiV1_1Target
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/V1_1/target/base
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/V1_1/target_profiling/base/Android.mk b/wifi/V1_1/target_profiling/base/Android.mk
index 07726c3..e29d166 100644
--- a/wifi/V1_1/target_profiling/base/Android.mk
+++ b/wifi/V1_1/target_profiling/base/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiV1_1TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/V1_1/target_profiling/base
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/offload/V1_0/target/Android.mk b/wifi/offload/V1_0/target/Android.mk
index b53ece1..d3b25fc 100644
--- a/wifi/offload/V1_0/target/Android.mk
+++ b/wifi/offload/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiOffloadV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/offload/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/supplicant/V1_0/target/Android.mk b/wifi/supplicant/V1_0/target/Android.mk
index f0c4e5e..31d2785 100644
--- a/wifi/supplicant/V1_0/target/Android.mk
+++ b/wifi/supplicant/V1_0/target/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiSupplicantV1_0Target
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/supplicant/V1_0/target
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/supplicant/V1_0/target_profiling/Android.mk b/wifi/supplicant/V1_0/target_profiling/Android.mk
index 89127ed..a867f60 100644
--- a/wifi/supplicant/V1_0/target_profiling/Android.mk
+++ b/wifi/supplicant/V1_0/target_profiling/Android.mk
@@ -19,5 +19,4 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsHalWifiSupplicantV1_0TargetProfiling
-VTS_CONFIG_SRC_DIR := testcases/hal/wifi/supplicant/V1_0/target_profiling
 include test/vts/tools/build/Android.host_config.mk
diff --git a/wifi/supplicant/V1_1/target/AndroidTest.xml b/wifi/supplicant/V1_1/target/AndroidTest.xml
index a3be44d..9f07e87 100644
--- a/wifi/supplicant/V1_1/target/AndroidTest.xml
+++ b/wifi/supplicant/V1_1/target/AndroidTest.xml
@@ -27,6 +27,7 @@
         <option name="binary-test-type" value="hal_hidl_gtest"/>
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.wifi.supplicant@1.1"/>
         <option name="test-timeout" value="30m"/>
     </test>
 </configuration>
diff --git a/wifi/supplicant/V1_1/target_profiling/AndroidTest.xml b/wifi/supplicant/V1_1/target_profiling/AndroidTest.xml
index 110d46c..5506c8d 100644
--- a/wifi/supplicant/V1_1/target_profiling/AndroidTest.xml
+++ b/wifi/supplicant/V1_1/target_profiling/AndroidTest.xml
@@ -33,6 +33,7 @@
         <option name="binary-test-disable-framework" value="true"/>
         <option name="binary-test-stop-native-servers" value="true"/>
         <option name="enable-profiling" value="true"/>
+        <option name="precondition-lshal" value="android.hardware.wifi.supplicant@1.1"/>
         <option name="test-timeout" value="30m"/>
     </test>
 </configuration>