Merge "Add android.hardware.health@2.0 HAL"
diff --git a/audio/2.0/Android.bp b/audio/2.0/Android.bp
index cdaaa15..ea3ea84 100644
--- a/audio/2.0/Android.bp
+++ b/audio/2.0/Android.bp
@@ -108,3 +108,92 @@
         "android.hardware.audio.common@2.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.audio@2.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0",
+    srcs: [
+        ":android.hardware.audio@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/2.0/ADevice.cpp",
+        "android/hardware/audio/2.0/ADevicesFactory.cpp",
+        "android/hardware/audio/2.0/APrimaryDevice.cpp",
+        "android/hardware/audio/2.0/AStream.cpp",
+        "android/hardware/audio/2.0/AStreamIn.cpp",
+        "android/hardware/audio/2.0/AStreamOut.cpp",
+        "android/hardware/audio/2.0/AStreamOutCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio@2.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0",
+    srcs: [
+        ":android.hardware.audio@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/2.0/ADevice.h",
+        "android/hardware/audio/2.0/ADevicesFactory.h",
+        "android/hardware/audio/2.0/APrimaryDevice.h",
+        "android/hardware/audio/2.0/AStream.h",
+        "android/hardware/audio/2.0/AStreamIn.h",
+        "android/hardware/audio/2.0/AStreamOut.h",
+        "android/hardware/audio/2.0/AStreamOutCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.audio@2.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.audio@2.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.audio@2.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.audio@2.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio@2.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio@2.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.audio@2.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio@2.0",
+        "android.hardware.audio@2.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.audio@2.0-adapter_genc++"],
+}
diff --git a/audio/effect/2.0/Android.bp b/audio/effect/2.0/Android.bp
index fd667f0..e940296 100644
--- a/audio/effect/2.0/Android.bp
+++ b/audio/effect/2.0/Android.bp
@@ -157,3 +157,106 @@
         "android.hardware.audio.common@2.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.audio.effect@2.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0",
+    srcs: [
+        ":android.hardware.audio.effect@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/effect/2.0/AAcousticEchoCancelerEffect.cpp",
+        "android/hardware/audio/effect/2.0/AAutomaticGainControlEffect.cpp",
+        "android/hardware/audio/effect/2.0/ABassBoostEffect.cpp",
+        "android/hardware/audio/effect/2.0/ADownmixEffect.cpp",
+        "android/hardware/audio/effect/2.0/AEffect.cpp",
+        "android/hardware/audio/effect/2.0/AEffectBufferProviderCallback.cpp",
+        "android/hardware/audio/effect/2.0/AEffectsFactory.cpp",
+        "android/hardware/audio/effect/2.0/AEnvironmentalReverbEffect.cpp",
+        "android/hardware/audio/effect/2.0/AEqualizerEffect.cpp",
+        "android/hardware/audio/effect/2.0/ALoudnessEnhancerEffect.cpp",
+        "android/hardware/audio/effect/2.0/ANoiseSuppressionEffect.cpp",
+        "android/hardware/audio/effect/2.0/APresetReverbEffect.cpp",
+        "android/hardware/audio/effect/2.0/AVirtualizerEffect.cpp",
+        "android/hardware/audio/effect/2.0/AVisualizerEffect.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio.effect@2.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0",
+    srcs: [
+        ":android.hardware.audio.effect@2.0_hal",
+    ],
+    out: [
+        "android/hardware/audio/effect/2.0/AAcousticEchoCancelerEffect.h",
+        "android/hardware/audio/effect/2.0/AAutomaticGainControlEffect.h",
+        "android/hardware/audio/effect/2.0/ABassBoostEffect.h",
+        "android/hardware/audio/effect/2.0/ADownmixEffect.h",
+        "android/hardware/audio/effect/2.0/AEffect.h",
+        "android/hardware/audio/effect/2.0/AEffectBufferProviderCallback.h",
+        "android/hardware/audio/effect/2.0/AEffectsFactory.h",
+        "android/hardware/audio/effect/2.0/AEnvironmentalReverbEffect.h",
+        "android/hardware/audio/effect/2.0/AEqualizerEffect.h",
+        "android/hardware/audio/effect/2.0/ALoudnessEnhancerEffect.h",
+        "android/hardware/audio/effect/2.0/ANoiseSuppressionEffect.h",
+        "android/hardware/audio/effect/2.0/APresetReverbEffect.h",
+        "android/hardware/audio/effect/2.0/AVirtualizerEffect.h",
+        "android/hardware/audio/effect/2.0/AVisualizerEffect.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.audio.effect@2.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.audio.effect@2.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.audio.effect@2.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.audio.effect@2.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.effect@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.effect@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.audio.effect@2.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.audio.effect@2.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.audio.effect@2.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.audio.effect@2.0",
+        "android.hardware.audio.effect@2.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.audio.effect@2.0-adapter_genc++"],
+}
diff --git a/automotive/evs/1.0/Android.bp b/automotive/evs/1.0/Android.bp
index 7ae2231..be58711 100644
--- a/automotive/evs/1.0/Android.bp
+++ b/automotive/evs/1.0/Android.bp
@@ -85,3 +85,83 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.automotive.evs@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.evs@1.0",
+    srcs: [
+        ":android.hardware.automotive.evs@1.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/evs/1.0/AEvsCamera.cpp",
+        "android/hardware/automotive/evs/1.0/AEvsCameraStream.cpp",
+        "android/hardware/automotive/evs/1.0/AEvsDisplay.cpp",
+        "android/hardware/automotive/evs/1.0/AEvsEnumerator.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.evs@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.evs@1.0",
+    srcs: [
+        ":android.hardware.automotive.evs@1.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/evs/1.0/AEvsCamera.h",
+        "android/hardware/automotive/evs/1.0/AEvsCameraStream.h",
+        "android/hardware/automotive/evs/1.0/AEvsDisplay.h",
+        "android/hardware/automotive/evs/1.0/AEvsEnumerator.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.automotive.evs@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.automotive.evs@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.automotive.evs@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.evs@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.automotive.evs@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.automotive.evs@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.evs@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.evs@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.automotive.evs@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.automotive.evs@1.0",
+        "android.hardware.automotive.evs@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.automotive.evs@1.0-adapter_genc++"],
+}
diff --git a/automotive/vehicle/2.0/Android.bp b/automotive/vehicle/2.0/Android.bp
index 879fe0d..ffc768e 100644
--- a/automotive/vehicle/2.0/Android.bp
+++ b/automotive/vehicle/2.0/Android.bp
@@ -71,3 +71,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/AVehicle.cpp",
+        "android/hardware/automotive/vehicle/2.0/AVehicleCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0",
+    srcs: [
+        ":android.hardware.automotive.vehicle@2.0_hal",
+    ],
+    out: [
+        "android/hardware/automotive/vehicle/2.0/AVehicle.h",
+        "android/hardware/automotive/vehicle/2.0/AVehicleCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.automotive.vehicle@2.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.automotive.vehicle@2.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.automotive.vehicle@2.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.automotive.vehicle@2.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.automotive.vehicle@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.automotive.vehicle@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.automotive.vehicle@2.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.automotive.vehicle@2.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.automotive.vehicle@2.0",
+        "android.hardware.automotive.vehicle@2.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.automotive.vehicle@2.0-adapter_genc++"],
+}
diff --git a/biometrics/fingerprint/2.1/Android.bp b/biometrics/fingerprint/2.1/Android.bp
index 3898da5..719f47d 100644
--- a/biometrics/fingerprint/2.1/Android.bp
+++ b/biometrics/fingerprint/2.1/Android.bp
@@ -71,3 +71,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.biometrics.fingerprint@2.1-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1",
+    srcs: [
+        ":android.hardware.biometrics.fingerprint@2.1_hal",
+    ],
+    out: [
+        "android/hardware/biometrics/fingerprint/2.1/ABiometricsFingerprint.cpp",
+        "android/hardware/biometrics/fingerprint/2.1/ABiometricsFingerprintClientCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.biometrics.fingerprint@2.1-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1",
+    srcs: [
+        ":android.hardware.biometrics.fingerprint@2.1_hal",
+    ],
+    out: [
+        "android/hardware/biometrics/fingerprint/2.1/ABiometricsFingerprint.h",
+        "android/hardware/biometrics/fingerprint/2.1/ABiometricsFingerprintClientCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.biometrics.fingerprint@2.1-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.biometrics.fingerprint@2.1-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.biometrics.fingerprint@2.1-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.biometrics.fingerprint@2.1-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.biometrics.fingerprint@2.1",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.biometrics.fingerprint@2.1",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.biometrics.fingerprint@2.1-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.biometrics.fingerprint@2.1",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.biometrics.fingerprint@2.1-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.biometrics.fingerprint@2.1",
+        "android.hardware.biometrics.fingerprint@2.1-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.biometrics.fingerprint@2.1-adapter_genc++"],
+}
diff --git a/bluetooth/1.0/Android.bp b/bluetooth/1.0/Android.bp
index c883c59..5637aa4 100644
--- a/bluetooth/1.0/Android.bp
+++ b/bluetooth/1.0/Android.bp
@@ -71,3 +71,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.bluetooth@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0",
+    srcs: [
+        ":android.hardware.bluetooth@1.0_hal",
+    ],
+    out: [
+        "android/hardware/bluetooth/1.0/ABluetoothHci.cpp",
+        "android/hardware/bluetooth/1.0/ABluetoothHciCallbacks.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.bluetooth@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0",
+    srcs: [
+        ":android.hardware.bluetooth@1.0_hal",
+    ],
+    out: [
+        "android/hardware/bluetooth/1.0/ABluetoothHci.h",
+        "android/hardware/bluetooth/1.0/ABluetoothHciCallbacks.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.bluetooth@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.bluetooth@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.bluetooth@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.bluetooth@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.bluetooth@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.bluetooth@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.bluetooth@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.bluetooth@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.bluetooth@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.bluetooth@1.0",
+        "android.hardware.bluetooth@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.bluetooth@1.0-adapter_genc++"],
+}
diff --git a/boot/1.0/Android.bp b/boot/1.0/Android.bp
index 4e4efa3..ad9cfc7 100644
--- a/boot/1.0/Android.bp
+++ b/boot/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.boot@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0",
+    srcs: [
+        ":android.hardware.boot@1.0_hal",
+    ],
+    out: [
+        "android/hardware/boot/1.0/ABootControl.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.boot@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0",
+    srcs: [
+        ":android.hardware.boot@1.0_hal",
+    ],
+    out: [
+        "android/hardware/boot/1.0/ABootControl.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.boot@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.boot@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.boot@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.boot@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.boot@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.boot@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.boot@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.boot@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.boot@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.boot@1.0",
+        "android.hardware.boot@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.boot@1.0-adapter_genc++"],
+}
diff --git a/broadcastradio/1.0/Android.bp b/broadcastradio/1.0/Android.bp
index 5b8e239..9b8c5b3 100644
--- a/broadcastradio/1.0/Android.bp
+++ b/broadcastradio/1.0/Android.bp
@@ -85,3 +85,83 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.broadcastradio@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0",
+    srcs: [
+        ":android.hardware.broadcastradio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.0/ABroadcastRadio.cpp",
+        "android/hardware/broadcastradio/1.0/ABroadcastRadioFactory.cpp",
+        "android/hardware/broadcastradio/1.0/ATuner.cpp",
+        "android/hardware/broadcastradio/1.0/ATunerCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.broadcastradio@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0",
+    srcs: [
+        ":android.hardware.broadcastradio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.0/ABroadcastRadio.h",
+        "android/hardware/broadcastradio/1.0/ABroadcastRadioFactory.h",
+        "android/hardware/broadcastradio/1.0/ATuner.h",
+        "android/hardware/broadcastradio/1.0/ATunerCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.broadcastradio@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.broadcastradio@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.broadcastradio@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.broadcastradio@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.broadcastradio@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.broadcastradio@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.broadcastradio@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.broadcastradio@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.broadcastradio@1.0",
+        "android.hardware.broadcastradio@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.broadcastradio@1.0-adapter_genc++"],
+}
diff --git a/broadcastradio/1.1/Android.bp b/broadcastradio/1.1/Android.bp
index 12e23d6..2111c16 100644
--- a/broadcastradio/1.1/Android.bp
+++ b/broadcastradio/1.1/Android.bp
@@ -87,3 +87,88 @@
         "android.hardware.broadcastradio@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.broadcastradio@1.1-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1",
