浏览代码

package/gcnano-binaries: create symlinks for libGLESv2 and libGLESv1_CM.so

At least libepoxy, a user of OpenGL ES, expects libraries to be
available as libGLESv2.so.2 and libGLESv1_CM.so.1. While other OpenGL
implementations comply with this, gcnano-binaries does not, and
installs its libraries directly as .so, without any ABI version,
causing runtime failures with libepoxy or SDL2, as it tries to
dlopen() the OpenGL ES libraries with their ABI suffix.

See for example the libepoxy code:

  https://github.com/anholt/libepoxy/blob/master/src/dispatch_common.c#L191

Fix this issue by adding the relevant symlinks.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Thomas Petazzoni 3 年之前
父节点
当前提交
32e97c6588
共有 1 个文件被更改,包括 7 次插入0 次删除
  1. 7 0
      package/gcnano-binaries/gcnano-binaries.mk

+ 7 - 0
package/gcnano-binaries/gcnano-binaries.mk

@@ -44,10 +44,17 @@ GCNANO_BINARIES_MODULE_MAKE_OPTS = \
 
 GCNANO_BINARIES_USERLAND_SUBDIR = gcnano-userland-multi-$(GCNANO_BINARIES_USERLAND_VERSION)
 
+# This creates:
+#   libGLESv2.so.2    -> libGLESv2.so
+#   libGLESv1_CM.so.1 -> libGLESv1_CM.so
+# symlinks, as most OpenGL implementations have them, and they are
+# expected by some users such as libepoxy.
 define GCNANO_BINARIES_INSTALL
 	cd $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/release/drivers/ ; \
 	find . -type f -exec $(INSTALL) -D -m 0755 {} $(1)/usr/lib/{} \; ; \
 	find . -type l -exec cp -a {} $(1)/usr/lib \;
+	ln -sf libGLESv2.so $(1)/usr/lib/libGLESv2.so.2
+	ln -sf libGLESv1_CM.so $(1)/usr/lib/libGLESv1_CM.so.1
 	mkdir -p $(1)/usr/include
 	cp -a $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/release/include/* $(1)/usr/include/
 	ln -sf gbm/gbm.h $(1)/usr/include/gbm.h