android: Add pre-4.7 Android kernel compatibility to our libsync header.

The downstream Android kernels had a different API than was merged
upstream, and libsync on Android abstracts over that for us.  Use their
sync_merge() and sync_wait(), at the cost of linking against libsync
(which Android.mk and meson both do).

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6821>
diff --git a/src/util/libsync.h b/src/util/libsync.h
index f1a2f96..2e9f499 100644
--- a/src/util/libsync.h
+++ b/src/util/libsync.h
@@ -40,6 +40,14 @@
 extern "C" {
 #endif
 
+#ifdef ANDROID
+/* On Android, rely on the system's libsync instead of rolling our own
+ * sync_wait() and sync_merge().  This gives us compatibility with pre-4.7
+ * Android kernels.
+ */
+#include <android/sync.h>
+#else
+
 #ifndef SYNC_IOC_MERGE
 /* duplicated from linux/sync_file.h to avoid build-time dependency
  * on new (v4.7) kernel headers.  Once distro's are mostly using
@@ -101,6 +109,8 @@
 	return data.fence;
 }
 
+#endif /* !ANDROID */
+
 /* accumulate fd2 into fd1.  If *fd1 is not a valid fd then dup fd2,
  * otherwise sync_merge() and close the old *fd1.  This can be used
  * to implement the pattern: