Work around upstream issues for building libmali package

This commit is contained in:
zador-blood-stained 2017-11-20 19:36:15 +03:00
parent 32ca24b874
commit 08133de3a2
24 changed files with 517 additions and 16 deletions

View file

@ -1,6 +1,6 @@
# libDRI2
# needed only on Debian
# required for xf86-video-fbturbo
# required for xf86-video-fbturbo and libmali-sunxi-r3p0
local package_name="libDRI2"
local package_repo="https://github.com/robclark/libdri2.git"
local package_ref="branch:master"

View file

@ -1,10 +1,12 @@
# libmali-sunxi-r3p0
# depends on libUMP
# depends on libdri2 on Jessie
local package_name="libmali-sunxi-r3p0"
local package_repo="https://github.com/linux-sunxi/sunxi-mali.git"
local package_ref="branch:master"
local package_builddeps="xutils-dev libegl1-mesa-dev libgles1-mesa-dev libgles2-mesa-dev"
local package_install_target="libmali-sunxi-r3p0 mali-sunxi-utils"
local package_builddeps="xutils-dev libdrm-dev libxfixes-dev"
local package_builddeps_xenial="libdri2-dev"
local package_install_target="libmali-sunxi-r3p0"
local package_component="${release}-desktop"
package_checkbuild()

View file

@ -0,0 +1,21 @@
# libmali-sunxi-r3p0
# depends on libUMP
# depends on libdri2 on Jessie
local package_name="libmali-sunxi-r3p0"
local package_repo="https://github.com/linux-sunxi/sunxi-mali.git"
local package_ref="branch:master"
local package_builddeps="xutils-dev libdrm-dev libxfixes-dev libegl1-mesa-dev libgles1-mesa-dev libgles2-mesa-dev"
local package_builddeps_xenial="libdri2-dev"
local package_install_target="libmali-sunxi-r3p0 mali-sunxi-utils"
local package_component="${release}-desktop"
package_checkbuild()
{
# we don't support running kernels < 3.13 on Stretch
[[ $arch == armhf && $release != stretch ]]
}
package_checkinstall()
{
[[ $LINUXFAMILY == sun[4578]i && $BRANCH == default && $RELEASE != stretch && $BUILD_DESKTOP == yes ]]
}

View file

@ -0,0 +1,5 @@
libmali-sunxi-r3p0 (1.0-1) unstable; urgency=low
* Initial release
-- root <root@unknown> Mon, 11 Jul 2016 17:02:30 +0300

View file

@ -0,0 +1 @@
9

View file

@ -0,0 +1,63 @@
Source: libmali-sunxi-r3p0
Priority: optional
Maintainer: root <root@unknown>
Build-Depends:
debhelper (>= 9),
xutils-dev,
libdrm-dev,
libdri2-dev,
libxfixes-dev,
libegl1-mesa-dev,
libgles2-mesa-dev,
Standards-Version: 3.9.5
Section: libs
Homepage: https://github.com/linux-sunxi/sunxi-mali/
Package: libmali-sunxi-r3p0
Architecture: any
Pre-Depends:
armbian-bsp,
${misc:Pre-Depends}
Depends:
${shlibs:Depends},
${misc:Depends}
Replaces:
libegl1-mesa,
libgles1-mesa,
libgles2-mesa,
libegl1-mesa-dev,
libgles1-mesa-dev,
libgles2-mesa-dev,
Provides: sunxi-mali
Multi-Arch: same
Description: Mali userspace binary driver version r3p0
This package contains a complete set of Mali userspace drivers,
including proprietary OpenGLESv2/EGL binaries.
Package: libmali-sunxi-dev
Section: libdevel
Architecture: any
Depends:
libmali-sunxi-r3p0 (= ${binary:Version}),
${misc:Depends},
Replaces:
libegl1-mesa-dev,
libgles1-mesa-dev,
libgles2-mesa-dev,
Provides: sunxi-mali-dev
Description: Mali userspace binary driver version r3p0
This package contains a complete set of Mali userspace drivers,
including proprietary OpenGLESv2/EGL binaries.
This package contains OpenGLESv2/EGL development headers
from Mali OpenGL ES SDK.
Package: mali-sunxi-utils
Architecture: any
Depends:
libmali-sunxi-r3p0,
${shlibs:Depends},
${misc:Depends}
Description: Mali userspace binary driver version r3p0
This package contains a complete set of Mali userspace drivers,
including proprietary OpenGLESv2/EGL binaries.
This package contains mali-triangle test application.

