1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
# Maintainer: Jeremy Kescher <jeremy@kescher.at>
pkgname=cemu
pkgver=2.0.182
pkgrel=3
pkgdesc='Software to emulate Wii U games and applications on PC (with cutting edge Linux patches)'
arch=(x86_64)
url=https://cemu.info
license=(MPL2)
depends=(
# unbundled vcpkg
'fmt>=9.1' 'sdl2>=2.0.22' 'pugixml>=1.12.1' 'libzip>=1.9.2' 'libpng>=1.6.37' 'wxwidgets-gtk3>=3.2'
)
makedepends=(
git 'cmake>=3.21.1'
# clang
$([[ $CC+$CXX == *clang* ]] && echo 'clang>=12 llvm>=12')
# unbundled vcpkg
rapidjson 'boost>=1.79' 'glslang>=11.8' 'glm>=0.9.9.8'
# cemu
nasm 'vulkan-headers>=1.3.225'
# wxwidgets
glu
# cubeb optional
libpulse
)
optdepends=(
'alsa-lib: Audio output'
'vulkan-driver: Vulkan graphics'
)
install=cemu.install
source=(
git+https://github.com/cemu-project/Cemu#commit=ada8bbb3b49622e19deccb7358b1c804a766baab # v2.0-7
# submodules
git+https://github.com/mozilla/cubeb#commit=dc511c6b3597b6384d28949285b9289e009830ea
git+https://github.com/ocornut/imgui#commit=8a44c31c95c8e0217f6e1fc814cbbbcca4981f14
git+https://github.com/Exzap/ZArchive#commit=d2c717730092c7bf8cbb033b12fd4001b7c4d932
# cubeb submodules
git+https://github.com/arsenm/sanitizers-cmake#commit=aab6948fa863bc1cbe5d0850bc46b9ef02ed4c1a
git+https://github.com/google/googletest#commit=800f5422ac9d9e0ad59cd860a2ef3a679588acb4
# upstream merged patches
crc.diff # f0938e1a23f6cdd03bfd1e21d84f2c0f65aeb45f
dialog-crash-fix.diff # e88d20cbfbada6b1d144c4944f080f70299c1506
mlc-discord-rich-presence.diff # 271a4e4719463ece58db74b9c390f83bf6e956cf
# upstream proposed patches
overlay.diff # 6aa7a0c7b2003f625bfecd64f6143a10605234b2 (https://github.com/cemu-project/Cemu/pull/142)
mic.diff # 5231a71527cb57ea79b1b2ab9e4d7247d9141dd1 (https://github.com/cemu-project/Cemu/pull/251)
gui.diff # b3814225e4a63fad543b2a9ebf11ed6f5e21f389 (https://github.com/cemu-project/Cemu/pull/345)
)
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'095b2d2882073c29405927bb3f00153c402de962affeb68878b6a752fb37ed5a'
'03bc995a63af7be8c83673272c6c6bcb08bbb8ed48c8a06af7adfdaa475be61a'
'fa034a95b38e0e292deedda1d8d93663163a56460579c497ee8d76902ee8de95'
'f25d13fe76cc6a0b475f0131211a951288160ddae92cd7a815f5aea61d7cfc0f'
'46992c822e75dc60e1b07162a6a3f502aed6cea4605f29c9038c442f7cb1869f'
'1081822dec41144e0a7ac934b284f131fcb4b87ffdcef144da0a13e8f8dda169')
pkgver() {
cd Cemu
MAJ=$(awk -F'\t' '/LEAD/ {print $NF; exit}' src/Common/version.h)
MIN=$(awk -F'\t' '/MAJOR/ {print $NF; exit}' src/Common/version.h)
PAT=$(git rev-list --count HEAD)
echo "$MAJ.$MIN.$PAT"
}
prepare() {
cd Cemu
sed -i "/#define EMULATOR_VERSION_MINOR/s/[0-9]\+/${pkgver##*.}/;s/-/./" src/Common/version.h
# cemu submodules
for submodule in dependencies/{cubeb,imgui,ZArchive}; do
git config submodule.$submodule.url "file://$srcdir/${submodule##*/}"
git submodule--helper update --init $submodule
done
pushd dependencies/cubeb > /dev/null
for submodule in {cmake/sanitizers-cmake,googletest}; do
git config submodule.$submodule.url "file://$srcdir/${submodule##*/}"
git submodule--helper update --init $submodule
done
popd > /dev/null
# unbundled fmt
sed -i '/FMT_HEADER_ONLY/d' src/Common/precompiled.h
# cubeb fix
sed -i '/find_package(cubeb)/d' CMakeLists.txt
# glm fix
sed -i 's/glm::glm/glm/' src/Common/CMakeLists.txt src/input/CMakeLists.txt
# Dir names will be changed to "Cemu" in this package with 2.1
# Needs notice in post_install() then
sed -i 's/GetAppName()/"cemu"/' src/gui/CemuApp.cpp
# The subdirectory "default" is incorrect in upstream
sed -i 's/gameProfiles\/default/gameProfiles/' src/Cafe/GameProfile/GameProfile.cpp
# gamelist column width improvement
sed -i '/InsertColumn/s/kListIconWidth/&+8/;/SetColumnWidth/s/last_col_width/&-1/' src/gui/components/wxGameList.cpp
rm -rf src/util/SystemInfo
git apply "$srcdir/overlay.diff"
sed -i '/add_library/aSystemInfo/SystemInfo.cpp SystemInfo/SystemInfoLinux.cpp' src/util/CMakeLists.txt
rm -f src/audio/{Cubeb,IAudio}InputAPI.{cpp,h}
git apply "$srcdir/mic.diff"
git apply "$srcdir/crc.diff"
git apply "$srcdir/gui.diff"
git apply "$srcdir/dialog-crash-fix.diff"
git apply "$srcdir/mlc-discord-rich-presence.diff"
}
build() {
# prefer clang (faster)
if [[ $(clang --version 2> /dev/null | sed -E '1!d;s/^clang version ([0-9]+)\.[0-9]+\.[0-9]+$/\1/') -ge 12 ]] &&
[[ $(llvm-config --version 2> /dev/null | sed -E 's/^([0-9]+)\.[0-9]+\.[0-9]+$/\1/') -ge 12 ]]; then
[[ -z $CC ]] && export CC=$(which clang)
[[ -z $CXX ]] && export CXX=$(which clang++)
fi
cd Cemu
rm -f build/CMakeCache.txt
cmake -B build \
$(which ninja &> /dev/null && echo '-G Ninja') \
-DCMAKE_CXX_FLAGS="$CXXFLAGS -w" -Wno-dev \
-DENABLE_VCPKG=OFF \
-DPORTABLE=OFF \
-DCMAKE_BUILD_TYPE=Release
$(which ninja 2> /dev/null || which make) -C build $([[ "$MAKEFLAGS" == *-j* ]] && echo "$MAKEFLAGS" || echo -j $(nproc))
}
package() {
cd Cemu
install -D bin/Cemu_release "$pkgdir/usr/bin/cemu"
pushd bin/gameProfiles/default > /dev/null
mv 000500001011000.ini 0005000010111000.ini
for ini in *[A-Z]*; do mv $ini ${ini,,}; done
# install -Dm644 ../example.ini "$pkgdir/usr/share/cemu/gameProfiles/example.ini"
install -Dm644 * -t "$pkgdir/usr/share/cemu/gameProfiles"
popd > /dev/null
install -Dm644 bin/resources/sharedFonts/* -t "$pkgdir/usr/share/cemu/resources/sharedFonts"
for lang in {ca,de,es,fr,hu,it,ja,ko,nb,nl,pl,pt,ru,sv,tr,zh}; do
install -Dm644 bin/resources/$lang/cemu.mo "$pkgdir/usr/share/cemu/resources/$lang/cemu.mo"
done
# install -Dm644 bin/shaderCache/info.txt "$pkgdir/usr/share/cemu/shaderCache/info.txt"
install -Dm644 src/resource/logo_icon.png "$pkgdir/usr/share/icons/hicolor/128x128/apps/cemu.png"
sed -i -e '/^Icon=/cIcon=cemu' -e '/^Exec=/cExec=env GDK_BACKEND=x11 cemu' dist/linux/info.cemu.Cemu.desktop
install -Dm644 dist/linux/info.cemu.Cemu.desktop "$pkgdir/usr/share/applications/cemu.desktop"
}
|