Merge "remove VTS_CONFIG_SRC_DIR as no more used"
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/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/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/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/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/health/storage/V1_0/target/Android.mk b/health/storage/V1_0/target/Android.mk
new file mode 100644
index 0000000..08ba4a3
--- /dev/null
+++ b/health/storage/V1_0/target/Android.mk
@@ -0,0 +1,22 @@
+#
+# 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+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/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/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/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/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/treble/vintf/SystemVendorTest.cpp b/treble/vintf/SystemVendorTest.cpp
index eebd4de..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::CheckFlags::DISABLE_AVB_CHECK))
-      << error;
-
   EXPECT_EQ(android::vintf::COMPATIBLE,
             VintfObject::CheckCompatibility(
-                {}, &error, ::android::vintf::CheckFlags::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.h b/treble/vintf/utils.h
index cf8855c..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;
@@ -65,6 +66,7 @@
 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;