View file

@ -0,0 +1,8 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: sunxi-mali
Source: <https://github.com/linux-sunxi/sunxi-mali/>
Files: lib/mali
Copyright: Copyright (C) Allwinner Technology Co., Ltd.
License: Proprietary

View file

@ -0,0 +1 @@
README

View file

@ -0,0 +1,2 @@
usr/include/*
usr/lib/*/pkgconfig/*

View file

@ -0,0 +1,2 @@
usr/lib/*/${private_dir}/lib*
etc/modules-load.d/*

View file

@ -0,0 +1,19 @@
#!/bin/sh
DISTRIBUTION="${distribution}"
case "$1" in
install)
modprobe -q mali || true
which udevadm > /dev/null && udevadm trigger --action=add --sysname-match=mali || true
;;
configure)
[ "Ubuntu" = "$DISTRIBUTION" ] && update-alternatives --force --install /etc/ld.so.conf.d/${DEB_HOST_MULTIARCH}_EGL.conf \
${DEB_HOST_MULTIARCH}_egl_conf /usr/lib/${DEB_HOST_MULTIARCH}/${private_dir}/ld.so.conf 600
LDCONFIG_NOTRIGGER=y ldconfig
esac
#DEBHELPER#
exit 0

View file

@ -0,0 +1,19 @@
#!/bin/sh
DISTRIBUTION="${distribution}"
DIVERT_TARGETS="libEGL.so libEGL.so.1 libEGL.so.1.0.0 libGLESv1_CM.so libGLESv1_CM.so.1 libGLESv1_CM.so.1.1.0 \
libGLESv2.so libGLESv2.so.2 libGLESv2.so.2.0.0"
if [ remove = "$1" -o abort-install = "$1" ] && [ "Debian" = "$DISTRIBUTION" ]; then
for f in $DIVERT_TARGETS; do
dpkg-divert --package libmali-sunxi-r3p0 --remove --rename \
--divert /usr/lib/${DEB_HOST_MULTIARCH}/mali-divert/${f} /usr/lib/${DEB_HOST_MULTIARCH}/${f}
done
rm -rf /usr/lib/${DEB_HOST_MULTIARCH}/mali-divert
LDCONFIG_NOTRIGGER=y ldconfig
fi
#DEBHELPER#
exit 0

View file

@ -0,0 +1,37 @@
#!/bin/sh
BRANCH=""
LINUXFAMILY=""
[ -f "/etc/armbian-release" ] && . /etc/armbian-release
case "$1" in
install)
if [ -z "$BRANCH" ] || [ "$BRANCH" != "default" ]; then
echo "Mali binary driver can be used only with legacy kernel" 1>&2
exit 1
fi
if [ -z "$LINUXFAMILY" ] || ! ( [ "$LINUXFAMILY" = "sun4i" ] || [ "$LINUXFAMILY" = "sun5i" ] || [ "$LINUXFAMILY" = "sun7i" ] || [ "$LINUXFAMILY" = "sun8i" ] ); then
echo "Mali binary driver can be used only on sunxi hardware" 1>&2
exit 1
fi
;;
esac
DISTRIBUTION="${distribution}"
DIVERT_TARGETS="libEGL.so libEGL.so.1 libEGL.so.1.0.0 libGLESv1_CM.so libGLESv1_CM.so.1 libGLESv1_CM.so.1.1.0 \
libGLESv2.so libGLESv2.so.2 libGLESv2.so.2.0.0"
if [ "Debian" = "$DISTRIBUTION" ]; then
mkdir -p /usr/lib/${DEB_HOST_MULTIARCH}/mali-divert
for f in $DIVERT_TARGETS; do
dpkg-divert --package libmali-sunxi-r3p0 --add --rename \
--divert /usr/lib/${DEB_HOST_MULTIARCH}/mali-divert/${f} /usr/lib/${DEB_HOST_MULTIARCH}/${f}
done
LDCONFIG_NOTRIGGER=y ldconfig
fi
#DEBHELPER#
exit 0

View file

@ -0,0 +1,13 @@
#!/bin/sh
DISTRIBUTION="${distribution}"
case "$1" in
remove)
[ "Ubuntu" = "$DISTRIBUTION" ] && update-alternatives --remove ${DEB_HOST_MULTIARCH}_egl_conf /usr/lib/${DEB_HOST_MULTIARCH}/${private_dir}/ld.so.conf
LDCONFIG_NOTRIGGER=y ldconfig
esac
#DEBHELPER#
exit 0

View file

@ -0,0 +1,4 @@
libMali 1 sunxi-mali-r3p0 (>=1.0-1)
libEGL 1 sunxi-mali-r3p0 (>=1.0-1)
libGLESv1_CM 1 sunxi-mali-r3p0 (>=1.0-1)
libGLESv2 2 sunxi-mali-r3p0 (>=1.0-1)

View file

@ -0,0 +1 @@
KERNEL=="mali", MODE="0660", GROUP="video"

View file

@ -0,0 +1,60 @@
diff --git a/lib/mali/Makefile b/lib/mali/Makefile
index d5db8f8..55d85e1 100644
--- a/lib/mali/Makefile
+++ b/lib/mali/Makefile
@@ -1,6 +1,9 @@
include ../../Makefile.setup
include ../../config.mk
+prepare: $(MALI_VERSION)/$(MALI_LIBS_ABI)/$(MALI_EGL_TYPE)/Makefile
+ $(MAKE) -C $(MALI_VERSION)/$(MALI_LIBS_ABI)/$(MALI_EGL_TYPE)/ prepare
+
install: $(MALI_VERSION)/$(MALI_LIBS_ABI)/$(MALI_EGL_TYPE)/Makefile
- $(MAKE) -C $(MALI_VERSION)/$(MALI_LIBS_ABI)/$(MALI_EGL_TYPE)/
+ $(MAKE) -C $(MALI_VERSION)/$(MALI_LIBS_ABI)/$(MALI_EGL_TYPE)/ install
diff --git a/lib/mali/Makefile.mashup b/lib/mali/Makefile.mashup
index 99a2539..efb88ef 100644
--- a/lib/mali/Makefile.mashup
+++ b/lib/mali/Makefile.mashup
@@ -1,19 +1,31 @@
# Makefile for when everything is bunched together in libMali.so
+.PHONY: install
install: libMali.so
$(INSTALL_DATA) $^ $(libdir)
- $(RM) $(libdir)libEGL.so.1.4 $(libdir)libEGL.so.1 $(libdir)libEGL.so
- $(LN) libMali.so $(libdir)libEGL.so.1.4
- $(LN) libEGL.so.1.4 $(libdir)libEGL.so.1
+ $(LN) libEGL.so.1.0.0 $(libdir)libEGL.so.1
$(LN) libEGL.so.1 $(libdir)libEGL.so
+ $(LN) libMali.so $(libdir)libEGL.so.1.0.0
- $(RM) $(libdir)libGLESv1_CM.so.1.1 $(libdir)libGLESv1_CM.so.1 $(libdir)libGLESv1_CM.so
- $(LN) libMali.so $(libdir)libGLESv1_CM.so.1.1
- $(LN) libGLESv1_CM.so.1.1 $(libdir)libGLESv1_CM.so.1
+ $(LN) libGLESv1_CM.so.1.1.0 $(libdir)libGLESv1_CM.so.1
$(LN) libGLESv1_CM.so.1 $(libdir)libGLESv1_CM.so
+ $(LN) libMali.so $(libdir)libGLESv1_CM.so.1.1.0
- $(RM) $(libdir)libGLESv2.so.2.0 $(libdir)libGLESv2.so.2 $(libdir)libGLESv2.so
- $(LN) libMali.so $(libdir)libGLESv2.so.2.0
- $(LN) libGLESv2.so.2.0 $(libdir)libGLESv2.so.2
+ $(LN) libGLESv2.so.2.0.0 $(libdir)libGLESv2.so.2
$(LN) libGLESv2.so.2 $(libdir)libGLESv2.so
+ $(LN) libMali.so $(libdir)libGLESv2.so.2.0.0
+
+.PHONY: prepare
+prepare:
+ $(LN) libEGL.so.1.0.0 libEGL.so.1
+ $(LN) libEGL.so.1 libEGL.so
+ $(LN) libMali.so libEGL.so.1.0.0
+
+ $(LN) libGLESv1_CM.so.1.1.0 libGLESv1_CM.so.1
+ $(LN) libGLESv1_CM.so.1 libGLESv1_CM.so
+ $(LN) libMali.so libGLESv1_CM.so.1.1.0
+
+ $(LN) libGLESv2.so.2.0.0 libGLESv2.so.2
+ $(LN) libGLESv2.so.2 libGLESv2.so
+ $(LN) libMali.so libGLESv2.so.2.0.0

View file

@ -0,0 +1,197 @@
diff --git a/.gitignore b/.gitignore
index 6865abf..2f0cfe4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
config.mk
*~
+*.pc
+!Makefile.pc
diff --git a/Makefile b/Makefile
index 60d4a0f..83b40bb 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,7 @@
all: config.mk
$(MAKE) -C include
$(MAKE) -C lib
+ $(MAKE) -f Makefile.pc
config:
rm -f config.mk
@@ -12,15 +13,21 @@ config.mk:
$(MAKE) -f Makefile.config
clean:
+ touch config.mk
$(MAKE) -C version clean
$(MAKE) -C test clean
$(MAKE) -C lib clean
- $(MAKE) -C include clean
+ $(MAKE) -f Makefile.pc clean
rm -f config.mk
install: config.mk
$(MAKE) -C lib install
$(MAKE) -C include install
+ $(MAKE) -C test install
+ $(MAKE) -f Makefile.pc install
-test: config.mk
+prepare: config.mk
+ $(MAKE) -C lib prepare
+
+test: config.mk prepare
$(MAKE) -C test test
diff --git a/Makefile.pc b/Makefile.pc
new file mode 100644
index 0000000..333347a
--- /dev/null
+++ b/Makefile.pc
@@ -0,0 +1,24 @@
+include Makefile.setup
+include config.mk
+
+all:
+ echo "prefix=$(prefix)" > egl.pc
+ echo "libdir=$(prefix)lib/$(libsubdir)/$(private_dir)" >> egl.pc
+ cat egl.pc.in >> egl.pc
+ sed -i "s/MVERSION/${MALI_VERSION}/g" egl.pc
+ echo "prefix=$(prefix)" > gles_cm.pc
+ echo "libdir=$(prefix)lib/$(libsubdir)/$(private_dir)" >> gles_cm.pc
+ cat gles_cm.pc.in >> gles_cm.pc
+ sed -i "s/MVERSION/${MALI_VERSION}/g" gles_cm.pc
+ echo "prefix=$(prefix)" > glesv2.pc
+ echo "libdir=$(prefix)lib/$(libsubdir)/$(private_dir)" >> glesv2.pc
+ cat glesv2.pc.in >> glesv2.pc
+ sed -i "s/MVERSION/${MALI_VERSION}/g" glesv2.pc
+
+install: egl.pc gles_cm.pc glesv2.pc
+ $(MKDIR) $(pkgconfigdir)/pkgconfig
+ $(INSTALL_DATA) $^ $(pkgconfigdir)/pkgconfig
+
+clean:
+ $(RM) egl.pc gles_cm.pc glesv2.pc
+
diff --git a/Makefile.setup b/Makefile.setup
index 9b1ef0d..31da0d2 100644
--- a/Makefile.setup
+++ b/Makefile.setup
@@ -1,6 +1,9 @@
DESTDIR ?= /
prefix ?= /usr/
-libdir ?= $(DESTDIR)$(prefix)lib/
+libsubdir ?=
+private_dir ?=
+libdir ?= $(DESTDIR)$(prefix)lib/$(libsubdir)/$(private_dir)/
+pkgconfigdir ?= $(DESTDIR)$(prefix)lib/$(libsubdir)/
includedir ?= $(DESTDIR)$(prefix)/include
INSTALL ?= install
diff --git a/egl.pc.in b/egl.pc.in
new file mode 100644
index 0000000..e5917b0
--- /dev/null
+++ b/egl.pc.in
@@ -0,0 +1,10 @@
+exec_prefix=${prefix}
+includedir=${prefix}/include
+
+Name: egl
+Description: Mali EGL library
+Requires.private:
+Version: MVERSION
+Libs: -L${libdir} -lEGL
+Libs.private: -lm -lpthread -ldl
+Cflags: -I${includedir}
diff --git a/gles_cm.pc.in b/gles_cm.pc.in
new file mode 100644
index 0000000..86f30fb
--- /dev/null
+++ b/gles_cm.pc.in
@@ -0,0 +1,10 @@
+exec_prefix=${prefix}
+includedir=${prefix}/include
+
+Name: gles_cm
+Description: Mali OpenGL ES 1.1 CM library
+Requires.private:
+Version: MVERSION
+Libs: -L${libdir} -lGLES_CM
+Libs.private: -lm -lpthread -ldl
+Cflags: -I${includedir}
diff --git a/glesv2.pc.in b/glesv2.pc.in
new file mode 100644
index 0000000..21cc87b
--- /dev/null
+++ b/glesv2.pc.in
@@ -0,0 +1,10 @@
+exec_prefix=${prefix}
+includedir=${prefix}/include
+
+Name: glesv2
+Description: Mali OpenGL ES 2.0 library
+Requires.private:
+Version: MVERSION
+Libs: -L${libdir} -lGLESv2
+Libs.private: -lm -lpthread -ldl
+Cflags: -I${includedir}
diff --git a/include/GLES/gl.h b/include/GLES/gl.h
index 858f394..a6bb591 100644
--- a/include/GLES/gl.h
+++ b/include/GLES/gl.h
@@ -29,6 +29,7 @@ typedef float GLfloat;
typedef float GLclampf;
typedef signed int GLfixed;
typedef signed int GLclampx;
+typedef char GLchar;
typedef int * GLintptr;
typedef int * GLsizeiptr;
diff --git a/include/GLES2/gl2.h b/include/GLES2/gl2.h
index 59e376c..90d96bb 100644
--- a/include/GLES2/gl2.h
+++ b/include/GLES2/gl2.h
@@ -32,6 +32,7 @@ typedef unsigned int GLuint;
typedef khronos_float_t GLfloat;
typedef khronos_float_t GLclampf;
typedef khronos_int32_t GLfixed;
+typedef char GLchar;
/* GL types for handling large vertex buffer objects */
typedef khronos_intptr_t GLintptr;
diff --git a/lib/Makefile b/lib/Makefile
index 574bc2c..1df2e2e 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -2,6 +2,9 @@ all:
clean:
+prepare:
+ $(MAKE) -C mali prepare
+
install:
$(MAKE) -C mali install
diff --git a/test/Makefile b/test/Makefile
index 700416e..1fce02f 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,11 +1,15 @@
include ../Makefile.setup
+include ../config.mk
CFLAGS ?= -Wall
all: test
test: ../config.mk test.c
- $(CC) $(CFLAGS) -o $@ test.c -lEGL -lGLESv2
+ $(CC) $(CFLAGS) -o $@ test.c -I../include/ -L../lib/mali/$(MALI_VERSION)/$(MALI_LIBS_ABI)/$(MALI_EGL_TYPE)/ -lEGL -lGLESv2 -lX11
+
+install:
+ $(INSTALL) -m 755 test $(DESTDIR)$(prefix)/bin/mali-triangle
clean:
rm -f test

View file

@ -0,0 +1,2 @@
fix-makefiles.patch
fix-makefiles-submodule.patch

View file

@ -0,0 +1,51 @@
#!/usr/bin/make -f
# output every command that modifies files on the build system.
#DH_VERBOSE = 1
# Get the architecture triplet:
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes)
DEB_HOST_DISTRIBUTION = Ubuntu
else
DEB_HOST_DISTRIBUTION = Debian
endif
ifeq ($(DEB_HOST_DISTRIBUTION), Ubuntu)
private_dir = mali-egl
else
private_dir =
endif
%:
dh $@
override_dh_strip:
override_dh_auto_configure:
for file in debian/*.in; \
do \
sed -e"s,\$${DEB_HOST_MULTIARCH},$(DEB_HOST_MULTIARCH),g" \
-e"s,\$${private_dir},${private_dir},g" \
-e"s,\$${distribution},${DEB_HOST_DISTRIBUTION},g" \
$${file} > $${file%%.in}; \
done
make config VERSION=r3p0 ABI=armhf EGL_TYPE=x11
override_dh_auto_build:
dh_auto_build -- libsubdir=$(DEB_HOST_MULTIARCH) private_dir=$(private_dir) all test
override_dh_auto_install:
mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/$(private_dir) debian/tmp/usr/include debian/tmp/usr/bin
dh_auto_install -- libsubdir=$(DEB_HOST_MULTIARCH) private_dir=$(private_dir)
install -D -m0644 debian/sunxi-mali.conf debian/tmp/etc/modules-load.d/sunxi-mali.conf
override_dh_install:
dh_install
ifeq ($(DEB_HOST_DISTRIBUTION), Ubuntu)
echo "/usr/lib/$(DEB_HOST_MULTIARCH)/$(private_dir)" > $(CURDIR)/debian/libmali-sunxi-r3p0/usr/lib/$(DEB_HOST_MULTIARCH)/$(private_dir)/ld.so.conf
endif
override_dh_shlibdeps:
dh_shlibdeps -l$(CURDIR)/debian/libmali-sunxi-r3p0/usr/lib/$(DEB_HOST_MULTIARCH)/$(private_dir)

View file

@ -0,0 +1 @@
3.0 (quilt)

View file

@ -4,8 +4,9 @@ Maintainer: root <root@unknown>
Build-Depends:
debhelper (>= 9),
xutils-dev,
libegl1-mesa-dev,
libgles2-mesa-dev,
libdrm-dev,
libdri2-dev,
libxfixes-dev,
Standards-Version: 3.9.5
Section: libs
Homepage: https://github.com/linux-sunxi/sunxi-mali/
@ -47,14 +48,3 @@ Description: Mali userspace binary driver version r3p0
including proprietary OpenGLESv2/EGL binaries.
This package contains OpenGLESv2/EGL development headers
from Mali OpenGL ES SDK.
Package: mali-sunxi-utils
Architecture: any
Depends:
libmali-sunxi-r3p0,
${shlibs:Depends},
${misc:Depends}
Description: Mali userspace binary driver version r3p0
This package contains a complete set of Mali userspace drivers,
including proprietary OpenGLESv2/EGL binaries.
This package contains mali-triangle test application.