Subject: [bug#66110] [PATCH] gnu: desmume: Update to 0.9.13.

From: Hendursaga <[email-masked]>
Date: Tue, 19 Sep 2023 16:42:15 -0400

* gnu/packages/emulators.scm (desmume): Update to 0.9.13.
[source]: Switch to git-fetch. Remove patches.
[build-system]: Switch to meson-build-system.
[arguments]<#:configure-flags>: Fix openal flag, remove experimental
wifi flag, add -Dfrontend-cli, -Dfrontend-gtk, and -Dgdb-stub flags.
<#:phases>: Add 'cd-subdir.
[native-inputs]: Add glib:bin and gettext-minimal.
[inputs]: Replace sdl with sdl2 and gtk+-2 with gtk+. Remove glu. Add
agg, alsa-lib, libpcap, openal, and soundtouch.
[home-page]: Use HTTPS.
* gnu/packages/patches/desmume-gcc6-fixes.patch,
gnu/packages/patches/desmume-gcc7-fixes.patch: Remove files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
---
 gnu/local.mk                                  |  2 -
 gnu/packages/emulators.scm                    | 55 ++++++++++-------
 gnu/packages/patches/desmume-gcc6-fixes.patch | 59 -------------------
 gnu/packages/patches/desmume-gcc7-fixes.patch | 18 ------
 4 files changed, 34 insertions(+), 100 deletions(-)
 delete mode 100644 gnu/packages/patches/desmume-gcc6-fixes.patch
 delete mode 100644 gnu/packages/patches/desmume-gcc7-fixes.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index e05f687467..d4915a7d5d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1065,8 +1065,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/debops-constants-for-external-program-names.patch \
   %D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
   %D%/packages/patches/dee-vapi.patch			\
-  %D%/packages/patches/desmume-gcc6-fixes.patch			\
-  %D%/packages/patches/desmume-gcc7-fixes.patch			\
   %D%/packages/patches/dfu-programmer-fix-libusb.patch		\
   %D%/packages/patches/diffutils-fix-signal-processing.patch	\
   %D%/packages/patches/directfb-davinci-glibc-228-compat.patch	\
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index ce61f935fb..830cbc3469 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2021 Guillaume Le Vaillant <[email-masked]>
 ;;; Copyright © 2023 c4droid <[email-masked]>
 ;;; Copyright © 2023 Yovan Naumovski <[email-masked]>
+;;; Copyright © 2023 Hendursaga <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@ (define-module (gnu packages emulators)
   #:use-module (guix hg-download)
   #:use-module (guix utils)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages audio)
@@ -219,28 +221,39 @@ (define-public blastem
 (define-public desmume
   (package
     (name "desmume")
-    (version "0.9.11")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "mirror://sourceforge/desmume/desmume/"
-             version "/desmume-" version ".tar.gz"))
-       (sha256
-        (base32
-         "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))
-       (patches (search-patches "desmume-gcc6-fixes.patch"
-                                "desmume-gcc7-fixes.patch"))))
-    (build-system gnu-build-system)
+    (version "0.9.13")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/TASEmulators/desmume")
+                    (commit (string-append "release_"
+                                           (string-replace-substring version
+                                                                     "." "_")))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ylxv0gjcxwj6dgwly2fjhyr0wrs5yazkim9nvqb8p72mxfwls5y"))))
+    (build-system meson-build-system)
     (arguments
-     ;; Enable support for WiFi and microphone.
-     `(#:configure-flags '("--enable-wifi"
-                           "--enable-openal")))
-    (native-inputs
-     (list pkg-config intltool))
-    (inputs
-     (list zlib sdl glib gtk+-2 glu))
-    (home-page "http://desmume.org/")
+     (list #:configure-flags #~(list "-Dfrontend-cli=true"
+                                     "-Dfrontend-gtk=true"
+                                     "-Dgdb-stub=true"
+                                     "-Dopenal=true")
+           #:phases #~(modify-phases %standard-phases
+                        ;; meson.build is in a subdirectory.
+                        (add-after 'unpack 'cd-subdir
+                          (lambda _
+                            (chdir "desmume/src/frontend/posix"))))))
+    (native-inputs (list `(,glib "bin") gettext-minimal intltool pkg-config))
+    (inputs (list agg
+                  alsa-lib
+                  gtk+
+                  libpcap
+                  openal
+                  sdl2
+                  soundtouch
+                  zlib))
+    (home-page "https://desmume.org/")
     (synopsis "Nintendo DS emulator")
     (description
      "DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
diff --git a/gnu/packages/patches/desmume-gcc6-fixes.patch b/gnu/packages/patches/desmume-gcc6-fixes.patch
deleted file mode 100644
index 6eb9576f64..0000000000
--- a/gnu/packages/patches/desmume-gcc6-fixes.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From: zeromus
-Origin: upstream, https://sourceforge.net/p/desmume/code/5514, https://sourceforge.net/p/desmume/code/5517, https://sourceforge.net/p/desmume/code/5430
-Subject: fix GCC6 issues
-Bug: https://sourceforge.net/p/desmume/bugs/1570/
-Bug-Debian: http://bugs.debian.org/811691
-
-Index: desmume/src/MMU_timing.h
-===================================================================
---- desmume/src/MMU_timing.h	(revision 5513)
-+++ desmume/src/MMU_timing.h	(revision 5517)
-@@ -155,8 +155,8 @@
- 	enum { ASSOCIATIVITY = 1 << ASSOCIATIVESHIFT };
- 	enum { BLOCKSIZE = 1 << BLOCKSIZESHIFT };
- 	enum { TAGSHIFT = SIZESHIFT - ASSOCIATIVESHIFT };
--	enum { TAGMASK = (u32)(~0 << TAGSHIFT) };
--	enum { BLOCKMASK = ((u32)~0 >> (32 - TAGSHIFT)) & (u32)(~0 << BLOCKSIZESHIFT) };
-+	enum { TAGMASK = (u32)(~0U << TAGSHIFT) };
-+	enum { BLOCKMASK = ((u32)~0U >> (32 - TAGSHIFT)) & (u32)(~0U << BLOCKSIZESHIFT) };
- 	enum { WORDSIZE = sizeof(u32) };
- 	enum { WORDSPERBLOCK = (1 << BLOCKSIZESHIFT) / WORDSIZE };
- 	enum { DATAPERWORD = WORDSIZE * ASSOCIATIVITY };
-Index: desmume/src/ctrlssdl.cpp
-===================================================================
---- desmume/src/ctrlssdl.cpp	(revision 5513)
-+++ desmume/src/ctrlssdl.cpp	(revision 5517)
-@@ -200,7 +200,7 @@
-           break;
-         case SDL_JOYAXISMOTION:
-           /* Dead zone of 50% */
--          if( (abs(event.jaxis.value) >> 14) != 0 )
-+          if( ((u32)abs(event.jaxis.value) >> 14) != 0 )
-             {
-               key = ((event.jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event.jaxis.axis & 127) << 1);
-               if (event.jaxis.value > 0) {
-@@ -370,7 +370,7 @@
-          Note: button constants have a 1bit offset. */
-     case SDL_JOYAXISMOTION:
-       key_code = ((event->jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event->jaxis.axis & 127) << 1);
--      if( (abs(event->jaxis.value) >> 14) != 0 )
-+      if( ((u32)abs(event->jaxis.value) >> 14) != 0 )
-         {
-           if (event->jaxis.value > 0)
-             key_code |= 1;
-Index: desmume/src/wifi.cpp
-===================================================================
---- desmume/src/wifi.cpp	(revision 5429)
-+++ desmume/src/wifi.cpp	(revision 5430)
-@@ -320,9 +320,9 @@
- 
- #if (WIFI_LOGGING_LEVEL >= 1)
- 	#if WIFI_LOG_USE_LOGC
--		#define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: "__VA_ARGS__);
-+		#define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: " __VA_ARGS__);
- 	#else
--		#define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) printf("WIFI: "__VA_ARGS__);
-+		#define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) printf("WIFI: " __VA_ARGS__);
- 	#endif
- #else
- #define WIFI_LOG(level, ...) {}
diff --git a/gnu/packages/patches/desmume-gcc7-fixes.patch b/gnu/packages/patches/desmume-gcc7-fixes.patch
deleted file mode 100644
index a4934ff6e6..0000000000
--- a/gnu/packages/patches/desmume-gcc7-fixes.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-From e1f7039f1b06add4fb75b2f8774000b8f05574af Mon Sep 17 00:00:00 2001
-From: rogerman <[email-masked]>
-Date: Mon, 17 Aug 2015 21:15:04 +0000
-Subject: Fix bug with libfat string handling.
-
-diff --git a/src/utils/libfat/directory.cpp b/src/utils/libfat/directory.cpp
-index 765d7ae5..b6d7f01f 100644
---- a/src/utils/libfat/directory.cpp
-+++ b/src/utils/libfat/directory.cpp
-@@ -139,7 +139,7 @@ static size_t _FAT_directory_mbstoucs2 (ucs2_t* dst, const char* src, size_t len
- 	int bytes;
- 	size_t count = 0;
- 
--	while (count < len-1 && src != '\0') {
-+	while (count < len-1 && *src != '\0') {
- 		bytes = mbrtowc (&tempChar, src, MB_CUR_MAX, &ps);
- 		if (bytes > 0) {
- 			*dst = (ucs2_t)tempChar;

base-commit: b37925ecddb4af2965220064a8a603d2fd3a77c5
-- 
2.41.0