+    srcs: [
+        ":android.hardware.broadcastradio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.1/ABroadcastRadio.cpp",
+        "android/hardware/broadcastradio/1.1/ABroadcastRadioFactory.cpp",
+        "android/hardware/broadcastradio/1.1/ATuner.cpp",
+        "android/hardware/broadcastradio/1.1/ATunerCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.broadcastradio@1.1-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1",
+    srcs: [
+        ":android.hardware.broadcastradio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/broadcastradio/1.1/ABroadcastRadio.h",
+        "android/hardware/broadcastradio/1.1/ABroadcastRadioFactory.h",
+        "android/hardware/broadcastradio/1.1/ATuner.h",
+        "android/hardware/broadcastradio/1.1/ATunerCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.broadcastradio@1.1-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.broadcastradio@1.1-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.broadcastradio@1.1-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.broadcastradio@1.1-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.broadcastradio@1.0",
+        "android.hardware.broadcastradio@1.1",
+        "android.hardware.broadcastradio@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.broadcastradio@1.0",
+        "android.hardware.broadcastradio@1.1",
+        "android.hardware.broadcastradio@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.broadcastradio@1.1-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.broadcastradio@1.1-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.broadcastradio@1.0",
+        "android.hardware.broadcastradio@1.1",
+        "android.hardware.broadcastradio@1.1-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.broadcastradio@1.1-adapter_genc++"],
+}
diff --git a/camera/device/1.0/Android.bp b/camera/device/1.0/Android.bp
index b8335f9..dfc58c9 100644
--- a/camera/device/1.0/Android.bp
+++ b/camera/device/1.0/Android.bp
@@ -82,3 +82,87 @@
         "android.hardware.graphics.common@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.camera.device@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0",
+    srcs: [
+        ":android.hardware.camera.device@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/1.0/ACameraDevice.cpp",
+        "android/hardware/camera/device/1.0/ACameraDeviceCallback.cpp",
+        "android/hardware/camera/device/1.0/ACameraDevicePreviewCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.device@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0",
+    srcs: [
+        ":android.hardware.camera.device@1.0_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/1.0/ACameraDevice.h",
+        "android/hardware/camera/device/1.0/ACameraDeviceCallback.h",
+        "android/hardware/camera/device/1.0/ACameraDevicePreviewCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.camera.device@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.camera.device@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.camera.device@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.device@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.device@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.camera.device@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.camera.device@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.camera.device@1.0-adapter_genc++"],
+}
diff --git a/camera/device/3.2/Android.bp b/camera/device/3.2/Android.bp
index 24c2151..d770964 100644
--- a/camera/device/3.2/Android.bp
+++ b/camera/device/3.2/Android.bp
@@ -82,3 +82,87 @@
         "android.hardware.graphics.common@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.camera.device@3.2-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2",
+    srcs: [
+        ":android.hardware.camera.device@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/3.2/ACameraDevice.cpp",
+        "android/hardware/camera/device/3.2/ACameraDeviceCallback.cpp",
+        "android/hardware/camera/device/3.2/ACameraDeviceSession.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.device@3.2-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2",
+    srcs: [
+        ":android.hardware.camera.device@3.2_hal",
+    ],
+    out: [
+        "android/hardware/camera/device/3.2/ACameraDevice.h",
+        "android/hardware/camera/device/3.2/ACameraDeviceCallback.h",
+        "android/hardware/camera/device/3.2/ACameraDeviceSession.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.camera.device@3.2-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.camera.device@3.2-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.camera.device@3.2-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.device@3.2-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.graphics.common@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.graphics.common@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.device@3.2-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.device@3.2",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.camera.device@3.2-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.camera.device@3.2-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.camera.device@3.2-adapter_genc++"],
+}
diff --git a/camera/provider/2.4/Android.bp b/camera/provider/2.4/Android.bp
index 82a3a78..40f7594 100644
--- a/camera/provider/2.4/Android.bp
+++ b/camera/provider/2.4/Android.bp
@@ -75,3 +75,95 @@
         "android.hardware.graphics.common@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.camera.provider@2.4-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4",
+    srcs: [
+        ":android.hardware.camera.provider@2.4_hal",
+    ],
+    out: [
+        "android/hardware/camera/provider/2.4/ACameraProvider.cpp",
+        "android/hardware/camera/provider/2.4/ACameraProviderCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.provider@2.4-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4",
+    srcs: [
+        ":android.hardware.camera.provider@2.4_hal",
+    ],
+    out: [
+        "android/hardware/camera/provider/2.4/ACameraProvider.h",
+        "android/hardware/camera/provider/2.4/ACameraProviderCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.camera.provider@2.4-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.camera.provider@2.4-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.camera.provider@2.4-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.camera.provider@2.4-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.camera.provider@2.4",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.camera.device@1.0-adapter-helper",
+        "android.hardware.camera.device@3.2-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.camera.provider@2.4",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.camera.device@1.0-adapter-helper",
+        "android.hardware.camera.device@3.2-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.camera.provider@2.4-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.camera.provider@2.4",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.camera.provider@2.4-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.camera.common@1.0",
+        "android.hardware.camera.device@1.0",
+        "android.hardware.camera.device@3.2",
+        "android.hardware.camera.provider@2.4",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.camera.provider@2.4-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.camera.provider@2.4-adapter_genc++"],
+}
diff --git a/configstore/1.0/Android.bp b/configstore/1.0/Android.bp
index 96ef00a..bd11112 100644
--- a/configstore/1.0/Android.bp
+++ b/configstore/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.configstore@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0",
+    srcs: [
+        ":android.hardware.configstore@1.0_hal",
+    ],
+    out: [
+        "android/hardware/configstore/1.0/ASurfaceFlingerConfigs.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.configstore@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0",
+    srcs: [
+        ":android.hardware.configstore@1.0_hal",
+    ],
+    out: [
+        "android/hardware/configstore/1.0/ASurfaceFlingerConfigs.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.configstore@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.configstore@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.configstore@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.configstore@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.configstore@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.configstore@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.configstore@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.configstore@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.configstore@1.0",
+        "android.hardware.configstore@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.configstore@1.0-adapter_genc++"],
+}
diff --git a/contexthub/1.0/Android.bp b/contexthub/1.0/Android.bp
index ae1bd08..74e028c 100644
--- a/contexthub/1.0/Android.bp
+++ b/contexthub/1.0/Android.bp
@@ -71,3 +71,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.contexthub@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0",
+    srcs: [
+        ":android.hardware.contexthub@1.0_hal",
+    ],
+    out: [
+        "android/hardware/contexthub/1.0/AContexthub.cpp",
+        "android/hardware/contexthub/1.0/AContexthubCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.contexthub@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0",
+    srcs: [
+        ":android.hardware.contexthub@1.0_hal",
+    ],
+    out: [
+        "android/hardware/contexthub/1.0/AContexthub.h",
+        "android/hardware/contexthub/1.0/AContexthubCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.contexthub@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.contexthub@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.contexthub@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.contexthub@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.contexthub@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.contexthub@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.contexthub@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.contexthub@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.contexthub@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.contexthub@1.0",
+        "android.hardware.contexthub@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.contexthub@1.0-adapter_genc++"],
+}
diff --git a/drm/1.0/Android.bp b/drm/1.0/Android.bp
index 096aa06..c5f814c 100644
--- a/drm/1.0/Android.bp
+++ b/drm/1.0/Android.bp
@@ -93,4 +93,84 @@
     ],
 }
 
