mesa: dri: Add shared glapi to LIBADD on Android
authorNicolas Boichat <drinkcat@chromium.org>
Thu, 28 Apr 2016 10:41:39 +0000 (18:41 +0800)
committerEmil Velikov <emil.l.velikov@gmail.com>
Mon, 23 May 2016 12:25:51 +0000 (13:25 +0100)
/system/vendor/lib/dri/*_dri.so actually depend on libglapi: without
this, loading the so file fails with:
cannot locate symbol "__emutls_v._glapi_tls_Context"

On non-Android (non-bionic) platform, EGL uses the following
workflow, which works fine:
  dlopen("libglapi.so", RTLD_LAZY | RTLD_GLOBAL);
  dlopen("dri/<driver>_dri.so", RTLD_NOW | RTLD_GLOBAL);

However, bionic does not respect the RTLD_GLOBAL flag, and the dri
library cannot find symbols in libglapi.so, so we need to link
to libglapi.so explicitly. Android.mk already does this.

Signed-off-by: Nicolas Boichat <drinkcat@google.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
[Emil Velikov: s/explicitely/explicitly/]
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
src/mesa/drivers/dri/Makefile.am

index 08a8e6455219da5b9cf53557d83fc4143aed9331..1c6dd08a85d680d9ebb69913604e6540d7af1e48 100644 (file)
@@ -6,6 +6,13 @@ MEGADRIVERS_DEPS =
 
 SUBDIRS+=common
 
+# On Android, we need to explicitly link to libglapi.so.
+if HAVE_ANDROID
+if HAVE_SHARED_GLAPI
+SHARED_GLAPI_LIB = $(top_builddir)/src/mapi/shared-glapi/libglapi.la
+endif
+endif
+
 if HAVE_I915_DRI
 SUBDIRS += i915
 MEGADRIVERS_DEPS += i915/libi915_dri.la
@@ -61,6 +68,7 @@ mesa_dri_drivers_la_LIBADD = \
         common/libmegadriver_stub.la \
         common/libdricommon.la \
         common/libxmlconfig.la \
+        $(SHARED_GLAPI_LIB) \
         $(MEGADRIVERS_DEPS) \
         $(DRI_LIB_DEPS) \
         $()