Last active
April 4, 2025 05:29
-
-
Save sukanka/ea58a629d28cb46287ca41033761d1e5 to your computer and use it in GitHub Desktop.
PKGBUILD for torzu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Maintainer: username227 <gfrank227 [at] gmail [dot] com> | |
_pkgname=torzu | |
_branch=main | |
pkgname=torzu-git | |
pkgver=2024.08.10.r45 | |
pkgrel=1 | |
pkgdesc="Torzu is a fork of yuzu, the world's most popular, open-source, Nintendo Switch emulator. It is written in C++ with portability in mind." | |
arch=(x86_64) | |
url=https://notabug.org/litucks/torzu | |
license=(GPL-3.0-or-later) | |
provides=('yuzu' 'torzu') | |
conflicts=('yuzu' 'torzu') | |
depends=('boost-libs' 'shared-mime-info' 'hicolor-icon-theme' 'sdl2' 'qt5-base' 'qt5-multimedia' 'qt5-webengine' 'libxkbcommon-x11' 'fmt' 'libzip' 'opus' 'libfdk-aac' 'lz4' 'openssl' 'zstd' 'cubeb' 'enet' 'libinih' 'discord-rpc' 'cpp-httplib' 'enet') | |
makedepends=('llvm' 'git' 'glslang' 'cmake' 'vulkan-memory-allocator' 'vulkan-utility-libraries' 'ninja' 'graphviz' 'doxygen' 'boost' 'catch2' 'nlohmann-json' 'rapidjson' 'qt5-tools' 'desktop-file-utils' 'robin-map' 'cpp-jwt' 'vulkan-headers' 'spirv-headers' 'dos2unix' 'clang' 'python' 'renderdoc' 'gamemode' 'perl' 'yasm' 'python-jsonschema' 'python-jinja' 'patch' 'dos2unix') | |
optdepends=('qt5-wayland: for Wayland support') | |
source=( | |
git+https://notabug.org/litucks/torzu | |
git+https://github.com/herumi/xbyak.git#commit=a1ac3750f9 | |
ffmpeg::git+https://github.com/FFmpeg/FFmpeg.git#commit=e0db1f51d6 | |
git+https://github.com/bylaws/libadrenotools.git#commit=5deac9f1ab | |
git+https://github.com/lat9nq/tzdb_to_nx.git#commit=9792969023 | |
git+https://github.com/brofield/simpleini.git#commit=382ddbb4b9 | |
"https://github.com/lat9nq/tzdb_to_nx/releases/download/221202/221202.zip" | |
) | |
noextract=('221202.zip') | |
b2sums=('SKIP' | |
'10564f981204fe52c4c737a5c98ff4431e156ea0936355ee999656b7564329531fe832dfbf742642c33fbb86ab95b2a082dcd9415ef91b9089e282f535f10057' | |
'ad41c1a684cd86722239020ea3c69bebb81736101b8a1db12cef15f54c6608d6f0327ac56aeff3706e94f8f141276aaddc89ace8da6fb86e67bbce4323934f30' | |
'50ad56f3317223ed855aaf03b3446cfa65e58078bb5b8cf62dae107ef13893240fcaf0e8f036aec1b4867514898b203736933804804cb34367c93443e4c1d152' | |
'03f29026e30be85bdd64331f29538baa9e88731192b5a8b944703c42d43335d42fd9ee7574a3d2dc1856a9f19133feaf4ce1d4e66df6c80005d724e6a152cc31' | |
'1bb5528208c155f148494ae488cef05182eadf0f17881f4b6c2cd7cc00bc4ffbf2612baf85bd29f8eb7053076b014ced34438b3c7a7429a99b75db27f826cbfd' | |
'7bd0ff5ca80cf560344ae7edbfeb7c9466c096dc499a7348276cff5d30aa07464f7e2ea391ca9cedac0e21ba6f563169a8b38f2df729a230a0acfb1125ea1b66') | |
pkgver() { | |
cd "$srcdir/$_pkgname" | |
git describe --long --abbrev=7 --tags | sed 's/\([^-]*\)-g.*/r\1/;s/-/./g' | |
} | |
prepare() { | |
local submods=( | |
libadrenotools | |
simpleini | |
xbyak | |
) | |
for pro in ${submods[@]}; do | |
if [ -d $srcdir/$_pkgname/externals/${pro} ]; then | |
cp -rf ${srcdir}/${pro}/* $srcdir/$_pkgname/externals/${pro} | |
else | |
cp -rf ${srcdir}/${pro} $srcdir/$_pkgname/externals/${pro} | |
fi | |
done | |
cp -rf tzdb_to_nx $srcdir/$_pkgname/externals/nx_tzdb/ | |
cp -rf ffmpeg/* $srcdir/$_pkgname/externals/ffmpeg/ffmpeg | |
cd $srcdir/${_pkgname} | |
sed -i CMakeLists.txt \ | |
-e '/-DBOOST_ASIO_DISABLE_CONCEPTS/d' \ | |
-e 's/1.3.274/1.4.304/g' \ | |
-e 's/httplib 0.12/httplib/g' | |
sed -i src/video_core/host_shaders/CMakeLists.txt \ | |
-e 's/--quiet //g' \ | |
-e 's#${SPIRV_HEADER_FILE} ${SOURCE_FILE}#${SPIRV_HEADER_FILE} ${SOURCE_FILE} 2>/dev/null#g' | |
sed -i -e '1i #include <cstring>' src/video_core/textures/bcn.cpp | |
sed -i dist/onion.torzu_emu.torzu.desktop \ | |
-e '/yuzu %f/a StartupWMClass=yuzu' \ | |
-e 's_^MimeType=.*_&application/x-nx-nsp;application/x-nx-xci;_' | |
sed -i -e 's| (%2)||' src/yuzu/aboutdialog.ui | |
sed -i -e 's|io_service|io_context|g' src/input_common/drivers/udp_client.cpp src/tests/input_common/calibration_configuration_job.cpp | |
sed -i -e "s|https://github.com/lat9nq/tzdb_to_nx/releases/download/\${NX_TZDB_VERSION}|file://${srcdir}|g" externals/nx_tzdb/CMakeLists.txt | |
perl -0777 -i.original -pe 's/(\s*target_compile_options\(video_core PRIVATE\s*-Wno-sign-conversion)/$1\n -msse4.1/igs' src/video_core/CMakeLists.txt | |
} | |
build() { | |
export CXXFLAGS+=' -Wno-switch' | |
local cmake_args=( | |
-GNinja | |
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON | |
-DTITLE_BAR_FORMAT_IDLE="torzu $pkgver" | |
-DTITLE_BAR_FORMAT_RUNNING="torzu $pkgver | {3}" | |
-DCMAKE_INSTALL_PREFIX=/usr | |
-DCMAKE_BUILD_TYPE=Release | |
-DYUZU_ENABLE_COMPATIBILITY_REPORTING=OFF | |
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF | |
-DYUZU_USE_QT_WEB_ENGINE=ON | |
-DUSE_DISCORD_PRESENCE=ON | |
-DENABLE_QT_TRANSLATION=ON | |
-DYUZU_USE_BUNDLED_FFMPEG=OFF | |
-DYUZU_USE_BUNDLED_QT=OFF | |
-DYUZU_USE_EXTERNAL_SDL2=OFF | |
-DYUZU_CHECK_SUBMODULES=OFF | |
-DYUZU_USE_EXTERNAL_VULKAN_HEADERS=OFF | |
-DYUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES=OFF | |
-DYUZU_USE_FASTER_LD=OFF | |
-DYUZU_USE_PRECOMPILED_HEADERS=OFF | |
-DYUZU_USE_QT_MULTIMEDIA=ON | |
-DYUZU_DOWNLOAD_TIME_ZONE_DATA=ON | |
-DYUZU_TESTS=OFF | |
-DYUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS=OFF | |
) | |
install -d build | |
cmake -S torzu -B build "${cmake_args[@]}" | |
ninja -C build | |
} | |
package() { | |
install -Dm644 $srcdir/${_pkgname}/dist/72-yuzu-input.rules -t ${pkgdir}/usr/lib/udev/rules.d/ | |
DESTDIR="$pkgdir/" ninja -C $srcdir/build install | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment