From add7e7154973ca0145986ff47fbf587cb11ada2b Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Tue, 11 Jun 2019 17:35:54 +0200
Subject: [PATCH] libretro-mupen64plus: update to 20190611

---
 .../libretro-mupen64plus/patches/rpi.patch    | 24 +++++++++
 srcpkgs/libretro-mupen64plus/template         | 53 ++++++++++++++-----
 2 files changed, 64 insertions(+), 13 deletions(-)
 create mode 100644 srcpkgs/libretro-mupen64plus/patches/rpi.patch

diff --git a/srcpkgs/libretro-mupen64plus/patches/rpi.patch b/srcpkgs/libretro-mupen64plus/patches/rpi.patch
new file mode 100644
index 00000000000..8d16c944337
--- /dev/null
+++ b/srcpkgs/libretro-mupen64plus/patches/rpi.patch
@@ -0,0 +1,24 @@
+--- Makefile
++++ Makefile
+@@ -99,7 +99,7 @@ else ifneq (,$(findstring rpi,$(platform)))
+       GL_LIB := -lGLESv2
+    else
+       LLE = 0
+-      CPUFLAGS += -DVC
++      CPUFLAGS += -DVC -DGL_GLEXT_PROTOTYPES
+       GL_LIB := -L/opt/vc/lib -lbrcmGLESv2
+       EGL_LIB := -lbrcmEGL
+       INCFLAGS += -I/opt/vc/include -I/opt/vc/include/interface/vcos -I/opt/vc/include/interface/vcos/pthreads
+--- libretro-common/include/glsm/glsm.h
++++ libretro-common/include/glsm/glsm.h
+@@ -32,8 +32,8 @@
+ RETRO_BEGIN_DECLS
+ 
+ #ifdef HAVE_OPENGLES2
+-typedef GLfloat GLdouble;
+-typedef GLclampf GLclampd;
++typedef double GLdouble;
++typedef double GLclampd;
+ #endif
+ 
+ #if defined(HAVE_OPENGLES2)
diff --git a/srcpkgs/libretro-mupen64plus/template b/srcpkgs/libretro-mupen64plus/template
index e76143e9d4b..837b065c1aa 100644
--- a/srcpkgs/libretro-mupen64plus/template
+++ b/srcpkgs/libretro-mupen64plus/template
@@ -1,38 +1,65 @@
 # Template file for 'libretro-mupen64plus'
 pkgname=libretro-mupen64plus
-version=20150204
+version=20190611
 revision=1
-wrksrc="mupen64plus-libretro-master"
-build_options="opengl rpi"
+_gitrev=e64ef9d9f214e32341fb7cd9633260fbb44b2326
+wrksrc="mupen64plus-libretro-${_gitrev}"
 hostmakedepends="pkg-config unzip"
-makedepends="$(vopt_if opengl MesaLib-devel) $(vopt_if rpi rpi-firmware)"
+makedepends="$(vopt_if opengl MesaLib-devel) $(vopt_if rpi rpi-userland-devel) zlib-devel"
 short_desc="Libretro port of Mupen64 Plus"
 maintainer="Juan RP <xtraeme@voidlinux.org>"
-license="GPL-3"
+license="GPL-3.0-or-later"
 homepage="http://www.libretro.com/"
-distfiles="http://ftp.netbsd.org/pub/NetBSD/misc/jmcneill/retroarch/mupen64plus-libretro-${version}.zip"
-checksum=643379eaa840d632cd8fa046fc4858cc8ccd5a57ce5991771ab16f1ef675cee2
+distfiles="https://github.com/libretro/mupen64plus-libretro/archive/${_gitrev}.tar.gz"
+checksum=947abfb1d5ff34d6b22fecfb2df02bd3759fde3f4a0e5d238f65ec7e97d964d4
+
+case "$XBPS_TARGET_MACHINE" in
+	i686*) hostmakedepends+=" nasm";;
+esac
+
+build_options="rpi opengl gles gles3"
 
 case "$XBPS_TARGET_MACHINE" in
-	i686*|x86_64*)  build_options_default="opengl";;
 	armv[67]*) build_options_default="rpi";;
-	ppc*) broken="not supported in this release";;
+	aarch64*) build_options_default="opengl gles";;
+	*) build_options_default="opengl";;
 esac
 
+if [ "$build_option_gles" -o "$build_option_gles3" ]; then
+	if [ -z "$build_option_opengl" ]; then
+		broken="must enable opengl to use gles"
+	fi
+fi
+
 do_build() {
 	local _args
 
+	# setting ARCH makes sure proper dynarec is selected
 	case "$XBPS_TARGET_MACHINE" in
-		i686*) _args="DYNAREC=x86";;
-		x86_64*) _args="DYNAREC=x86_64";;
-		arm*) _args="DYNAREC=arm";;
+		i686*) _args="ARCH=i686";;
+		arm*) _args="ARCH=arm";;
+		aarch64*) _args="ARCH=aarch64";;
+		x86_64*) _args="ARCH=x86_64";;
+		*) _args="ARCH=${XBPS_TARGET_MACHINE%-musl}";;
 	esac
+
+	if [ "$build_option_gles3" ]; then
+		_args+=" FORCE_GLES3=1"
+	elif [ "$builld_option_gles" ]; then
+		_args+=" FORCE_GLES=1"
+	fi
+
 	if [ "$build_option_rpi" ]; then
+		if [ "$build_option_opengl" ]; then
+			_args+=" platform=rpi,mesa"
+		else
+			_args+=" platform=rpi"
+		fi
 		install -d /opt/vc/lib
-		_args+=" platform=rpi"
 		sed -i "s|-L/opt/vc/lib|-L${XBPS_CROSS_BASE}/opt/vc/lib -Wl,-R /opt/vc/lib|g" Makefile
 		sed -i 's|/opt/vc/include|${XBPS_CROSS_BASE}/opt/vc/include|g' Makefile
 	fi
+
 	make CC=$CC ${_args} ${makejobs}
 }
 do_install() {
