From da80ac3f712e368cc68687463f15a407bc464fc4 Mon Sep 17 00:00:00 2001
From: Korcan Hussein <korcan.hussein@collabora.com>
Date: Fri, 28 Jun 2024 13:33:54 +0100
Subject: [PATCH] ipc/android: Allow custom service library names

Monado derivatives may choose to create and use a
custom variant of service-lib for android builds
with a different library name, this change replaces the
hard-coded library name used for dynamic lib loading.

Part-of: <https://gitlab.freedesktop.org/monado/monado/-/merge_requests/2265>
---
 src/xrt/ipc/android/build.gradle                          | 8 ++++++++
 .../main/java/org/freedesktop/monado/ipc/MonadoImpl.java  | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/xrt/ipc/android/build.gradle b/src/xrt/ipc/android/build.gradle
index d50c408f8..7b1dee2b0 100644
--- a/src/xrt/ipc/android/build.gradle
+++ b/src/xrt/ipc/android/build.gradle
@@ -21,6 +21,13 @@ android {
         minSdkVersion 26
         targetSdkVersion project.sharedTargetSdk
 
+        def defaultServiceLibName = "monado-service"
+        def serviceLibName = project.hasProperty("serviceLibName") ?
+            project.serviceLibName : defaultServiceLibName
+        if (serviceLibName == null || serviceLibName.length() == 0) {
+            serviceLibName = defaultServiceLibName
+        }
+
         // Single point of truth for these names.
         def serviceAction = "org.freedesktop.monado.ipc.CONNECT"
         def shutdownAction = "org.freedesktop.monado.ipc.SHUTDOWN"
@@ -31,6 +38,7 @@ android {
         buildConfigField("String", "SERVICE_ACTION", "\"${serviceAction}\"")
         buildConfigField("String", "SHUTDOWN_ACTION", "\"${shutdownAction}\"")
         buildConfigField("Long", "WATCHDOG_TIMEOUT_MILLISECONDS", "1500L")
+        buildConfigField("String", "SERVICE_LIB_NAME", "\"${serviceLibName}\"")
     }
 
     buildTypes {
diff --git a/src/xrt/ipc/android/src/main/java/org/freedesktop/monado/ipc/MonadoImpl.java b/src/xrt/ipc/android/src/main/java/org/freedesktop/monado/ipc/MonadoImpl.java
index f96c0eeb9..57f4edec9 100644
--- a/src/xrt/ipc/android/src/main/java/org/freedesktop/monado/ipc/MonadoImpl.java
+++ b/src/xrt/ipc/android/src/main/java/org/freedesktop/monado/ipc/MonadoImpl.java
@@ -36,7 +36,7 @@ public class MonadoImpl extends IMonado.Stub {
     static {
         // Load the shared library with the native parts of this class
         // This is the service-lib target.
-        System.loadLibrary("monado-service");
+        System.loadLibrary(BuildConfig.SERVICE_LIB_NAME);
     }
 
     private final Context context;