Merge "Allow libhardware to be used in recovery" am: dc62b58d3d am: ced9903818
am: 93221cf4cd

Change-Id: I717bca2bb50f94abef03f628c91b535b7cb7c267
diff --git a/Android.bp b/Android.bp
index 4766b71..ce4214e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -16,7 +16,17 @@
     ],
 
     export_include_dirs: ["include"],
+    recovery_available: true,
     vendor_available: true,
+    target: {
+        recovery: {
+            exclude_header_libs: [
+                "libaudio_system_headers",
+                "libbluetooth-types-header",
+            ],
+        },
+    },
+
 }
 
 cc_library_shared {
@@ -38,9 +48,15 @@
     header_libs: ["libhardware_headers"],
     export_header_lib_headers: ["libhardware_headers"],
 
+    recovery_available: true,
     vendor_available: true,
     vndk: {
         enabled: true,
         support_system_process: true,
     },
+    target: {
+        recovery: {
+            exclude_shared_libs: ["libvndksupport"],
+        },
+    },
 }
diff --git a/hardware.c b/hardware.c
index bd55087..40ae1d1 100644
--- a/hardware.c
+++ b/hardware.c
@@ -29,7 +29,9 @@
 #define LOG_TAG "HAL"
 #include <log/log.h>
 
+#if !defined(__ANDROID_RECOVERY__)
 #include <vndksupport/linker.h>
+#endif
 
 /** Base path of the hal modules */
 #if defined(__LP64__)
@@ -94,7 +96,11 @@
          */
         handle = dlopen(path, RTLD_NOW);
     } else {
+#if defined(__ANDROID_RECOVERY__)
+        handle = dlopen(path, RTLD_NOW);
+#else
         handle = android_load_sphal_library(path, RTLD_NOW);
+#endif
     }
     if (handle == NULL) {
         char const *err_str = dlerror();