From 7984b5a23962eaa5e031acda01ab278ae81dbc9d Mon Sep 17 00:00:00 2001 From: jc_gargma Date: Thu, 26 Sep 2019 09:16:23 -0700 Subject: Intial commit --- PKGBUILD | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ gcc6_fixes.patch | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ gcc7_fixes.patch | 18 +++++++++++++++++ 3 files changed, 136 insertions(+) create mode 100644 PKGBUILD create mode 100644 gcc6_fixes.patch create mode 100644 gcc7_fixes.patch diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..430c84f --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,59 @@ +# Maintainer: jc_gargma +# Maintainer (Arch): schuay +# Contributor (Arch): Jonathan Conder +# Contributor (Arch): Brad Fanella +# Contributor (Arch): Arkham +# Contributor (Arch): Nathan Jones +# Contributor (Arch): Javier "Phrodo_00" Aravena +# Contributor (Arch): angvp +# Contributor (Arch): Allan +# Contributor (Arch): w0rm +# Contributor (Arch): vEX +# Contributor (Arch): Asher256 + +# # I maintain this because: +# Arch version lacks additional optimization and hardening flags + +pkgname=desmume +pkgver=0.9.11 +pkgrel=6.2 +pkgdesc="Nintendo DS emulator" +arch=('x86_64') +url="https://desmume.org/" +license=('GPL') +depends=('desktop-file-utils' 'libpcap' 'soundtouch' 'alsa-lib' 'glu' 'sdl' 'gtk2' 'zziplib') +makedepends=('intltool' 'mesa' 'clang') +source=("https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz" + gcc6_fixes.patch + gcc7_fixes.patch) +sha256sums=('3ab34ba6cc009566245025c1dd94bf449b6a1b416d24387cb42e183c78e38896' + 'dfb25d204253ca1dad2218e54760c81872c1df0b70c12067591a6578159b9aef' + 'b8f419f5286c1ee08f824250cabc7f4984a572f55db8182070b0bf3235134d1f') + +prepare() { + cd "$srcdir/$pkgname-$pkgver" + + # Fix build + patch -Np1 -i ../gcc6_fixes.patch + patch -Np1 -i ../gcc7_fixes.patch + + + # See https://bugs.archlinux.org/task/35086 and + # https://sourceforge.net/tracker/?func=detail&aid=3612768&group_id=164579&atid=832291 + sed -i 's/@GETTEXT_PACKAGE@/desmume/' po/Makefile.in.in +} + +build() { + cd "$srcdir/$pkgname-$pkgver" + export CFLAGS="$CFLAGS -O3 -fstack-protector-all -flto=4 -fPIE" + export CXXFLAGS="$CXXFLAGS -O3 -fstack-protector-all -flto=4 -fPIE" + export LDFLAGS="$LDFLAGS,-pie" + ./configure --prefix=/usr --enable-wifi --enable-openal + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + + make DESTDIR="$pkgdir/" install +} diff --git a/gcc6_fixes.patch b/gcc6_fixes.patch new file mode 100644 index 0000000..6eb9576 --- /dev/null +++ b/gcc6_fixes.patch @@ -0,0 +1,59 @@ +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/gcc7_fixes.patch b/gcc7_fixes.patch new file mode 100644 index 0000000..a4934ff --- /dev/null +++ b/gcc7_fixes.patch @@ -0,0 +1,18 @@ +From e1f7039f1b06add4fb75b2f8774000b8f05574af Mon Sep 17 00:00:00 2001 +From: rogerman +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; -- cgit v1.2.1