Skip to content

Instantly share code, notes, and snippets.

@sukanka
Last active April 4, 2025 05:29
Show Gist options
  • Save sukanka/ea58a629d28cb46287ca41033761d1e5 to your computer and use it in GitHub Desktop.
Save sukanka/ea58a629d28cb46287ca41033761d1e5 to your computer and use it in GitHub Desktop.
PKGBUILD for torzu
# 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