From ecacbceca3af1d90124ccbf575fa76b96a0531ea Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Wed, 10 Jul 2013 23:12:17 -0300 Subject: dolphin-emu-libre: add new package to libre repo --- libre/dolphin-emu-libre/Dolphin_Logo.png | Bin 0 -> 62052 bytes libre/dolphin-emu-libre/PKGBUILD | 54 +++++++ libre/dolphin-emu-libre/dolphin-emu.desktop | 11 ++ libre/dolphin-emu-libre/gcc48fix.patch | 225 ++++++++++++++++++++++++++++ 4 files changed, 290 insertions(+) create mode 100644 libre/dolphin-emu-libre/Dolphin_Logo.png create mode 100644 libre/dolphin-emu-libre/PKGBUILD create mode 100644 libre/dolphin-emu-libre/dolphin-emu.desktop create mode 100644 libre/dolphin-emu-libre/gcc48fix.patch (limited to 'libre') diff --git a/libre/dolphin-emu-libre/Dolphin_Logo.png b/libre/dolphin-emu-libre/Dolphin_Logo.png new file mode 100644 index 000000000..63450da00 Binary files /dev/null and b/libre/dolphin-emu-libre/Dolphin_Logo.png differ diff --git a/libre/dolphin-emu-libre/PKGBUILD b/libre/dolphin-emu-libre/PKGBUILD new file mode 100644 index 000000000..44d483aa6 --- /dev/null +++ b/libre/dolphin-emu-libre/PKGBUILD @@ -0,0 +1,54 @@ +# Maintainer: schuay +# Contributor: Jeremy Newton (Mystro256) +# Maintainer (Parabola): André Silva + +_pkgname=dolphin-emu +pkgname=dolphin-emu-libre +pkgver=3.5 +pkgrel=4 +epoch=1 +pkgdesc='A Gamecube / Wii / Triforce Emulator, without nonfree nvidia-cg-toolkit' +arch=('i686' 'x86_64' 'mips64el') +url='http://dolphin-emu.org' +license=('GPL2') + +makedepends=('cmake' 'glproto' 'opencl-headers') +depends=('bluez-libs' 'ffmpeg' 'glew' 'libao' 'libgl' 'libxxf86vm' 'lsb-release' 'lzo2' 'mesa' \ + 'openal' 'portaudio' 'sdl' 'wxgtk2.9') +optdepends=('pulseaudio') + +replaces=$_pkgname +conflicts=$_pkgname +provides=$_pkgname=$pkgver + +source=("http://dolphin-emu.googlecode.com/files/dolphin-${pkgver}-src.zip" + 'dolphin-emu.desktop' + 'Dolphin_Logo.png' + 'gcc48fix.patch') + +build() { + cd "${srcdir}/dolphin-${pkgver}" + + # 'u32 __rold' redeclared as different kind of symbol + # Patch merged upstream, remove with next release (> 3.5) + patch -lNp1 < "${srcdir}/gcc48fix.patch" + + mkdir build && cd build + cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config-2.9 + make +} + +package() { + cd "${srcdir}/dolphin-${pkgver}/build" + + make DESTDIR=${pkgdir} install + + install -Dm644 "${srcdir}/dolphin-emu.desktop" \ + "${pkgdir}/usr/share/applications/dolphin-emu.desktop" + install -Dm644 "${srcdir}/Dolphin_Logo.png" "${pkgdir}/usr/share/pixmaps/dolphin-emu.png" +} + +md5sums=('4d0429f1e10f0862256e0b4c4e2f44a3' + 'feed4580c2e6bfbc7f6c67dad861daae' + 'd15c51f547b4bd47e510faac40bcc9d6' + 'ddeddc2a65042486565b4b78ad739a80') diff --git a/libre/dolphin-emu-libre/dolphin-emu.desktop b/libre/dolphin-emu-libre/dolphin-emu.desktop new file mode 100644 index 000000000..96317d168 --- /dev/null +++ b/libre/dolphin-emu-libre/dolphin-emu.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Dolphin +Categories=Game;Emulator;GTK; +GenericName=GameCube and Wii Emulator +Comment=An emulator for the GameCube and Wii consoles +Exec=dolphin-emu +Icon=dolphin-emu +StartupNotify=false +Name[en_US]=Dolphin diff --git a/libre/dolphin-emu-libre/gcc48fix.patch b/libre/dolphin-emu-libre/gcc48fix.patch new file mode 100644 index 000000000..fbaaaa914 --- /dev/null +++ b/libre/dolphin-emu-libre/gcc48fix.patch @@ -0,0 +1,225 @@ +diff --git a/Externals/Bochs_disasm/PowerPCDisasm.cpp b/Externals/Bochs_disasm/PowerPCDisasm.cpp +index 56719ff..c25de50 100644 +--- a/Externals/Bochs_disasm/PowerPCDisasm.cpp ++++ b/Externals/Bochs_disasm/PowerPCDisasm.cpp +@@ -580,7 +580,7 @@ typedef unsigned int ppc_word; + if (me < mb) + mask = ~mask; + //rotate the mask so it can be applied to source reg +- return _rotl(mask, 32 - r); ++ return __rotl(mask, 32 - r); + } + + +diff --git a/Source/Core/Common/Src/CommonFuncs.h b/Source/Core/Common/Src/CommonFuncs.h +index f892769..e29ab7c 100644 +--- a/Source/Core/Common/Src/CommonFuncs.h ++++ b/Source/Core/Common/Src/CommonFuncs.h +@@ -67,7 +67,7 @@ _mm_shuffle_epi8(__m128i a, __m128i mask) + #endif + #define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0])) + +-inline u32 _rotl(u32 x, int shift) { ++inline u32 __rotl(u32 x, int shift) { + shift &= 31; + if (!shift) return x; + return (x << shift) | (x >> (32 - shift)); +@@ -78,7 +78,7 @@ inline u64 _rotl64(u64 x, unsigned int shift){ + return (x << n) | (x >> (64 - n)); + } + +-inline u32 _rotr(u32 x, int shift) { ++inline u32 __rotr(u32 x, int shift) { + shift &= 31; + if (!shift) return x; + return (x >> shift) | (x << (32 - shift)); +diff --git a/Source/Core/Common/Src/Hash.cpp b/Source/Core/Common/Src/Hash.cpp +index bc72b16..68ff397 100644 +--- a/Source/Core/Common/Src/Hash.cpp ++++ b/Source/Core/Common/Src/Hash.cpp +@@ -364,15 +364,15 @@ inline u32 fmix32(u32 h) + inline void bmix32(u32 & h1, u32 & h2, u32 & k1, u32 & k2, u32 & c1, u32 & c2) + { + k1 *= c1; +- k1 = _rotl(k1,11); ++ k1 = __rotl(k1,11); + k1 *= c2; + h1 ^= k1; + h1 += h2; + +- h2 = _rotl(h2,17); ++ h2 = __rotl(h2,17); + + k2 *= c2; +- k2 = _rotl(k2,11); ++ k2 = __rotl(k2,11); + k2 *= c1; + h2 ^= k2; + h2 += h1; +diff --git a/Source/Core/Core/Src/ARDecrypt.cpp b/Source/Core/Core/Src/ARDecrypt.cpp +index 04072ce..a8fb4a6 100644 +--- a/Source/Core/Core/Src/ARDecrypt.cpp ++++ b/Source/Core/Core/Src/ARDecrypt.cpp +@@ -270,26 +270,26 @@ void unscramble1(u32 *addr, u32 *val) + { + u32 tmp; + +- *val = _rotl(*val,4); ++ *val = __rotl(*val,4); + + tmp = ((*addr^*val)&0xF0F0F0F0); + *addr ^= tmp; +- *val = _rotr((*val^tmp),0x14); ++ *val = __rotr((*val^tmp),0x14); + + tmp = ((*addr^*val)&0xFFFF0000); + *addr ^= tmp; +- *val = _rotr((*val^tmp),0x12); ++ *val = __rotr((*val^tmp),0x12); + + tmp = ((*addr^*val)&0x33333333); + *addr ^= tmp; +- *val = _rotr((*val^tmp),6); ++ *val = __rotr((*val^tmp),6); + + tmp = ((*addr^*val)&0x00FF00FF); + *addr ^= tmp; +- *val = _rotl((*val^tmp),9); ++ *val = __rotl((*val^tmp),9); + + tmp = ((*addr^*val)&0xAAAAAAAA); +- *addr = _rotl((*addr^tmp),1); ++ *addr = __rotl((*addr^tmp),1); + *val ^= tmp; + } + +@@ -297,27 +297,27 @@ void unscramble2(u32 *addr, u32 *val) + { + u32 tmp; + +- *val = _rotr(*val,1); ++ *val = __rotr(*val,1); + + tmp = ((*addr^*val)&0xAAAAAAAA); + *val ^= tmp; +- *addr = _rotr((*addr^tmp),9); ++ *addr = __rotr((*addr^tmp),9); + + tmp = ((*addr^*val)&0x00FF00FF); + *val ^= tmp; +- *addr = _rotl((*addr^tmp),6); ++ *addr = __rotl((*addr^tmp),6); + + tmp = ((*addr^*val)&0x33333333); + *val ^= tmp; +- *addr = _rotl((*addr^tmp),0x12); ++ *addr = __rotl((*addr^tmp),0x12); + + tmp = ((*addr^*val)&0xFFFF0000); + *val ^= tmp; +- *addr = _rotl((*addr^tmp),0x14); ++ *addr = __rotl((*addr^tmp),0x14); + + tmp = ((*addr^*val)&0xF0F0F0F0); + *val ^= tmp; +- *addr = _rotr((*addr^tmp),4); ++ *addr = __rotr((*addr^tmp),4); + } + + void decryptcode(u32 *seeds, u32 *code) +@@ -330,11 +330,11 @@ void decryptcode(u32 *seeds, u32 *code) + unscramble1(&addr,&val); + while (i < 32) + { +- tmp = (_rotr(val,4)^seeds[i++]); ++ tmp = (__rotr(val,4)^seeds[i++]); + tmp2 = (val^seeds[i++]); + addr ^= (table6[tmp&0x3F]^table4[(tmp>>8)&0x3F]^table2[(tmp>>16)&0x3F]^table0[(tmp>>24)&0x3F]^table7[tmp2&0x3F]^table5[(tmp2>>8)&0x3F]^table3[(tmp2>>16)&0x3F]^table1[(tmp2>>24)&0x3F]); + +- tmp = (_rotr(addr,4)^seeds[i++]); ++ tmp = (__rotr(addr,4)^seeds[i++]); + tmp2 = (addr^seeds[i++]); + val ^= (table6[tmp&0x3F]^table4[(tmp>>8)&0x3F]^table2[(tmp>>16)&0x3F]^table0[(tmp>>24)&0x3F]^table7[tmp2&0x3F]^table5[(tmp2>>8)&0x3F]^table3[(tmp2>>16)&0x3F]^table1[(tmp2>>24)&0x3F]); + } +diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp +index 743ff86..461cc94 100644 +--- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp ++++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp +@@ -194,21 +194,21 @@ void Interpreter::xoris(UGeckoInstruction _inst) + void Interpreter::rlwimix(UGeckoInstruction _inst) + { + u32 mask = Helper_Mask(_inst.MB,_inst.ME); +- m_GPR[_inst.RA] = (m_GPR[_inst.RA] & ~mask) | (_rotl(m_GPR[_inst.RS],_inst.SH) & mask); ++ m_GPR[_inst.RA] = (m_GPR[_inst.RA] & ~mask) | (__rotl(m_GPR[_inst.RS],_inst.SH) & mask); + if (_inst.Rc) Helper_UpdateCR0(m_GPR[_inst.RA]); + } + + void Interpreter::rlwinmx(UGeckoInstruction _inst) + { + u32 mask = Helper_Mask(_inst.MB,_inst.ME); +- m_GPR[_inst.RA] = _rotl(m_GPR[_inst.RS],_inst.SH) & mask; ++ m_GPR[_inst.RA] = __rotl(m_GPR[_inst.RS],_inst.SH) & mask; + if (_inst.Rc) Helper_UpdateCR0(m_GPR[_inst.RA]); + } + + void Interpreter::rlwnmx(UGeckoInstruction _inst) + { + u32 mask = Helper_Mask(_inst.MB,_inst.ME); +- m_GPR[_inst.RA] = _rotl(m_GPR[_inst.RS], m_GPR[_inst.RB] & 0x1F) & mask; ++ m_GPR[_inst.RA] = __rotl(m_GPR[_inst.RS], m_GPR[_inst.RB] & 0x1F) & mask; + + if (_inst.Rc) Helper_UpdateCR0(m_GPR[_inst.RA]); + } +diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp +index 3d88d68..203bde5 100644 +--- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp ++++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp +@@ -1672,7 +1672,7 @@ void Jit64::rlwinmx(UGeckoInstruction inst) + { + unsigned result = (int)gpr.R(s).offset; + if (inst.SH != 0) +- result = _rotl(result, inst.SH); ++ result = __rotl(result, inst.SH); + result &= Helper_Mask(inst.MB, inst.ME); + gpr.SetImmediate32(a, result); + if (inst.Rc) +@@ -1739,7 +1739,7 @@ void Jit64::rlwimix(UGeckoInstruction inst) + if (gpr.R(a).IsImm() && gpr.R(s).IsImm()) + { + u32 mask = Helper_Mask(inst.MB,inst.ME); +- gpr.SetImmediate32(a, ((u32)gpr.R(a).offset & ~mask) | (_rotl((u32)gpr.R(s).offset,inst.SH) & mask)); ++ gpr.SetImmediate32(a, ((u32)gpr.R(a).offset & ~mask) | (__rotl((u32)gpr.R(s).offset,inst.SH) & mask)); + if (inst.Rc) + { + ComputeRC(gpr.R(a)); +@@ -1824,7 +1824,7 @@ void Jit64::rlwnmx(UGeckoInstruction inst) + u32 mask = Helper_Mask(inst.MB, inst.ME); + if (gpr.R(b).IsImm() && gpr.R(s).IsImm()) + { +- gpr.SetImmediate32(a, _rotl((u32)gpr.R(s).offset, (u32)gpr.R(b).offset & 0x1F) & mask); ++ gpr.SetImmediate32(a, __rotl((u32)gpr.R(s).offset, (u32)gpr.R(b).offset & 0x1F) & mask); + if (inst.Rc) + { + ComputeRC(gpr.R(a)); +diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/IR.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/IR.cpp +index 2a830a0..ba70d2c 100644 +--- a/Source/Core/Core/Src/PowerPC/Jit64IL/IR.cpp ++++ b/Source/Core/Core/Src/PowerPC/Jit64IL/IR.cpp +@@ -248,7 +248,7 @@ unsigned IRBuilder::ComputeKnownZeroBits(InstLoc I) const { + return 0; + case Rol: + if (isImm(*getOp2(I))) { +- return _rotl(ComputeKnownZeroBits(getOp1(I)), ++ return __rotl(ComputeKnownZeroBits(getOp1(I)), + GetImmValue(getOp2(I))); + } + default: +@@ -844,7 +844,7 @@ InstLoc IRBuilder::FoldShrl(InstLoc Op1, InstLoc Op2) { + InstLoc IRBuilder::FoldRol(InstLoc Op1, InstLoc Op2) { + if (isImm(*Op2)) { + if (isImm(*Op1)) +- return EmitIntConst(_rotl(GetImmValue(Op1), ++ return EmitIntConst(__rotl(GetImmValue(Op1), + GetImmValue(Op2))); + if (!(GetImmValue(Op2) & 31)) return Op1; + } -- cgit v1.2.3-54-g00ecf