Advertisement
Guest User

duckstation with local shaderc

a guest
Apr 16th, 2024
53
0
1 day
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.99 KB | Source Code | 0 0
  1. # Contributor: katt <magunasu.b97@gmail.com>
  2.  
  3. pkgname=duckstation-git
  4. _pkgname=duckstation
  5. pkgver=0.1.r6665.ge40c022
  6. pkgdesc='A Sony PlayStation (PSX) emulator, focusing on playability, speed, and long-term maintainability (git version)'
  7. pkgrel=1
  8. arch=(x86_64 aarch64)
  9. url=https://github.com/stenzek/duckstation
  10. license=(GPL-3.0-only)
  11. depends=(
  12.     sh
  13.     glibc
  14.     gcc-libs
  15.     sdl2
  16.     qt6-base
  17.     libwebp
  18.     libjpeg-turbo
  19.     libpng
  20.     libxrandr
  21.     libx11
  22.     freetype2
  23.     zstd
  24.     zlib
  25.     dbus
  26.     curl
  27.     systemd-libs
  28.     hicolor-icon-theme)
  29. makedepends=(
  30.     git
  31.     cmake
  32.     clang
  33.     lld
  34.     llvm
  35.     extra-cmake-modules
  36.     qt6-tools
  37.     qt6-wayland
  38.     libdrm
  39.     libpulse
  40.     libwebp
  41.     alsa-lib
  42.     sndio
  43.     ninja
  44.     jack
  45.     patchelf)
  46. optdepends=(
  47.     'qt6-wayland: Wayland support'
  48.     'libpulse: Pulseaudio support'
  49.     'sndio: Small audio support'
  50.     'alsa-lib: ALSA support'
  51.     'jack: JACK support'
  52. )
  53. provides=('duckstation')
  54. conflicts=('duckstation')
  55. source=(git+"$url".git
  56.     git+https://github.com/google/shaderc.git#tag=v2024.0
  57.     git+https://github.com/KhronosGroup/glslang.git#commit=d73712b8f6c9047b09e99614e20d456d5ada2390
  58.     git+https://github.com/KhronosGroup/SPIRV-Headers.git#commit=8b246ff75c6615ba4532fe4fde20f1be090c3764
  59.     git+https://github.com/KhronosGroup/SPIRV-Tools.git#commit=04896c462d9f3f504c99a4698605b6524af813c1
  60.     duckstation-qt.desktop
  61.     duckstation-qt.sh)
  62. sha256sums=('SKIP'
  63.             'c1f935c1e0338e274cea4f106fc3b13e02f4150e504a255ddb18221bd80bb416'
  64.             '8c97fbe90abb311903b29d1fec8799e6e8a618ed2b69de6833dfed9252c85dad'
  65.             'bbbdf1f65d11a5e6a1f03da5804e555af9c027e76f9dd22135a092f88b8a9b2b'
  66.             '56bb21ba0a74b6a489398d5a6d429d7e38346ef67c21ee6df00395c990224701'
  67.             'ec2d7358f81598390a8ceca2d1974be3e5f7c45602b550c89a1e9323ab45474b'
  68.             '221a8fc0d1f0cebdf281acc26484e98ebbb59f876e12fdef3f03cf91380e31f5')
  69.  
  70. pkgver() {
  71.     cd "$srcdir/$_pkgname"
  72.     git describe --long --abbrev=7 | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
  73. }
  74.  
  75. build() {
  76.     echo "Building shaderc..."
  77.     cd "$srcdir/shaderc"
  78.     pushd third_party
  79.         ln -sf ../../glslang ./
  80.         ln -sf ../../SPIRV-Headers ./spirv-headers
  81.         ln -sf ../../SPIRV-Tools ./spirv-tools
  82.     popd
  83.     patch -p1 < "$srcdir/$_pkgname/scripts/shaderc-changes.patch"
  84.  
  85.     cmake -B build \
  86.         -DCMAKE_BUILD_TYPE=Release \
  87.         -DCMAKE_PREFIX_PATH="$srcdir/deps" \
  88.         -DCMAKE_INSTALL_PREFIX="$srcdir/deps" \
  89.         -DSHADERC_SKIP_TESTS=ON \
  90.         -DSHADERC_SKIP_EXAMPLES=ON \
  91.         -DSHADERC_SKIP_COPYRIGHT_CHECK=ON \
  92.         -G Ninja
  93.     cmake --build build --parallel
  94.     ninja -C build install
  95.  
  96.     echo "Building duckstation..."
  97.     cd "$srcdir"
  98.     cmake -B build -S duckstation \
  99.         -DCMAKE_BUILD_TYPE=Release \
  100.         -DCMAKE_C_COMPILER=clang \
  101.         -DCMAKE_CXX_COMPILER=clang++ \
  102.         -DCMAKE_C_FLAGS="$CFLAGS -Wno-error=format-security" \
  103.         -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-error=format-security" \
  104.         -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
  105.         -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
  106.         -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" \
  107.         -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
  108.         -DCMAKE_PREFIX_PATH="$srcdir/deps" \
  109.         -DBUILD_NOGUI_FRONTEND=OFF \
  110.         -DBUILD_QT_FRONTEND=ON \
  111.         -G Ninja \
  112.         -Wno-dev
  113.     cmake --build build --parallel
  114.     patchelf --remove-rpath --replace-needed libshaderc_shared.so.1 /usr/lib/duckstation/libshaderc_shared.so.1 build/bin/duckstation-qt
  115. }
  116.  
  117. package() {
  118.     # Initially install everything into /usr/lib/duckstation
  119.     install -m 755 -d "${pkgdir}/usr/lib"
  120.     cp -drv --no-preserve='ownership' build/bin "${pkgdir}/usr/lib/${_pkgname}"
  121.  
  122.     # Install shared shaderc in /usr/lib/duckstation
  123.     install -Dvm755 "$srcdir/deps/lib/libshaderc_shared.so.1" "${pkgdir}/usr/lib/${_pkgname}/"
  124.     ln -sf "/usr/lib/${_pkgname}/libshaderc_shared.so.1" "${pkgdir}/usr/lib/${_pkgname}/libshaderc_shared.so"
  125.  
  126.     # Move shared data to /usr/share/duckstation
  127.     cd "${pkgdir}/usr/lib/${_pkgname}"
  128.     install -m 755 -d "${pkgdir}/usr/share/${_pkgname}"
  129.     for _dir in resources translations
  130.     do
  131.         mv "${_dir}" "${pkgdir}/usr/share/${_pkgname}"
  132.         ln -s "/usr/share/${_pkgname}/${_dir}" .
  133.     done
  134.  
  135.     # Install additional license
  136.     install -m 755 -d "${pkgdir}/usr/share/licenses/${pkgname}/"
  137.     mv "${pkgdir}/usr/share/${_pkgname}/resources/thirdparty.html" "${pkgdir}/usr/share/licenses/${pkgname}/"
  138.     ln -s "/usr/share/licenses/${pkgname}/thirdparty.html" "${pkgdir}/usr/share/${_pkgname}/resources/"
  139.  
  140.     install -Dvm755 "${srcdir}/duckstation-qt.sh" "${pkgdir}/usr/bin/duckstation-qt"
  141.     install -Dvm644 "${srcdir}/duckstation-qt.desktop" "${pkgdir}/usr/share/applications/duckstation-qt.desktop"
  142.     install -Dvm644 "${pkgdir}/usr/share/${_pkgname}/resources/images/duck.png" "${pkgdir}/usr/share/icons/hicolor/64x64/apps/duckstation-qt.png"
  143. }
  144.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement