Merge "Don't use service notifications if we can't."
diff --git a/Android.bp b/Android.bp
index f9b1e96..032a61a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12,14 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-subdirs = [
-    "adapter",
-    "base",           // libhidlbase
-    "libhidlmemory",  // libhidlmemory
-    "minijail",
-    "transport",      // libhidltransport
-]
-
 cc_defaults {
     name: "libhidl-defaults",
     cflags: [
diff --git a/base/include/hidl/HidlSupport.h b/base/include/hidl/HidlSupport.h
index 486fd0a..5cda20a 100644
--- a/base/include/hidl/HidlSupport.h
+++ b/base/include/hidl/HidlSupport.h
@@ -173,15 +173,15 @@
 };
 
 // Use NOLINT to suppress missing parentheses warnings around OP.
-#define HIDL_STRING_OPERATOR(OP)                                               \
-    inline bool operator OP(const hidl_string &hs1, const hidl_string &hs2) {  \
-        return strcmp(hs1.c_str(), hs2.c_str()) OP 0;     /* NOLINT */         \
-    }                                                                          \
-    inline bool operator OP(const hidl_string &hs, const char *s) {            \
-        return strcmp(hs.c_str(), s) OP 0;                /* NOLINT */         \
-    }                                                                          \
-    inline bool operator OP(const char *s, const hidl_string &hs) {            \
-        return strcmp(hs.c_str(), s) OP 0;                /* NOLINT */         \
+#define HIDL_STRING_OPERATOR(OP)                                              \
+    inline bool operator OP(const hidl_string& hs1, const hidl_string& hs2) { \
+        return strcmp(hs1.c_str(), hs2.c_str()) OP 0; /* NOLINT */            \
+    }                                                                         \
+    inline bool operator OP(const hidl_string& hs, const char* s) {           \
+        return strcmp(hs.c_str(), s) OP 0; /* NOLINT */                       \
+    }                                                                         \
+    inline bool operator OP(const char* s, const hidl_string& hs) {           \
+        return strcmp(s, hs.c_str()) OP 0; /* NOLINT */                       \
     }
 
 HIDL_STRING_OPERATOR(==)
@@ -983,6 +983,13 @@
             + details::toString(details::const_accessor<T, SIZE1, SIZE2, SIZES...>(a.data()));
 }
 
+/**
+ * Every HIDL generated enum generates an implementation of this function.
+ * E.x.: for(const auto v : hidl_enum_iterator<Enum>) { ... }
+ */
+template <typename>
+struct hidl_enum_iterator;
+
 }  // namespace hardware
 }  // namespace android
 
diff --git a/transport/Android.bp b/transport/Android.bp
index f4ca01c..b0c40e2 100644
--- a/transport/Android.bp
+++ b/transport/Android.bp
@@ -12,19 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-subdirs = [
-    "allocator/1.0",
-    "allocator/1.0/default",
-    "allocator/1.0/utils",
-    "base/1.0",
-    "manager/1.0",
-    "manager/1.1",
-    "memory/1.0",
-    "memory/1.0/default",
-    "token/1.0",
-    "token/1.0/utils",
-]
-
 hidl_package_root {
     name: "android.hidl",
     path: "system/libhidl/transport",