summaryrefslogtreecommitdiff
path: root/external/cppunit/android.patch
diff options
context:
space:
mode:
Diffstat (limited to 'external/cppunit/android.patch')
-rw-r--r--external/cppunit/android.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/external/cppunit/android.patch b/external/cppunit/android.patch
new file mode 100644
index 000000000000..59ae4517abf1
--- /dev/null
+++ b/external/cppunit/android.patch
@@ -0,0 +1,33 @@
+--- misc/cppunit-1.13.1/config/ltmain.sh
++++ misc/build/cppunit-1.13.1/config/ltmain.sh
+@@ -3228,6 +3228,12 @@
+ fi
+ else
+
++ # Force no versioning suffix for Android thanks to silly
++ # apkbuilder which doesn't add extra native libs unless their
++ # name ends with .so
++
++ version_type=none
++
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+--- misc/cppunit-1.13.1/src/cppunit/UnixDynamicLibraryManager.cpp
++++ misc/build/cppunit-1.13.1/src/cppunit/UnixDynamicLibraryManager.cpp
+@@ -13,7 +13,15 @@
+ DynamicLibraryManager::LibraryHandle
+ DynamicLibraryManager::doLoadLibrary( const std::string &libraryName )
+ {
++#ifdef __ANDROID__
++ // Use our enhanced dlopen() wrapper, see sal/osl/android/jni/lo-wrapper.c
++ void *(*lo_dlopen)(const char *) = (void *(*)(const char *)) dlsym( RTLD_DEFAULT, "lo_dlopen" );
++ if (lo_dlopen == NULL)
++ return NULL;
++ return (*lo_dlopen)( libraryName.c_str() );
++#else
+ return ::dlopen( libraryName.c_str(), RTLD_NOW | RTLD_GLOBAL );
++#endif
+ }
+
+