# Maintainer: Anuskuss pkgname=cemu pkgver=2.0.116 pkgrel=2 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 sdl2 pugixml libzip libpng 'wxwidgets-gtk3>=3.2' ) makedepends=( # pkgbuild git 'cmake>=3.21.1' make # unbundled vcpkg rapidjson boost glslang glm 'fmt>=9.1' # cemu nasm vulkan-headers # wxwidgets glu ) optdepends=( 'vulkan-driver: Vulkan graphics' ) install=cemu.install source=( git+https://github.com/cemu-project/Cemu#commit=3349d7b4245e9bee862ee53a04196357fbedc99d # dependencies imgui-1.88.tar.gz::https://github.com/ocornut/imgui/archive/refs/tags/v1.88.tar.gz imgui.cmake::https://raw.githubusercontent.com/microsoft/vcpkg/master/ports/imgui/CMakeLists.txt imgui.conf::https://raw.githubusercontent.com/microsoft/vcpkg/master/ports/imgui/imgui-config.cmake.in # submodules git+https://github.com/mozilla/cubeb#commit=dc511c6b3597b6384d28949285b9289e009830ea # git+https://github.com/microsoft/vcpkg#commit=1b0252ca70ca2244a711535462c7f981eb439e83 # git+https://github.com/KhronosGroup/Vulkan-Headers#commit=715673702f5b18ffb8e5832e67cf731468d32ac6 git+https://github.com/Exzap/ZArchive#commit=48914a07df3c213333c580bb5e5bb3393442ca5b # cubeb submodules git+https://github.com/arsenm/sanitizers-cmake#commit=aab6948fa863bc1cbe5d0850bc46b9ef02ed4c1a git+https://github.com/google/googletest#commit=800f5422ac9d9e0ad59cd860a2ef3a679588acb4 # patches xdg.diff # 963f9b38349c5d03b26ab2a50ead2ee4e743ca41 overlay.diff # edeb14d4c68ee8bf500b990b13079177e01c25f1 dsu.diff # dbe8c94dd427585fc2f0c49947fa2d8051d8f218 + 56b140f159f3322cce00bb87f34274d1f62c314b dark.diff # 557d25c0525fd0dd662f41529c60fb9d722e5a0e ) sha256sums=( SKIP 9f14c788aee15b777051e48f868c5d4d959bd679fc5050e3d2a29de80d8fd32e 262faed507149c89aab7572fd2c2a968f843ca2900043e30a9c339735ed08a8f 91528f60cca93d3bce042d2ac16a63169025ec25a34453b49803126ed19153ae SKIP SKIP SKIP SKIP 4061e28533d391ebc4745cdc47470438b20c64dd11f7308e5acf35d0fbc54326 f25d13fe76cc6a0b475f0131211a951288160ddae92cd7a815f5aea61d7cfc0f 9af0cb88f07acad70aa5b7133ccbbaddacca542edea5817e622b4571cc26046d 15243ffa555559ade19cdb99d42dc10a6b4d1402c9cee045a623dd4b30827a1d ) 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 # cemu submodules for submodule in dependencies/{cubeb,ZArchive}; do git config submodule.$submodule.url "$srcdir/${submodule##*/}" git submodule update --init $submodule done pushd dependencies/cubeb for submodule in {cmake/sanitizers-cmake,googletest}; do git config submodule.$submodule.url "$srcdir/${submodule##*/}" git submodule update --init $submodule done popd # unbundled imgui sed -i '/imgui/cadd_subdirectory(dependencies/imgui)' CMakeLists.txt ln -srf "$srcdir/imgui-1.88" dependencies/imgui ln -srf "$srcdir/imgui.cmake" dependencies/imgui/CMakeLists.txt ln -srf "$srcdir/imgui.conf" dependencies/imgui/imgui-config.cmake.in # 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 # glslang fix sed -i 's/GLSLANG_VERSION_LESS/GLSLANG_VERSION_GREATER/' src/Cafe/HW/Latte/Renderer/Vulkan/RendererShaderVk.cpp # experimental: xdg base dir (https://github.com/cemu-project/Cemu/pull/130) git apply "$srcdir/xdg.diff" sed -i 's|gameProfiles/default|gameProfiles|' src/Cafe/GameProfile/GameProfile.cpp # experimental: linux overlay (https://github.com/cemu-project/Cemu/pull/142) rm -rf src/util/SystemInfo git apply "$srcdir/overlay.diff" # experimental: dsu controller (https://github.com/cemu-project/Cemu/pull/234) rm -f src/input/api/DSU/ReceiveTimeoutSocketOption.h git apply "$srcdir/dsu.diff" # experimental: dark mode fix (https://github.com/cemu-project/Cemu/pull/241) git apply "$srcdir/dark.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 export CC=$(which clang) export CXX=$(which clang++ 2> /dev/null || which clang) fi cd Cemu cmake -B build \ -DCMAKE_CXX_FLAGS="$CXXFLAGS -w" -Wno-dev \ -DSYSTEM_DATA_PATH=/opt/cemu \ -DENABLE_VCPKG=OFF \ -DCMAKE_BUILD_TYPE=Release \ -DPUBLIC_RELEASE=ON make -C build -j $(nproc) } package() { cd Cemu install -D bin/Cemu_release "$pkgdir/usr/bin/cemu" pushd bin/gameProfiles mv default/000500001011000.ini default/0005000010111000.ini for ini in default/*[A-Z]*; do mv $ini ${ini,,} done # install -Dm644 example.ini "$pkgdir/opt/cemu/gameProfiles/example.ini" install -Dm644 default/* -t "$pkgdir/opt/cemu/gameProfiles" popd install -Dm644 bin/resources/sharedFonts/* -t "$pkgdir/opt/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/opt/cemu/resources/$lang/cemu.mo" done # install -Dm644 bin/shaderCache/info.txt "$pkgdir/opt/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" }