-subdirs = ["default"]
+genrule {
+    name: "android.hardware.drm@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0",
+    srcs: [
+        ":android.hardware.drm@1.0_hal",
+    ],
+    out: [
+        "android/hardware/drm/1.0/ACryptoFactory.cpp",
+        "android/hardware/drm/1.0/ACryptoPlugin.cpp",
+        "android/hardware/drm/1.0/ADrmFactory.cpp",
+        "android/hardware/drm/1.0/ADrmPlugin.cpp",
+        "android/hardware/drm/1.0/ADrmPluginListener.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.drm@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0",
+    srcs: [
+        ":android.hardware.drm@1.0_hal",
+    ],
+    out: [
+        "android/hardware/drm/1.0/ACryptoFactory.h",
+        "android/hardware/drm/1.0/ACryptoPlugin.h",
+        "android/hardware/drm/1.0/ADrmFactory.h",
+        "android/hardware/drm/1.0/ADrmPlugin.h",
+        "android/hardware/drm/1.0/ADrmPluginListener.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.drm@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.drm@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.drm@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.drm@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.drm@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.drm@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.drm@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.drm@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.drm@1.0",
+        "android.hardware.drm@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.drm@1.0-adapter_genc++"],
+}
diff --git a/drm/Android.bp b/drm/Android.bp
index 33f70eb..ed19a37 100644
--- a/drm/Android.bp
+++ b/drm/Android.bp
@@ -1,5 +1,6 @@
 // This is an autogenerated file, do not edit.
 subdirs = [
     "1.0",
+    "1.0/default",
     "1.0/vts/functional",
 ]
diff --git a/dumpstate/1.0/Android.bp b/dumpstate/1.0/Android.bp
index b135e00..684ab35 100644
--- a/dumpstate/1.0/Android.bp
+++ b/dumpstate/1.0/Android.bp
@@ -60,3 +60,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.dumpstate@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0",
+    srcs: [
+        ":android.hardware.dumpstate@1.0_hal",
+    ],
+    out: [
+        "android/hardware/dumpstate/1.0/ADumpstateDevice.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.dumpstate@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0",
+    srcs: [
+        ":android.hardware.dumpstate@1.0_hal",
+    ],
+    out: [
+        "android/hardware/dumpstate/1.0/ADumpstateDevice.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.dumpstate@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.dumpstate@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.dumpstate@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.dumpstate@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.dumpstate@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.dumpstate@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.dumpstate@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.dumpstate@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.dumpstate@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.dumpstate@1.0",
+        "android.hardware.dumpstate@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.dumpstate@1.0-adapter_genc++"],
+}
diff --git a/gatekeeper/1.0/Android.bp b/gatekeeper/1.0/Android.bp
index f12f38f..b3cd75e 100644
--- a/gatekeeper/1.0/Android.bp
+++ b/gatekeeper/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.gatekeeper@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0",
+    srcs: [
+        ":android.hardware.gatekeeper@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gatekeeper/1.0/AGatekeeper.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.gatekeeper@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0",
+    srcs: [
+        ":android.hardware.gatekeeper@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gatekeeper/1.0/AGatekeeper.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.gatekeeper@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.gatekeeper@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.gatekeeper@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.gatekeeper@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.gatekeeper@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.gatekeeper@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.gatekeeper@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gatekeeper@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.gatekeeper@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.gatekeeper@1.0",
+        "android.hardware.gatekeeper@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.gatekeeper@1.0-adapter_genc++"],
+}
diff --git a/gnss/1.0/Android.bp b/gnss/1.0/Android.bp
index 6db98f6..f40e6e1 100644
--- a/gnss/1.0/Android.bp
+++ b/gnss/1.0/Android.bp
@@ -197,3 +197,115 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.gnss@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0",
+    srcs: [
+        ":android.hardware.gnss@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gnss/1.0/AAGnss.cpp",
+        "android/hardware/gnss/1.0/AAGnssCallback.cpp",
+        "android/hardware/gnss/1.0/AAGnssRil.cpp",
+        "android/hardware/gnss/1.0/AAGnssRilCallback.cpp",
+        "android/hardware/gnss/1.0/AGnss.cpp",
+        "android/hardware/gnss/1.0/AGnssBatching.cpp",
+        "android/hardware/gnss/1.0/AGnssBatchingCallback.cpp",
+        "android/hardware/gnss/1.0/AGnssCallback.cpp",
+        "android/hardware/gnss/1.0/AGnssConfiguration.cpp",
+        "android/hardware/gnss/1.0/AGnssDebug.cpp",
+        "android/hardware/gnss/1.0/AGnssGeofenceCallback.cpp",
+        "android/hardware/gnss/1.0/AGnssGeofencing.cpp",
+        "android/hardware/gnss/1.0/AGnssMeasurement.cpp",
+        "android/hardware/gnss/1.0/AGnssMeasurementCallback.cpp",
+        "android/hardware/gnss/1.0/AGnssNavigationMessage.cpp",
+        "android/hardware/gnss/1.0/AGnssNavigationMessageCallback.cpp",
+        "android/hardware/gnss/1.0/AGnssNi.cpp",
+        "android/hardware/gnss/1.0/AGnssNiCallback.cpp",
+        "android/hardware/gnss/1.0/AGnssXtra.cpp",
+        "android/hardware/gnss/1.0/AGnssXtraCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.gnss@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0",
+    srcs: [
+        ":android.hardware.gnss@1.0_hal",
+    ],
+    out: [
+        "android/hardware/gnss/1.0/AAGnss.h",
+        "android/hardware/gnss/1.0/AAGnssCallback.h",
+        "android/hardware/gnss/1.0/AAGnssRil.h",
+        "android/hardware/gnss/1.0/AAGnssRilCallback.h",
+        "android/hardware/gnss/1.0/AGnss.h",
+        "android/hardware/gnss/1.0/AGnssBatching.h",
+        "android/hardware/gnss/1.0/AGnssBatchingCallback.h",
+        "android/hardware/gnss/1.0/AGnssCallback.h",
+        "android/hardware/gnss/1.0/AGnssConfiguration.h",
+        "android/hardware/gnss/1.0/AGnssDebug.h",
+        "android/hardware/gnss/1.0/AGnssGeofenceCallback.h",
+        "android/hardware/gnss/1.0/AGnssGeofencing.h",
+        "android/hardware/gnss/1.0/AGnssMeasurement.h",
+        "android/hardware/gnss/1.0/AGnssMeasurementCallback.h",
+        "android/hardware/gnss/1.0/AGnssNavigationMessage.h",
+        "android/hardware/gnss/1.0/AGnssNavigationMessageCallback.h",
+        "android/hardware/gnss/1.0/AGnssNi.h",
+        "android/hardware/gnss/1.0/AGnssNiCallback.h",
+        "android/hardware/gnss/1.0/AGnssXtra.h",
+        "android/hardware/gnss/1.0/AGnssXtraCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.gnss@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.gnss@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.gnss@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.gnss@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.gnss@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.gnss@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.gnss@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.gnss@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.gnss@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.gnss@1.0",
+        "android.hardware.gnss@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.gnss@1.0-adapter_genc++"],
+}
diff --git a/graphics/allocator/2.0/Android.bp b/graphics/allocator/2.0/Android.bp
index 46faa17..c24da12 100644
--- a/graphics/allocator/2.0/Android.bp
+++ b/graphics/allocator/2.0/Android.bp
@@ -65,3 +65,85 @@
         "android.hardware.graphics.mapper@2.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.graphics.allocator@2.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0",
+    srcs: [
+        ":android.hardware.graphics.allocator@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/allocator/2.0/AAllocator.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.allocator@2.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0",
+    srcs: [
+        ":android.hardware.graphics.allocator@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/allocator/2.0/AAllocator.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.graphics.allocator@2.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.graphics.allocator@2.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.graphics.allocator@2.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.allocator@2.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.graphics.allocator@2.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.mapper@2.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.graphics.allocator@2.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.mapper@2.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.allocator@2.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.allocator@2.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.graphics.allocator@2.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.graphics.allocator@2.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.allocator@2.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.graphics.allocator@2.0-adapter_genc++"],
+}
diff --git a/graphics/bufferqueue/1.0/Android.bp b/graphics/bufferqueue/1.0/Android.bp
index 2d36fc7..c96c3c3 100644
--- a/graphics/bufferqueue/1.0/Android.bp
+++ b/graphics/bufferqueue/1.0/Android.bp
@@ -71,3 +71,85 @@
         "android.hardware.media@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.graphics.bufferqueue@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.bufferqueue@1.0",
+    srcs: [
+        ":android.hardware.graphics.bufferqueue@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/bufferqueue/1.0/AGraphicBufferProducer.cpp",
+        "android/hardware/graphics/bufferqueue/1.0/AProducerListener.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.bufferqueue@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.bufferqueue@1.0",
+    srcs: [
+        ":android.hardware.graphics.bufferqueue@1.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/bufferqueue/1.0/AGraphicBufferProducer.h",
+        "android/hardware/graphics/bufferqueue/1.0/AProducerListener.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.graphics.bufferqueue@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.graphics.bufferqueue@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.graphics.bufferqueue@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.bufferqueue@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.media@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.media@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.bufferqueue@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.bufferqueue@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.graphics.bufferqueue@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.media@1.0",
+        "android.hardware.graphics.bufferqueue@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.graphics.bufferqueue@1.0-adapter_genc++"],
+}
diff --git a/graphics/composer/2.1/Android.bp b/graphics/composer/2.1/Android.bp
index e875708..9080781 100644
--- a/graphics/composer/2.1/Android.bp
+++ b/graphics/composer/2.1/Android.bp
@@ -80,3 +80,84 @@
         "android.hardware.graphics.common@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.graphics.composer@2.1-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1",
+    srcs: [
+        ":android.hardware.graphics.composer@2.1_hal",
+    ],
+    out: [
+        "android/hardware/graphics/composer/2.1/AComposer.cpp",
+        "android/hardware/graphics/composer/2.1/AComposerCallback.cpp",
+        "android/hardware/graphics/composer/2.1/AComposerClient.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.composer@2.1-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1",
+    srcs: [
+        ":android.hardware.graphics.composer@2.1_hal",
+    ],
+    out: [
+        "android/hardware/graphics/composer/2.1/AComposer.h",
+        "android/hardware/graphics/composer/2.1/AComposerCallback.h",
+        "android/hardware/graphics/composer/2.1/AComposerClient.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.graphics.composer@2.1-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.graphics.composer@2.1-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.graphics.composer@2.1-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.composer@2.1-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.composer@2.1",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.composer@2.1",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.composer@2.1-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.composer@2.1",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.graphics.composer@2.1-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.composer@2.1",
+        "android.hardware.graphics.composer@2.1-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.graphics.composer@2.1-adapter_genc++"],
+}
diff --git a/graphics/mapper/2.0/Android.bp b/graphics/mapper/2.0/Android.bp
index f5913af..f829840 100644
--- a/graphics/mapper/2.0/Android.bp
+++ b/graphics/mapper/2.0/Android.bp
@@ -67,3 +67,80 @@
         "android.hardware.graphics.common@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.graphics.mapper@2.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0",
+    srcs: [
+        ":android.hardware.graphics.mapper@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/mapper/2.0/AMapper.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.mapper@2.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0",
+    srcs: [
+        ":android.hardware.graphics.mapper@2.0_hal",
+    ],
+    out: [
+        "android/hardware/graphics/mapper/2.0/AMapper.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.graphics.mapper@2.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.graphics.mapper@2.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.graphics.mapper@2.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.graphics.mapper@2.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.graphics.mapper@2.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.graphics.mapper@2.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.graphics.mapper@2.0",
+        "android.hardware.graphics.mapper@2.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.graphics.mapper@2.0-adapter_genc++"],
+}
diff --git a/health/1.0/Android.bp b/health/1.0/Android.bp
index d8ebc20..1b5661c 100644
--- a/health/1.0/Android.bp
+++ b/health/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.health@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0",
+    srcs: [
+        ":android.hardware.health@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/1.0/AHealth.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.health@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0",
+    srcs: [
+        ":android.hardware.health@1.0_hal",
+    ],
+    out: [
+        "android/hardware/health/1.0/AHealth.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.health@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.health@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.health@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.health@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.health@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.health@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.health@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.health@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.health@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.health@1.0",
+        "android.hardware.health@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.health@1.0-adapter_genc++"],
+}
diff --git a/ir/1.0/Android.bp b/ir/1.0/Android.bp
index 489f61f..6ca7701 100644
--- a/ir/1.0/Android.bp
+++ b/ir/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.ir@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0",
+    srcs: [
+        ":android.hardware.ir@1.0_hal",
+    ],
+    out: [
+        "android/hardware/ir/1.0/AConsumerIr.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.ir@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0",
+    srcs: [
+        ":android.hardware.ir@1.0_hal",
+    ],
+    out: [
+        "android/hardware/ir/1.0/AConsumerIr.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.ir@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.ir@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.ir@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.ir@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.ir@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.ir@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.ir@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.ir@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.ir@1.0",
+        "android.hardware.ir@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.ir@1.0-adapter_genc++"],
+}
diff --git a/keymaster/3.0/Android.bp b/keymaster/3.0/Android.bp
index 14cfab2..9019739 100644
--- a/keymaster/3.0/Android.bp
+++ b/keymaster/3.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.keymaster@3.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0",
+    srcs: [
+        ":android.hardware.keymaster@3.0_hal",
+    ],
+    out: [
+        "android/hardware/keymaster/3.0/AKeymasterDevice.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.keymaster@3.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0",
+    srcs: [
+        ":android.hardware.keymaster@3.0_hal",
+    ],
+    out: [
+        "android/hardware/keymaster/3.0/AKeymasterDevice.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.keymaster@3.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.keymaster@3.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.keymaster@3.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.keymaster@3.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.keymaster@3.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.keymaster@3.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.keymaster@3.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.keymaster@3.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.keymaster@3.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.keymaster@3.0",
+        "android.hardware.keymaster@3.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.keymaster@3.0-adapter_genc++"],
+}
diff --git a/keymaster/3.0/default/OWNERS b/keymaster/3.0/default/OWNERS
new file mode 100644
index 0000000..335660d
--- /dev/null
+++ b/keymaster/3.0/default/OWNERS
@@ -0,0 +1,2 @@
+jdanis@google.com
+swillden@google.com
diff --git a/keymaster/3.0/vts/OWNERS b/keymaster/3.0/vts/OWNERS
new file mode 100644
index 0000000..d53aadd
--- /dev/null
+++ b/keymaster/3.0/vts/OWNERS
@@ -0,0 +1,4 @@
+jdanis@google.com
+swillden@google.com
+yim@google.com
+ryanjcampbell@google.com
diff --git a/light/2.0/Android.bp b/light/2.0/Android.bp
index 7cc7f84..3412fcc 100644
--- a/light/2.0/Android.bp
+++ b/light/2.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.light@2.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0",
+    srcs: [
+        ":android.hardware.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/light/2.0/ALight.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.light@2.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0",
+    srcs: [
+        ":android.hardware.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/light/2.0/ALight.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.light@2.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.light@2.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.light@2.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.light@2.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.light@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.light@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.light@2.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.light@2.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.light@2.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.light@2.0",
+        "android.hardware.light@2.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.light@2.0-adapter_genc++"],
+}
diff --git a/media/omx/1.0/Android.bp b/media/omx/1.0/Android.bp
index f8bed6e..378c18e 100644
--- a/media/omx/1.0/Android.bp
+++ b/media/omx/1.0/Android.bp
@@ -105,3 +105,98 @@
         "android.hardware.media@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.media.omx@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0",
+    srcs: [
+        ":android.hardware.media.omx@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/omx/1.0/AGraphicBufferSource.cpp",
+        "android/hardware/media/omx/1.0/AOmx.cpp",
+        "android/hardware/media/omx/1.0/AOmxBufferSource.cpp",
+        "android/hardware/media/omx/1.0/AOmxNode.cpp",
+        "android/hardware/media/omx/1.0/AOmxObserver.cpp",
+        "android/hardware/media/omx/1.0/AOmxStore.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.media.omx@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0",
+    srcs: [
+        ":android.hardware.media.omx@1.0_hal",
+    ],
+    out: [
+        "android/hardware/media/omx/1.0/AGraphicBufferSource.h",
+        "android/hardware/media/omx/1.0/AOmx.h",
+        "android/hardware/media/omx/1.0/AOmxBufferSource.h",
+        "android/hardware/media/omx/1.0/AOmxNode.h",
+        "android/hardware/media/omx/1.0/AOmxObserver.h",
+        "android/hardware/media/omx/1.0/AOmxStore.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.media.omx@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.media.omx@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.media.omx@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.media.omx@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.media.omx@1.0",
+        "android.hardware.media@1.0",
+        "android.hardware.graphics.bufferqueue@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.media.omx@1.0",
+        "android.hardware.media@1.0",
+        "android.hardware.graphics.bufferqueue@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.media.omx@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.media.omx@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.media.omx@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.graphics.bufferqueue@1.0",
+        "android.hardware.graphics.common@1.0",
+        "android.hardware.media.omx@1.0",
+        "android.hardware.media@1.0",
+        "android.hardware.media.omx@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.media.omx@1.0-adapter_genc++"],
+}
diff --git a/memtrack/1.0/Android.bp b/memtrack/1.0/Android.bp
index 4df2c1d..fc6aa9d 100644
--- a/memtrack/1.0/Android.bp
+++ b/memtrack/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.memtrack@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0",
+    srcs: [
+        ":android.hardware.memtrack@1.0_hal",
+    ],
+    out: [
+        "android/hardware/memtrack/1.0/AMemtrack.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.memtrack@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0",
+    srcs: [
+        ":android.hardware.memtrack@1.0_hal",
+    ],
+    out: [
+        "android/hardware/memtrack/1.0/AMemtrack.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.memtrack@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.memtrack@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.memtrack@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.memtrack@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.memtrack@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.memtrack@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.memtrack@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.memtrack@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.memtrack@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.memtrack@1.0",
+        "android.hardware.memtrack@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.memtrack@1.0-adapter_genc++"],
+}
diff --git a/minijail/Android.bp b/minijail/Android.bp
new file mode 100644
index 0000000..b95f029
--- /dev/null
+++ b/minijail/Android.bp
@@ -0,0 +1,12 @@
+cc_library_shared {
+    name: "libhwminijail",
+    vendor: true,
+    export_include_dirs: ["include"],
+
+    srcs: ["HardwareMinijail.cpp"],
+
+    shared_libs: [
+        "libbase",
+        "libminijail",
+    ],
+}
diff --git a/minijail/HardwareMinijail.cpp b/minijail/HardwareMinijail.cpp
new file mode 100644
index 0000000..e6b1144
--- /dev/null
+++ b/minijail/HardwareMinijail.cpp
@@ -0,0 +1,45 @@
+//
+// 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.
+//
+
+#include <android-base/logging.h>
+#include <libminijail.h>
+
+#include <hwminijail/HardwareMinijail.h>
+
+namespace android {
+namespace hardware {
+
+void SetupMinijail(const std::string& seccomp_policy_path) {
+    if (access(seccomp_policy_path.c_str(), R_OK) == -1) {
+        LOG(WARNING) << "Could not find seccomp policy file at: " << seccomp_policy_path;
+        return;
+    }
+
+    struct minijail* jail = minijail_new();
+    if (jail == NULL) {
+        LOG(FATAL) << "Failed to create minijail.";
+    }
+
+    minijail_no_new_privs(jail);
+    minijail_log_seccomp_filter_failures(jail);
+    minijail_use_seccomp_filter(jail);
+    minijail_parse_seccomp_filters(jail, seccomp_policy_path.c_str());
+    minijail_enter(jail);
+    minijail_destroy(jail);
+}
+
+}  // namespace hardware
+}  // namespace android
diff --git a/minijail/include/hwminijail/HardwareMinijail.h b/minijail/include/hwminijail/HardwareMinijail.h
new file mode 100644
index 0000000..8fcf007
--- /dev/null
+++ b/minijail/include/hwminijail/HardwareMinijail.h
@@ -0,0 +1,30 @@
+//
+// 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.
+//
+
+#ifndef ANDROID_HARDWARE_CONFIGSTORE_MINIJAIL_H
+#define ANDROID_HARDWARE_CONFIGSTORE_MINIJAIL_H
+
+#include <string>
+
+namespace android {
+namespace hardware {
+
+void SetupMinijail(const std::string& seccomp_policy_path);
+
+}  // namespace hardware
+}  // namespace android
+
+#endif  // ANDROID_HARDWARE_CONFIGSTORE_UTILS_H
diff --git a/nfc/1.0/Android.bp b/nfc/1.0/Android.bp
index 4adb32c..ac02e44 100644
--- a/nfc/1.0/Android.bp
+++ b/nfc/1.0/Android.bp
@@ -71,3 +71,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.nfc@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0",
+    srcs: [
+        ":android.hardware.nfc@1.0_hal",
+    ],
+    out: [
+        "android/hardware/nfc/1.0/ANfc.cpp",
+        "android/hardware/nfc/1.0/ANfcClientCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.nfc@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0",
+    srcs: [
+        ":android.hardware.nfc@1.0_hal",
+    ],
+    out: [
+        "android/hardware/nfc/1.0/ANfc.h",
+        "android/hardware/nfc/1.0/ANfcClientCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.nfc@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.nfc@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.nfc@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.nfc@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.nfc@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.nfc@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.nfc@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.nfc@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.nfc@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.nfc@1.0",
+        "android.hardware.nfc@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.nfc@1.0-adapter_genc++"],
+}
diff --git a/power/1.0/Android.bp b/power/1.0/Android.bp
index bc886cb..5cc4ae0 100644
--- a/power/1.0/Android.bp
+++ b/power/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.power@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0",
+    srcs: [
+        ":android.hardware.power@1.0_hal",
+    ],
+    out: [
+        "android/hardware/power/1.0/APower.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.power@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0",
+    srcs: [
+        ":android.hardware.power@1.0_hal",
+    ],
+    out: [
+        "android/hardware/power/1.0/APower.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.power@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.power@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.power@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.power@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.power@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.power@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.power@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.power@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.power@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.power@1.0",
+        "android.hardware.power@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.power@1.0-adapter_genc++"],
+}
diff --git a/radio/1.0/Android.bp b/radio/1.0/Android.bp
index 093ceac..4485e74 100644
--- a/radio/1.0/Android.bp
+++ b/radio/1.0/Android.bp
@@ -92,3 +92,85 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.radio@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0",
+    srcs: [
+        ":android.hardware.radio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.0/ARadio.cpp",
+        "android/hardware/radio/1.0/ARadioIndication.cpp",
+        "android/hardware/radio/1.0/ARadioResponse.cpp",
+        "android/hardware/radio/1.0/ASap.cpp",
+        "android/hardware/radio/1.0/ASapCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.radio@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0",
+    srcs: [
+        ":android.hardware.radio@1.0_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.0/ARadio.h",
+        "android/hardware/radio/1.0/ARadioIndication.h",
+        "android/hardware/radio/1.0/ARadioResponse.h",
+        "android/hardware/radio/1.0/ASap.h",
+        "android/hardware/radio/1.0/ASapCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.radio@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.radio@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.radio@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.radio@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.radio@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.radio@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.radio@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.radio@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.radio@1.0-adapter_genc++"],
+}
diff --git a/radio/1.1/Android.bp b/radio/1.1/Android.bp
index 156cf99..d89211b 100644
--- a/radio/1.1/Android.bp
+++ b/radio/1.1/Android.bp
@@ -87,3 +87,88 @@
         "android.hardware.radio@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.radio@1.1-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.1",
+    srcs: [
+        ":android.hardware.radio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.1/ARadio.cpp",
+        "android/hardware/radio/1.1/ARadioIndication.cpp",
+        "android/hardware/radio/1.1/ARadioResponse.cpp",
+        "android/hardware/radio/1.1/ASap.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.radio@1.1-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.1",
+    srcs: [
+        ":android.hardware.radio@1.1_hal",
+    ],
+    out: [
+        "android/hardware/radio/1.1/ARadio.h",
+        "android/hardware/radio/1.1/ARadioIndication.h",
+        "android/hardware/radio/1.1/ARadioResponse.h",
+        "android/hardware/radio/1.1/ASap.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.radio@1.1-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.radio@1.1-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.radio@1.1-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.radio@1.1-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.1",
+        "android.hardware.radio@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.1",
+        "android.hardware.radio@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.radio@1.1-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio@1.1",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.radio@1.1-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.1",
+        "android.hardware.radio@1.1-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.radio@1.1-adapter_genc++"],
+}
diff --git a/radio/deprecated/1.0/Android.bp b/radio/deprecated/1.0/Android.bp
index e63ed28..82a7c8d 100644
--- a/radio/deprecated/1.0/Android.bp
+++ b/radio/deprecated/1.0/Android.bp
@@ -76,3 +76,86 @@
         "android.hardware.radio@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.radio.deprecated@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio.deprecated@1.0",
+    srcs: [
+        ":android.hardware.radio.deprecated@1.0_hal",
+    ],
+    out: [
+        "android/hardware/radio/deprecated/1.0/AOemHook.cpp",
+        "android/hardware/radio/deprecated/1.0/AOemHookIndication.cpp",
+        "android/hardware/radio/deprecated/1.0/AOemHookResponse.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.radio.deprecated@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio.deprecated@1.0",
+    srcs: [
+        ":android.hardware.radio.deprecated@1.0_hal",
+    ],
+    out: [
+        "android/hardware/radio/deprecated/1.0/AOemHook.h",
+        "android/hardware/radio/deprecated/1.0/AOemHookIndication.h",
+        "android/hardware/radio/deprecated/1.0/AOemHookResponse.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.radio.deprecated@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.radio.deprecated@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.radio.deprecated@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.radio.deprecated@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.radio.deprecated@1.0",
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.radio.deprecated@1.0",
+        "android.hardware.radio@1.0",
+        "android.hardware.radio@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.radio.deprecated@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio.deprecated@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.radio.deprecated@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.radio.deprecated@1.0",
+        "android.hardware.radio@1.0",
+        "android.hardware.radio.deprecated@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.radio.deprecated@1.0-adapter_genc++"],
+}
diff --git a/renderscript/1.0/Android.bp b/renderscript/1.0/Android.bp
index 0f62652..c687ea9 100644
--- a/renderscript/1.0/Android.bp
+++ b/renderscript/1.0/Android.bp
@@ -72,3 +72,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.renderscript@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0",
+    srcs: [
+        ":android.hardware.renderscript@1.0_hal",
+    ],
+    out: [
+        "android/hardware/renderscript/1.0/AContext.cpp",
+        "android/hardware/renderscript/1.0/ADevice.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.renderscript@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0",
+    srcs: [
+        ":android.hardware.renderscript@1.0_hal",
+    ],
+    out: [
+        "android/hardware/renderscript/1.0/AContext.h",
+        "android/hardware/renderscript/1.0/ADevice.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.renderscript@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.renderscript@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.renderscript@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.renderscript@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.renderscript@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.renderscript@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.renderscript@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.renderscript@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.renderscript@1.0",
+        "android.hardware.renderscript@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.renderscript@1.0-adapter_genc++"],
+}
diff --git a/sensors/1.0/Android.bp b/sensors/1.0/Android.bp
index b2cda05..8a91ee6 100644
--- a/sensors/1.0/Android.bp
+++ b/sensors/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.sensors@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0",
+    srcs: [
+        ":android.hardware.sensors@1.0_hal",
+    ],
+    out: [
+        "android/hardware/sensors/1.0/ASensors.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.sensors@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0",
+    srcs: [
+        ":android.hardware.sensors@1.0_hal",
+    ],
+    out: [
+        "android/hardware/sensors/1.0/ASensors.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.sensors@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.sensors@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.sensors@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.sensors@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.sensors@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.sensors@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.sensors@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.sensors@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.sensors@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.sensors@1.0",
+        "android.hardware.sensors@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.sensors@1.0-adapter_genc++"],
+}
diff --git a/sensors/1.0/default/convert.cpp b/sensors/1.0/default/convert.cpp
index 047374f..a5747d4 100644
--- a/sensors/1.0/default/convert.cpp
+++ b/sensors/1.0/default/convert.cpp
@@ -376,6 +376,10 @@
             return false;
     }
 
+    if (memIn.memoryHandle == nullptr) {
+        return false;
+    }
+
     memOut->size = memIn.size;
     memOut->handle = memIn.memoryHandle;
     return true;
diff --git a/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
index 19265c2..ca3d3e4 100644
--- a/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
+++ b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
@@ -561,7 +561,7 @@
                               std::chrono::nanoseconds samplingPeriod,
                               std::chrono::seconds duration,
                               const SensorEventsChecker &checker);
-  void testSamplingRateHotSwitchOperation(SensorType type);
+  void testSamplingRateHotSwitchOperation(SensorType type, bool fastToSlow = true);
   void testBatchingOperation(SensorType type);
   void testDirectReportOperation(
       SensorType type, SharedMemType memType, RateLevel rate, const SensorEventsChecker &checker);
@@ -584,7 +584,7 @@
 };
 
 const Vec3NormChecker SensorsHidlTest::sAccelNormChecker(
-        Vec3NormChecker::byNominal(GRAVITY_EARTH, 0.5f/*m/s^2*/));
+        Vec3NormChecker::byNominal(GRAVITY_EARTH, 1.0f/*m/s^2*/));
 const Vec3NormChecker SensorsHidlTest::sGyroNormChecker(
         Vec3NormChecker::byNominal(0.f, 0.1f/*rad/s*/));
 
@@ -1081,10 +1081,11 @@
                          NullChecker());
 }
 
-void SensorsHidlTest::testSamplingRateHotSwitchOperation(SensorType type) {
+void SensorsHidlTest::testSamplingRateHotSwitchOperation(SensorType type, bool fastToSlow) {
   std::vector<Event> events1, events2;
 
   constexpr int64_t batchingPeriodInNs = 0; // no batching
+  constexpr int64_t collectionTimeoutUs = 60000000; // 60s
   constexpr size_t minNEvent = 50;
 
   SensorInfo sensor = defaultSensorByType(type);
@@ -1103,17 +1104,23 @@
     return;
   }
 
-  ASSERT_EQ(batch(handle, minSamplingPeriodInNs, batchingPeriodInNs), Result::OK);
+  int64_t firstCollectionPeriod = fastToSlow ? minSamplingPeriodInNs : maxSamplingPeriodInNs;
+  int64_t secondCollectionPeriod = !fastToSlow ? minSamplingPeriodInNs : maxSamplingPeriodInNs;
+
+  // first collection
+  ASSERT_EQ(batch(handle, firstCollectionPeriod, batchingPeriodInNs), Result::OK);
   ASSERT_EQ(activate(handle, 1), Result::OK);
 
   usleep(500000); // sleep 0.5 sec to wait for change rate to happen
-  events1 = collectEvents(sensor.minDelay * minNEvent, minNEvent, true /*clearBeforeStart*/);
+  events1 = collectEvents(collectionTimeoutUs, minNEvent);
 
-  ASSERT_EQ(batch(handle, maxSamplingPeriodInNs, batchingPeriodInNs), Result::OK);
+  // second collection, without stop sensor
+  ASSERT_EQ(batch(handle, secondCollectionPeriod, batchingPeriodInNs), Result::OK);
 
   usleep(500000); // sleep 0.5 sec to wait for change rate to happen
-  events2 = collectEvents(sensor.maxDelay * minNEvent, minNEvent, true /*clearBeforeStart*/);
+  events2 = collectEvents(collectionTimeoutUs, minNEvent);
 
+  // end of collection, stop sensor
   ASSERT_EQ(activate(handle, 0), Result::OK);
 
   ALOGI("Collected %zu fast samples and %zu slow samples", events1.size(), events2.size());
@@ -1122,11 +1129,13 @@
   ASSERT_GT(events2.size(), 0u);
 
   int64_t minDelayAverageInterval, maxDelayAverageInterval;
+  std::vector<Event> &minDelayEvents(fastToSlow ? events1 : events2);
+  std::vector<Event> &maxDelayEvents(fastToSlow ? events2 : events1);
 
   size_t nEvent = 0;
   int64_t prevTimestamp = -1;
   int64_t timestampInterval = 0;
-  for (auto & e : events1) {
+  for (auto & e : minDelayEvents) {
     if (e.sensorType == type) {
       ASSERT_EQ(e.sensorHandle, handle);
       if (prevTimestamp > 0) {
@@ -1142,7 +1151,7 @@
   nEvent = 0;
   prevTimestamp = -1;
   timestampInterval = 0;
-  for (auto & e : events2) {
+  for (auto & e : maxDelayEvents) {
     if (e.sensorType == type) {
       ASSERT_EQ(e.sensorHandle, handle);
       if (prevTimestamp > 0) {
@@ -1156,27 +1165,35 @@
   maxDelayAverageInterval = timestampInterval / (nEvent - 1);
 
   // change of rate is significant.
+  ALOGI("min/maxDelayAverageInterval = %" PRId64 " %" PRId64,
+      minDelayAverageInterval, maxDelayAverageInterval);
   EXPECT_GT((maxDelayAverageInterval - minDelayAverageInterval), minDelayAverageInterval / 10);
 
   // fastest rate sampling time is close to spec
-  ALOGI("minDelayAverageInterval = %" PRId64, minDelayAverageInterval);
   EXPECT_LT(std::abs(minDelayAverageInterval - minSamplingPeriodInNs),
       minSamplingPeriodInNs / 10);
+
+  // slowest rate sampling time is close to spec
+  EXPECT_LT(std::abs(maxDelayAverageInterval - maxSamplingPeriodInNs),
+      maxSamplingPeriodInNs / 10);
 }
 
 // Test if sensor hal can do accelerometer sampling rate switch properly when sensor is active
 TEST_F(SensorsHidlTest, AccelerometerSamplingPeriodHotSwitchOperation) {
   testSamplingRateHotSwitchOperation(SensorType::ACCELEROMETER);
+  testSamplingRateHotSwitchOperation(SensorType::ACCELEROMETER, false /*fastToSlow*/);
 }
 
 // Test if sensor hal can do gyroscope sampling rate switch properly when sensor is active
 TEST_F(SensorsHidlTest, GyroscopeSamplingPeriodHotSwitchOperation) {
   testSamplingRateHotSwitchOperation(SensorType::GYROSCOPE);
+  testSamplingRateHotSwitchOperation(SensorType::GYROSCOPE, false /*fastToSlow*/);
 }
 
 // Test if sensor hal can do magnetometer sampling rate switch properly when sensor is active
 TEST_F(SensorsHidlTest, MagnetometerSamplingPeriodHotSwitchOperation) {
   testSamplingRateHotSwitchOperation(SensorType::MAGNETIC_FIELD);
+  testSamplingRateHotSwitchOperation(SensorType::MAGNETIC_FIELD, false /*fastToSlow*/);
 }
 
 void SensorsHidlTest::testBatchingOperation(SensorType type) {
@@ -1221,16 +1238,17 @@
   usleep(batchingPeriodInNs / 1000 * 8 / 10);
 
   SensorsHidlEnvironment::Instance()->setCollection(true);
-  // 0.8 + 0.3 times the batching period
-  // plus some time for the event to deliver
-  events = collectEvents(
-      batchingPeriodInNs / 1000 * 3 / 10,
-        minFifoCount, true /*clearBeforeStart*/, false /*change collection*/);
+  // clean existing collections
+  collectEvents(0 /*timeLimitUs*/, 0/*nEventLimit*/,
+        true /*clearBeforeStart*/, false /*change collection*/);
 
+  // 0.8 + 0.2 times the batching period
+  usleep(batchingPeriodInNs / 1000 * 8 / 10);
   ASSERT_EQ(flush(handle), Result::OK);
 
+  // plus some time for the event to deliver
   events = collectEvents(allowedBatchDeliverTimeNs / 1000,
-        minFifoCount, true /*clearBeforeStart*/, false /*change collection*/);
+        minFifoCount, false /*clearBeforeStart*/, false /*change collection*/);
 
   SensorsHidlEnvironment::Instance()->setCollection(false);
   ASSERT_EQ(activate(handle, 0), Result::OK);
@@ -1243,7 +1261,7 @@
   }
 
   // at least reach 90% of advertised capacity
-  ASSERT_GT(nEvent, (size_t)(batchingPeriodInNs / minSamplingPeriodInNs * 9 / 10));
+  ASSERT_GT(nEvent, (size_t)(minFifoCount * 9 / 10));
 }
 
 // Test if sensor hal can do accelerometer batching properly
@@ -1276,6 +1294,11 @@
 
   SensorInfo sensor = defaultSensorByType(type);
 
+  if (!isValidType(sensor.type)) {
+    // no default sensor of this type
+    return;
+  }
+
   if (!isDirectReportRateSupported(sensor, rate)) {
     return;
   }
diff --git a/soundtrigger/2.0/Android.bp b/soundtrigger/2.0/Android.bp
index f45c4e2..173aa75 100644
--- a/soundtrigger/2.0/Android.bp
+++ b/soundtrigger/2.0/Android.bp
@@ -73,3 +73,82 @@
         "android.hardware.audio.common@2.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.soundtrigger@2.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0",
+    srcs: [
+        ":android.hardware.soundtrigger@2.0_hal",
+    ],
+    out: [
+        "android/hardware/soundtrigger/2.0/ASoundTriggerHw.cpp",
+        "android/hardware/soundtrigger/2.0/ASoundTriggerHwCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.soundtrigger@2.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0",
+    srcs: [
+        ":android.hardware.soundtrigger@2.0_hal",
+    ],
+    out: [
+        "android/hardware/soundtrigger/2.0/ASoundTriggerHw.h",
+        "android/hardware/soundtrigger/2.0/ASoundTriggerHwCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.soundtrigger@2.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.soundtrigger@2.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.soundtrigger@2.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.soundtrigger@2.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.soundtrigger@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.soundtrigger@2.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.soundtrigger@2.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.soundtrigger@2.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.soundtrigger@2.0",
+        "android.hardware.soundtrigger@2.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.soundtrigger@2.0-adapter_genc++"],
+}
diff --git a/tests/bar/1.0/Android.bp b/tests/bar/1.0/Android.bp
index b6ee042..ce4b4fc 100644
--- a/tests/bar/1.0/Android.bp
+++ b/tests/bar/1.0/Android.bp
@@ -91,3 +91,90 @@
         "android.hardware.tests.foo@1.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.bar@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.bar@1.0",
+    srcs: [
+        ":android.hardware.tests.bar@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/bar/1.0/ABar.cpp",
+        "android/hardware/tests/bar/1.0/AComplicated.cpp",
+        "android/hardware/tests/bar/1.0/AFooCallback.cpp",
+        "android/hardware/tests/bar/1.0/AImportRules.cpp",
+        "android/hardware/tests/bar/1.0/AImportTypes.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.bar@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.bar@1.0",
+    srcs: [
+        ":android.hardware.tests.bar@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/bar/1.0/ABar.h",
+        "android/hardware/tests/bar/1.0/AComplicated.h",
+        "android/hardware/tests/bar/1.0/AFooCallback.h",
+        "android/hardware/tests/bar/1.0/AImportRules.h",
+        "android/hardware/tests/bar/1.0/AImportTypes.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.bar@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.bar@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.bar@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.bar@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.bar@1.0",
+        "android.hardware.tests.foo@1.0",
+        "android.hardware.tests.foo@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.bar@1.0",
+        "android.hardware.tests.foo@1.0",
+        "android.hardware.tests.foo@1.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.bar@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.bar@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.bar@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.bar@1.0",
+        "android.hardware.tests.foo@1.0",
+        "android.hardware.tests.bar@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.bar@1.0-adapter_genc++"],
+}
diff --git a/tests/baz/1.0/Android.bp b/tests/baz/1.0/Android.bp
index ef68149..3a208a8 100644
--- a/tests/baz/1.0/Android.bp
+++ b/tests/baz/1.0/Android.bp
@@ -82,3 +82,83 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.baz@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.baz@1.0",
+    srcs: [
+        ":android.hardware.tests.baz@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/baz/1.0/ABase.cpp",
+        "android/hardware/tests/baz/1.0/ABaz.cpp",
+        "android/hardware/tests/baz/1.0/ABazCallback.cpp",
+        "android/hardware/tests/baz/1.0/AQuux.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.baz@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.baz@1.0",
+    srcs: [
+        ":android.hardware.tests.baz@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/baz/1.0/ABase.h",
+        "android/hardware/tests/baz/1.0/ABaz.h",
+        "android/hardware/tests/baz/1.0/ABazCallback.h",
+        "android/hardware/tests/baz/1.0/AQuux.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.baz@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.baz@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.baz@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.baz@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.baz@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.baz@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.baz@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.baz@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.baz@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.baz@1.0",
+        "android.hardware.tests.baz@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.baz@1.0-adapter_genc++"],
+}
diff --git a/tests/expression/1.0/Android.bp b/tests/expression/1.0/Android.bp
index bc389b0..a54538c 100644
--- a/tests/expression/1.0/Android.bp
+++ b/tests/expression/1.0/Android.bp
@@ -64,3 +64,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.expression@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.expression@1.0",
+    srcs: [
+        ":android.hardware.tests.expression@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/expression/1.0/AExpression.cpp",
+        "android/hardware/tests/expression/1.0/AExpressionExt.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.expression@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.expression@1.0",
+    srcs: [
+        ":android.hardware.tests.expression@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/expression/1.0/AExpression.h",
+        "android/hardware/tests/expression/1.0/AExpressionExt.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.expression@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.expression@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.expression@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.expression@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.expression@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.expression@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.expression@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.expression@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.expression@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.expression@1.0",
+        "android.hardware.tests.expression@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.expression@1.0-adapter_genc++"],
+}
diff --git a/tests/extension/light/2.0/Android.bp b/tests/extension/light/2.0/Android.bp
index c5987a7..5220630 100644
--- a/tests/extension/light/2.0/Android.bp
+++ b/tests/extension/light/2.0/Android.bp
@@ -63,3 +63,82 @@
         "android.hardware.light@2.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.extension.light@2.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0",
+    srcs: [
+        ":android.hardware.tests.extension.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/extension/light/2.0/AExtLight.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.extension.light@2.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0",
+    srcs: [
+        ":android.hardware.tests.extension.light@2.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/extension/light/2.0/AExtLight.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.extension.light@2.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.extension.light@2.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.extension.light@2.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.extension.light@2.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.light@2.0",
+        "android.hardware.tests.extension.light@2.0",
+        "android.hardware.light@2.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.light@2.0",
+        "android.hardware.tests.extension.light@2.0",
+        "android.hardware.light@2.0-adapter-helper",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.extension.light@2.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.extension.light@2.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.light@2.0",
+        "android.hardware.tests.extension.light@2.0",
+        "android.hardware.tests.extension.light@2.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.extension.light@2.0-adapter_genc++"],
+}
diff --git a/tests/foo/1.0/Android.bp b/tests/foo/1.0/Android.bp
index 6387950..acf4fdd 100644
--- a/tests/foo/1.0/Android.bp
+++ b/tests/foo/1.0/Android.bp
@@ -89,3 +89,85 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.foo@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.foo@1.0",
+    srcs: [
+        ":android.hardware.tests.foo@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/foo/1.0/AFoo.cpp",
+        "android/hardware/tests/foo/1.0/AFooCallback.cpp",
+        "android/hardware/tests/foo/1.0/AMyTypes.cpp",
+        "android/hardware/tests/foo/1.0/ASimple.cpp",
+        "android/hardware/tests/foo/1.0/ATheirTypes.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.foo@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.foo@1.0",
+    srcs: [
+        ":android.hardware.tests.foo@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/foo/1.0/AFoo.h",
+        "android/hardware/tests/foo/1.0/AFooCallback.h",
+        "android/hardware/tests/foo/1.0/AMyTypes.h",
+        "android/hardware/tests/foo/1.0/ASimple.h",
+        "android/hardware/tests/foo/1.0/ATheirTypes.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.foo@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.foo@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.foo@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.foo@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.foo@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.foo@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.foo@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.foo@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.foo@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.foo@1.0",
+        "android.hardware.tests.foo@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.foo@1.0-adapter_genc++"],
+}
diff --git a/tests/hash/1.0/Android.bp b/tests/hash/1.0/Android.bp
index 505a4ad..3f7205e 100644
--- a/tests/hash/1.0/Android.bp
+++ b/tests/hash/1.0/Android.bp
@@ -57,3 +57,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.hash@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.hash@1.0",
+    srcs: [
+        ":android.hardware.tests.hash@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/hash/1.0/AHash.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.hash@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.hash@1.0",
+    srcs: [
+        ":android.hardware.tests.hash@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/hash/1.0/AHash.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.hash@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.hash@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.hash@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.hash@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.hash@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.hash@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.hash@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.hash@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.hash@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.hash@1.0",
+        "android.hardware.tests.hash@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.hash@1.0-adapter_genc++"],
+}
diff --git a/tests/inheritance/1.0/Android.bp b/tests/inheritance/1.0/Android.bp
index 5d8d53d..e693082 100644
--- a/tests/inheritance/1.0/Android.bp
+++ b/tests/inheritance/1.0/Android.bp
@@ -78,3 +78,83 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.inheritance@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.inheritance@1.0",
+    srcs: [
+        ":android.hardware.tests.inheritance@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/inheritance/1.0/AChild.cpp",
+        "android/hardware/tests/inheritance/1.0/AFetcher.cpp",
+        "android/hardware/tests/inheritance/1.0/AGrandparent.cpp",
+        "android/hardware/tests/inheritance/1.0/AParent.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.inheritance@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.inheritance@1.0",
+    srcs: [
+        ":android.hardware.tests.inheritance@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/inheritance/1.0/AChild.h",
+        "android/hardware/tests/inheritance/1.0/AFetcher.h",
+        "android/hardware/tests/inheritance/1.0/AGrandparent.h",
+        "android/hardware/tests/inheritance/1.0/AParent.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.inheritance@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.inheritance@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.inheritance@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.inheritance@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.inheritance@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.inheritance@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.inheritance@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.inheritance@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.inheritance@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.inheritance@1.0",
+        "android.hardware.tests.inheritance@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.inheritance@1.0-adapter_genc++"],
+}
diff --git a/tests/inheritance/1.0/default/Parent.cpp b/tests/inheritance/1.0/default/Parent.cpp
index d3f1932..1fabf1b 100644
--- a/tests/inheritance/1.0/default/Parent.cpp
+++ b/tests/inheritance/1.0/default/Parent.cpp
@@ -1,8 +1,10 @@
 #define LOG_TAG "hidl_test"
 
+#include "Parent.h"
+
 #include <log/log.h>
 
-#include "Parent.h"
+#include "Child.h"
 
 namespace android {
 namespace hardware {
@@ -23,8 +25,11 @@
     return Void();
 }
 
+IParent* HIDL_FETCH_IParent(const char* name) {
+    if (name == std::string("child")) {
+        return new Child();
+    }
 
-IParent* HIDL_FETCH_IParent(const char* /* name */) {
     return new Parent();
 }
 
diff --git a/tests/libhwbinder/1.0/Android.bp b/tests/libhwbinder/1.0/Android.bp
index 338a72b..0a84abb 100644
--- a/tests/libhwbinder/1.0/Android.bp
+++ b/tests/libhwbinder/1.0/Android.bp
@@ -64,3 +64,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.libhwbinder@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.libhwbinder@1.0",
+    srcs: [
+        ":android.hardware.tests.libhwbinder@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/libhwbinder/1.0/ABenchmark.cpp",
+        "android/hardware/tests/libhwbinder/1.0/AScheduleTest.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.libhwbinder@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.libhwbinder@1.0",
+    srcs: [
+        ":android.hardware.tests.libhwbinder@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/libhwbinder/1.0/ABenchmark.h",
+        "android/hardware/tests/libhwbinder/1.0/AScheduleTest.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.libhwbinder@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.libhwbinder@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.libhwbinder@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.libhwbinder@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.libhwbinder@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.libhwbinder@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.libhwbinder@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.libhwbinder@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.libhwbinder@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.libhwbinder@1.0",
+        "android.hardware.tests.libhwbinder@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.libhwbinder@1.0-adapter_genc++"],
+}
diff --git a/tests/memory/1.0/Android.bp b/tests/memory/1.0/Android.bp
index a753824..7a36c0e 100644
--- a/tests/memory/1.0/Android.bp
+++ b/tests/memory/1.0/Android.bp
@@ -57,3 +57,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.memory@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.memory@1.0",
+    srcs: [
+        ":android.hardware.tests.memory@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/memory/1.0/AMemoryTest.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.memory@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.memory@1.0",
+    srcs: [
+        ":android.hardware.tests.memory@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/memory/1.0/AMemoryTest.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.memory@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.memory@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.memory@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.memory@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.memory@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.memory@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.memory@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.memory@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.memory@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.memory@1.0",
+        "android.hardware.tests.memory@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.memory@1.0-adapter_genc++"],
+}
diff --git a/tests/msgq/1.0/Android.bp b/tests/msgq/1.0/Android.bp
index 0937545..0af5420 100644
--- a/tests/msgq/1.0/Android.bp
+++ b/tests/msgq/1.0/Android.bp
@@ -64,3 +64,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.msgq@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.msgq@1.0",
+    srcs: [
+        ":android.hardware.tests.msgq@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/msgq/1.0/ABenchmarkMsgQ.cpp",
+        "android/hardware/tests/msgq/1.0/ATestMsgQ.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.msgq@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.msgq@1.0",
+    srcs: [
+        ":android.hardware.tests.msgq@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/msgq/1.0/ABenchmarkMsgQ.h",
+        "android/hardware/tests/msgq/1.0/ATestMsgQ.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.msgq@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.msgq@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.msgq@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.msgq@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.msgq@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.msgq@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.msgq@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.msgq@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.msgq@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.msgq@1.0",
+        "android.hardware.tests.msgq@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.msgq@1.0-adapter_genc++"],
+}
diff --git a/tests/multithread/1.0/Android.bp b/tests/multithread/1.0/Android.bp
index 5f4c44c..df38695 100644
--- a/tests/multithread/1.0/Android.bp
+++ b/tests/multithread/1.0/Android.bp
@@ -57,3 +57,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.multithread@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.multithread@1.0",
+    srcs: [
+        ":android.hardware.tests.multithread@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/multithread/1.0/AMultithread.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.multithread@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.multithread@1.0",
+    srcs: [
+        ":android.hardware.tests.multithread@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/multithread/1.0/AMultithread.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.multithread@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.multithread@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.multithread@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.multithread@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.multithread@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.multithread@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.multithread@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.multithread@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.multithread@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.multithread@1.0",
+        "android.hardware.tests.multithread@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.multithread@1.0-adapter_genc++"],
+}
diff --git a/tests/pointer/1.0/Android.bp b/tests/pointer/1.0/Android.bp
index a765ae7..1644186 100644
--- a/tests/pointer/1.0/Android.bp
+++ b/tests/pointer/1.0/Android.bp
@@ -64,3 +64,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.pointer@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.pointer@1.0",
+    srcs: [
+        ":android.hardware.tests.pointer@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/pointer/1.0/AGraph.cpp",
+        "android/hardware/tests/pointer/1.0/APointer.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.pointer@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.pointer@1.0",
+    srcs: [
+        ":android.hardware.tests.pointer@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/pointer/1.0/AGraph.h",
+        "android/hardware/tests/pointer/1.0/APointer.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.pointer@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.pointer@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.pointer@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.pointer@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.pointer@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.pointer@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.pointer@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.pointer@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.pointer@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.pointer@1.0",
+        "android.hardware.tests.pointer@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.pointer@1.0-adapter_genc++"],
+}
diff --git a/tests/trie/1.0/Android.bp b/tests/trie/1.0/Android.bp
index 9e11c3e..27b5ea5 100644
--- a/tests/trie/1.0/Android.bp
+++ b/tests/trie/1.0/Android.bp
@@ -61,3 +61,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tests.trie@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.trie@1.0",
+    srcs: [
+        ":android.hardware.tests.trie@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/trie/1.0/ATrie.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.trie@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.trie@1.0",
+    srcs: [
+        ":android.hardware.tests.trie@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tests/trie/1.0/ATrie.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tests.trie@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tests.trie@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tests.trie@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tests.trie@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tests.trie@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tests.trie@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tests.trie@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.trie@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tests.trie@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tests.trie@1.0",
+        "android.hardware.tests.trie@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tests.trie@1.0-adapter_genc++"],
+}
diff --git a/tetheroffload/config/1.0/Android.bp b/tetheroffload/config/1.0/Android.bp
index 2d62f16..705253d 100644
--- a/tetheroffload/config/1.0/Android.bp
+++ b/tetheroffload/config/1.0/Android.bp
@@ -60,3 +60,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tetheroffload.config@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tetheroffload.config@1.0",
+    srcs: [
+        ":android.hardware.tetheroffload.config@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tetheroffload/config/1.0/AOffloadConfig.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tetheroffload.config@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tetheroffload.config@1.0",
+    srcs: [
+        ":android.hardware.tetheroffload.config@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tetheroffload/config/1.0/AOffloadConfig.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tetheroffload.config@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tetheroffload.config@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tetheroffload.config@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tetheroffload.config@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tetheroffload.config@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tetheroffload.config@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tetheroffload.config@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tetheroffload.config@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tetheroffload.config@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tetheroffload.config@1.0",
+        "android.hardware.tetheroffload.config@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tetheroffload.config@1.0-adapter_genc++"],
+}
diff --git a/tetheroffload/control/1.0/Android.bp b/tetheroffload/control/1.0/Android.bp
index 72f410e..75750f0 100644
--- a/tetheroffload/control/1.0/Android.bp
+++ b/tetheroffload/control/1.0/Android.bp
@@ -71,3 +71,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tetheroffload.control@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tetheroffload.control@1.0",
+    srcs: [
+        ":android.hardware.tetheroffload.control@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tetheroffload/control/1.0/AOffloadControl.cpp",
+        "android/hardware/tetheroffload/control/1.0/ATetheringOffloadCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tetheroffload.control@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tetheroffload.control@1.0",
+    srcs: [
+        ":android.hardware.tetheroffload.control@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tetheroffload/control/1.0/AOffloadControl.h",
+        "android/hardware/tetheroffload/control/1.0/ATetheringOffloadCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tetheroffload.control@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tetheroffload.control@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tetheroffload.control@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tetheroffload.control@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tetheroffload.control@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tetheroffload.control@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tetheroffload.control@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tetheroffload.control@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tetheroffload.control@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tetheroffload.control@1.0",
+        "android.hardware.tetheroffload.control@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tetheroffload.control@1.0-adapter_genc++"],
+}
diff --git a/thermal/1.0/Android.bp b/thermal/1.0/Android.bp
index aa97175..da1e641 100644
--- a/thermal/1.0/Android.bp
+++ b/thermal/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.thermal@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0",
+    srcs: [
+        ":android.hardware.thermal@1.0_hal",
+    ],
+    out: [
+        "android/hardware/thermal/1.0/AThermal.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.thermal@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0",
+    srcs: [
+        ":android.hardware.thermal@1.0_hal",
+    ],
+    out: [
+        "android/hardware/thermal/1.0/AThermal.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.thermal@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.thermal@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.thermal@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.thermal@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.thermal@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.thermal@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.thermal@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.thermal@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.thermal@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.thermal@1.0",
+        "android.hardware.thermal@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.thermal@1.0-adapter_genc++"],
+}
diff --git a/tv/cec/1.0/Android.bp b/tv/cec/1.0/Android.bp
index c9da737..10902ef 100644
--- a/tv/cec/1.0/Android.bp
+++ b/tv/cec/1.0/Android.bp
@@ -71,3 +71,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.tv.cec@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0",
+    srcs: [
+        ":android.hardware.tv.cec@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/cec/1.0/AHdmiCec.cpp",
+        "android/hardware/tv/cec/1.0/AHdmiCecCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tv.cec@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0",
+    srcs: [
+        ":android.hardware.tv.cec@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/cec/1.0/AHdmiCec.h",
+        "android/hardware/tv/cec/1.0/AHdmiCecCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tv.cec@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tv.cec@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tv.cec@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tv.cec@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.tv.cec@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.tv.cec@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tv.cec@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.cec@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tv.cec@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.tv.cec@1.0",
+        "android.hardware.tv.cec@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tv.cec@1.0-adapter_genc++"],
+}
diff --git a/tv/input/1.0/Android.bp b/tv/input/1.0/Android.bp
index 22ea1d8..36b2f13 100644
--- a/tv/input/1.0/Android.bp
+++ b/tv/input/1.0/Android.bp
@@ -73,3 +73,82 @@
         "android.hardware.audio.common@2.0",
     ],
 }
+
+genrule {
+    name: "android.hardware.tv.input@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0",
+    srcs: [
+        ":android.hardware.tv.input@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/input/1.0/ATvInput.cpp",
+        "android/hardware/tv/input/1.0/ATvInputCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tv.input@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0",
+    srcs: [
+        ":android.hardware.tv.input@1.0_hal",
+    ],
+    out: [
+        "android/hardware/tv/input/1.0/ATvInput.h",
+        "android/hardware/tv/input/1.0/ATvInputCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.tv.input@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.tv.input@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.tv.input@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.tv.input@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.tv.input@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.tv.input@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.tv.input@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tv.input@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.tv.input@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.audio.common@2.0",
+        "android.hardware.tv.input@1.0",
+        "android.hardware.tv.input@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.tv.input@1.0-adapter_genc++"],
+}
diff --git a/update-base-files.sh b/update-base-files.sh
index 1eb6b51..bb99d22 100755
--- a/update-base-files.sh
+++ b/update-base-files.sh
@@ -1,11 +1,11 @@
 #!/bin/bash
 
-if [ ! -d hardware/interfaces ] ; then
+if [ ! -d $ANDROID_BUILD_TOP/hardware/interfaces ] ; then
   echo "Where is hardware/interfaces?";
   exit 1;
 fi
 
-if [ ! -d system/libhidl/transport ] ; then
+if [ ! -d $ANDROID_BUILD_TOP/system/libhidl/transport ] ; then
   echo "Where is system/libhidl/transport?";
   exit 1;
 fi
@@ -20,24 +20,24 @@
 
 # hardware/libhardware
 hidl-gen $options \
-         -o hardware/libhardware/include/hardware/sensors-base.h \
+         -o $ANDROID_BUILD_TOP/hardware/libhardware/include/hardware/sensors-base.h \
          android.hardware.sensors@1.0
 hidl-gen $options \
-         -o hardware/libhardware/include/hardware/nfc-base.h \
+         -o $ANDROID_BUILD_TOP/hardware/libhardware/include/hardware/nfc-base.h \
          android.hardware.nfc@1.0
 hidl-gen $options \
-         -o hardware/libhardware/include/hardware/gnss-base.h \
+         -o $ANDROID_BUILD_TOP/hardware/libhardware/include/hardware/gnss-base.h \
          android.hardware.gnss@1.0
 
 # system/core
 hidl-gen $options \
-         -o system/core/include/system/graphics-base.h \
+         -o $ANDROID_BUILD_TOP/system/core/include/system/graphics-base.h \
          android.hardware.graphics.common@1.0
 
 # system/media
 hidl-gen $options \
-         -o system/media/audio/include/system/audio-base.h \
+         -o $ANDROID_BUILD_TOP/system/media/audio/include/system/audio-base.h \
          android.hardware.audio.common@2.0
 hidl-gen $options \
-         -o system/media/audio/include/system/audio_effect-base.h \
+         -o $ANDROID_BUILD_TOP/system/media/audio/include/system/audio_effect-base.h \
          android.hardware.audio.effect@2.0
diff --git a/usb/1.0/Android.bp b/usb/1.0/Android.bp
index afe1931..e97dbf9 100644
--- a/usb/1.0/Android.bp
+++ b/usb/1.0/Android.bp
@@ -71,3 +71,79 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.usb@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0",
+    srcs: [
+        ":android.hardware.usb@1.0_hal",
+    ],
+    out: [
+        "android/hardware/usb/1.0/AUsb.cpp",
+        "android/hardware/usb/1.0/AUsbCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.usb@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0",
+    srcs: [
+        ":android.hardware.usb@1.0_hal",
+    ],
+    out: [
+        "android/hardware/usb/1.0/AUsb.h",
+        "android/hardware/usb/1.0/AUsbCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.usb@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.usb@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.usb@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.usb@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.usb@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.usb@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.usb@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.usb@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.usb@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.usb@1.0",
+        "android.hardware.usb@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.usb@1.0-adapter_genc++"],
+}
diff --git a/vibrator/1.0/Android.bp b/vibrator/1.0/Android.bp
index 354b83f..0a48e00 100644
--- a/vibrator/1.0/Android.bp
+++ b/vibrator/1.0/Android.bp
@@ -64,3 +64,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.vibrator@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0",
+    srcs: [
+        ":android.hardware.vibrator@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vibrator/1.0/AVibrator.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.vibrator@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0",
+    srcs: [
+        ":android.hardware.vibrator@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vibrator/1.0/AVibrator.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.vibrator@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.vibrator@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.vibrator@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.vibrator@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.vibrator@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.vibrator@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.vibrator@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vibrator@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.vibrator@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.vibrator@1.0",
+        "android.hardware.vibrator@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.vibrator@1.0-adapter_genc++"],
+}
diff --git a/vr/1.0/Android.bp b/vr/1.0/Android.bp
index cb9e2af..5da5857 100644
--- a/vr/1.0/Android.bp
+++ b/vr/1.0/Android.bp
@@ -60,3 +60,77 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.vr@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0",
+    srcs: [
+        ":android.hardware.vr@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vr/1.0/AVr.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.vr@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0",
+    srcs: [
+        ":android.hardware.vr@1.0_hal",
+    ],
+    out: [
+        "android/hardware/vr/1.0/AVr.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.vr@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.vr@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.vr@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.vr@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.vr@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.vr@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.vr@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.vr@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.vr@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.vr@1.0",
+        "android.hardware.vr@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.vr@1.0-adapter_genc++"],
+}
diff --git a/wifi/1.0/Android.bp b/wifi/1.0/Android.bp
index d7db770..088591a 100644
--- a/wifi/1.0/Android.bp
+++ b/wifi/1.0/Android.bp
@@ -148,3 +148,101 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.wifi@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0",
+    srcs: [
+        ":android.hardware.wifi@1.0_hal",
+    ],
+    out: [
+        "android/hardware/wifi/1.0/AWifi.cpp",
+        "android/hardware/wifi/1.0/AWifiApIface.cpp",
+        "android/hardware/wifi/1.0/AWifiChip.cpp",
+        "android/hardware/wifi/1.0/AWifiChipEventCallback.cpp",
+        "android/hardware/wifi/1.0/AWifiEventCallback.cpp",
+        "android/hardware/wifi/1.0/AWifiIface.cpp",
+        "android/hardware/wifi/1.0/AWifiNanIface.cpp",
+        "android/hardware/wifi/1.0/AWifiNanIfaceEventCallback.cpp",
+        "android/hardware/wifi/1.0/AWifiP2pIface.cpp",
+        "android/hardware/wifi/1.0/AWifiRttController.cpp",
+        "android/hardware/wifi/1.0/AWifiRttControllerEventCallback.cpp",
+        "android/hardware/wifi/1.0/AWifiStaIface.cpp",
+        "android/hardware/wifi/1.0/AWifiStaIfaceEventCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.wifi@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0",
+    srcs: [
+        ":android.hardware.wifi@1.0_hal",
+    ],
+    out: [
+        "android/hardware/wifi/1.0/AWifi.h",
+        "android/hardware/wifi/1.0/AWifiApIface.h",
+        "android/hardware/wifi/1.0/AWifiChip.h",
+        "android/hardware/wifi/1.0/AWifiChipEventCallback.h",
+        "android/hardware/wifi/1.0/AWifiEventCallback.h",
+        "android/hardware/wifi/1.0/AWifiIface.h",
+        "android/hardware/wifi/1.0/AWifiNanIface.h",
+        "android/hardware/wifi/1.0/AWifiNanIfaceEventCallback.h",
+        "android/hardware/wifi/1.0/AWifiP2pIface.h",
+        "android/hardware/wifi/1.0/AWifiRttController.h",
+        "android/hardware/wifi/1.0/AWifiRttControllerEventCallback.h",
+        "android/hardware/wifi/1.0/AWifiStaIface.h",
+        "android/hardware/wifi/1.0/AWifiStaIfaceEventCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.wifi@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.wifi@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.wifi@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.wifi@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.wifi@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.wifi@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.wifi@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.wifi@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.wifi@1.0",
+        "android.hardware.wifi@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.wifi@1.0-adapter_genc++"],
+}
diff --git a/wifi/supplicant/1.0/Android.bp b/wifi/supplicant/1.0/Android.bp
index 978192d..4bf8e68 100644
--- a/wifi/supplicant/1.0/Android.bp
+++ b/wifi/supplicant/1.0/Android.bp
@@ -141,3 +141,99 @@
         "libutils",
     ],
 }
+
+genrule {
+    name: "android.hardware.wifi.supplicant@1.0-adapter-helper_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0",
+    srcs: [
+        ":android.hardware.wifi.supplicant@1.0_hal",
+    ],
+    out: [
+        "android/hardware/wifi/supplicant/1.0/ASupplicant.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantCallback.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantIface.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantNetwork.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantP2pIface.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantP2pIfaceCallback.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantP2pNetwork.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantP2pNetworkCallback.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantStaIface.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantStaIfaceCallback.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantStaNetwork.cpp",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantStaNetworkCallback.cpp",
+    ],
+}
+
+genrule {
+    name: "android.hardware.wifi.supplicant@1.0-adapter-helper_genc++_headers",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0",
+    srcs: [
+        ":android.hardware.wifi.supplicant@1.0_hal",
+    ],
+    out: [
+        "android/hardware/wifi/supplicant/1.0/ASupplicant.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantCallback.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantIface.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantNetwork.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantP2pIface.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantP2pIfaceCallback.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantP2pNetwork.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantP2pNetworkCallback.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantStaIface.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantStaIfaceCallback.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantStaNetwork.h",
+        "android/hardware/wifi/supplicant/1.0/ASupplicantStaNetworkCallback.h",
+    ],
+}
+
+
+cc_library {
+    name: "android.hardware.wifi.supplicant@1.0-adapter-helper",
+    defaults: ["hidl-module-defaults"],
+    generated_sources: ["android.hardware.wifi.supplicant@1.0-adapter-helper_genc++"],
+    generated_headers: ["android.hardware.wifi.supplicant@1.0-adapter-helper_genc++_headers"],
+    export_generated_headers: ["android.hardware.wifi.supplicant@1.0-adapter-helper_genc++_headers"],
+    vendor_available: true,
+    shared_libs: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+        "libcutils",
+        "libhidladapter",
+        "android.hardware.wifi.supplicant@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+    export_shared_lib_headers: [
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "libutils",
+        "libhidladapter",
+        "android.hardware.wifi.supplicant@1.0",
+        "android.hidl.base@1.0-adapter-helper",
+    ],
+}
+
+genrule {
+    name: "android.hardware.wifi.supplicant@1.0-adapter_genc++",
+    tools: ["hidl-gen"],
+    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.wifi.supplicant@1.0",
+    out: ["main.cpp"]
+}
+
+cc_test {
+    name: "android.hardware.wifi.supplicant@1.0-adapter",
+    shared_libs: [
+        "libhidladapter",
+        "libhidlbase",
+        "libhidltransport",
+        "libutils",
+        "android.hardware.wifi.supplicant@1.0",
+        "android.hardware.wifi.supplicant@1.0-adapter-helper",
+    ],
+    generated_sources: ["android.hardware.wifi.supplicant@1.0-adapter_genc++"],
+}