summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO11
-rw-r--r--PKGBUILD85
2 files changed, 49 insertions, 47 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 98e988697ee9..380fa6a405bc 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = duckstation-git
pkgdesc = A Sony PlayStation (PSX) emulator, focusing on playability, speed, and long-term maintainability (git version)
- pkgver = 0.1.r6679.g17b9736
+ pkgver = 0.1.r6757.g7626a9b
pkgrel = 1
url = https://github.com/stenzek/duckstation
arch = x86_64
@@ -21,6 +21,7 @@ pkgbase = duckstation-git
makedepends = ninja
makedepends = jack
makedepends = python
+ makedepends = spirv-headers
depends = sh
depends = glibc
depends = gcc-libs
@@ -47,6 +48,8 @@ pkgbase = duckstation-git
depends = systemd-libs
depends = libudev.so
depends = hicolor-icon-theme
+ depends = glslang
+ depends = spirv-tools
optdepends = qt6-wayland: Wayland support
optdepends = libpulse: Pulseaudio support
optdepends = sndio: Small audio support
@@ -56,16 +59,10 @@ pkgbase = duckstation-git
conflicts = duckstation
source = git+https://github.com/stenzek/duckstation.git
source = git+https://github.com/google/shaderc.git#tag=v2024.0
- source = git+https://github.com/KhronosGroup/glslang.git#commit=d73712b8f6c9047b09e99614e20d456d5ada2390
- source = git+https://github.com/KhronosGroup/SPIRV-Headers.git#commit=8b246ff75c6615ba4532fe4fde20f1be090c3764
- source = git+https://github.com/KhronosGroup/SPIRV-Tools.git#commit=04896c462d9f3f504c99a4698605b6524af813c1
source = duckstation-qt.desktop
source = duckstation-qt.sh
sha256sums = SKIP
sha256sums = c1f935c1e0338e274cea4f106fc3b13e02f4150e504a255ddb18221bd80bb416
- sha256sums = 8c97fbe90abb311903b29d1fec8799e6e8a618ed2b69de6833dfed9252c85dad
- sha256sums = bbbdf1f65d11a5e6a1f03da5804e555af9c027e76f9dd22135a092f88b8a9b2b
- sha256sums = 56bb21ba0a74b6a489398d5a6d429d7e38346ef67c21ee6df00395c990224701
sha256sums = ec2d7358f81598390a8ceca2d1974be3e5f7c45602b550c89a1e9323ab45474b
sha256sums = 221a8fc0d1f0cebdf281acc26484e98ebbb59f876e12fdef3f03cf91380e31f5
diff --git a/PKGBUILD b/PKGBUILD
index 8c398002024e..1678a69f0ce4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,7 +2,7 @@
pkgname=duckstation-git
_pkgname=duckstation
-pkgver=0.1.r6679.g17b9736
+pkgver=0.1.r6757.g7626a9b
pkgdesc='A Sony PlayStation (PSX) emulator, focusing on playability, speed, and long-term maintainability (git version)'
pkgrel=1
arch=(x86_64 aarch64)
@@ -26,6 +26,8 @@ depends=(
curl libcurl.so
systemd-libs libudev.so
hicolor-icon-theme
+ glslang
+ spirv-tools
)
makedepends=(
git
@@ -43,6 +45,7 @@ makedepends=(
ninja
jack
python
+ spirv-headers
)
optdepends=(
'qt6-wayland: Wayland support'
@@ -51,22 +54,16 @@ optdepends=(
'alsa-lib: ALSA support'
'jack: JACK support'
)
-provides=('duckstation')
-conflicts=('duckstation')
+provides=(duckstation)
+conflicts=(duckstation)
source=(
git+"$url".git
git+https://github.com/google/shaderc.git#tag=v2024.0
- git+https://github.com/KhronosGroup/glslang.git#commit=d73712b8f6c9047b09e99614e20d456d5ada2390
- git+https://github.com/KhronosGroup/SPIRV-Headers.git#commit=8b246ff75c6615ba4532fe4fde20f1be090c3764
- git+https://github.com/KhronosGroup/SPIRV-Tools.git#commit=04896c462d9f3f504c99a4698605b6524af813c1
duckstation-qt.desktop
duckstation-qt.sh)
sha256sums=(
'SKIP'
'c1f935c1e0338e274cea4f106fc3b13e02f4150e504a255ddb18221bd80bb416'
- '8c97fbe90abb311903b29d1fec8799e6e8a618ed2b69de6833dfed9252c85dad'
- 'bbbdf1f65d11a5e6a1f03da5804e555af9c027e76f9dd22135a092f88b8a9b2b'
- '56bb21ba0a74b6a489398d5a6d429d7e38346ef67c21ee6df00395c990224701'
'ec2d7358f81598390a8ceca2d1974be3e5f7c45602b550c89a1e9323ab45474b'
'221a8fc0d1f0cebdf281acc26484e98ebbb59f876e12fdef3f03cf91380e31f5'
)
@@ -76,50 +73,59 @@ pkgver() {
git describe --long --abbrev=7 | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}
+prepare() {
+ cd "$srcdir/shaderc"
+ # apply duckstation patch
+ git apply "$srcdir/$_pkgname/scripts/shaderc-changes.patch" \
+ --exclude=CMakeLists.txt \
+ --exclude=libshaderc/CMakeLists.txt \
+ --exclude third_party/CMakeLists.txt
+
+ # de-vendor libs and disable git versioning
+ sed '/examples/d;/third_party/d' -i CMakeLists.txt
+ sed '/build-version/d' -i glslc/CMakeLists.txt
+ cat <<- EOF > glslc/src/build-version.inc
+"${pkgver}\\n"
+"$(pacman -Q spirv-tools|cut -d \ -f 2|sed 's/-.*//')\\n"
+"$(pacman -Q glslang|cut -d \ -f 2|sed 's/-.*//')\\n"
+EOF
+
+ cd "$srcdir/duckstation"
+ # preparation for find shaderc as static
+ sed -e 's|shaderc_shared|shaderc_combined|g' \
+ -e 's|PUBLIC Shaderc|PRIVATE Shaderc|g' \
+ -e '/PRIVATE Shaderc/a target_link_libraries(util PUBLIC glslang::glslang)' \
+ -e '/PRIVATE Shaderc/a target_link_libraries(util PUBLIC glslang::SPIRV)' \
+ -e '/if(SHADERC_FOUND)/a find_package(glslang 14.1.0 REQUIRED)' \
+ -i CMakeModules/FindShaderc.cmake \
+ -i src/util/CMakeLists.txt
+ sed -e '/INTERFACE_COMPILE/d' \
+ -i CMakeModules/FindShaderc.cmake
+}
+
build() {
echo "Building shaderc..."
- cd "$srcdir/shaderc"
- pushd third_party
- ln -sf ../../glslang ./
- ln -sf ../../SPIRV-Headers ./spirv-headers
- ln -sf ../../SPIRV-Tools ./spirv-tools
- popd
- git apply "$srcdir/$_pkgname/scripts/shaderc-changes.patch" \
- --exclude=CMakeLists.txt \
- --exclude=libshaderc/CMakeLists.txt \
- --exclude third_party/CMakeLists.txt
- cmake -B build \
+ cmake -B build-shaderc -S shaderc \
+ -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" \
- -DCMAKE_PREFIX_PATH="$srcdir/deps" \
- -DCMAKE_INSTALL_PREFIX="$srcdir/deps" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
-DSHADERC_SKIP_TESTS=ON \
-DSHADERC_SKIP_EXAMPLES=ON \
-DSHADERC_SKIP_COPYRIGHT_CHECK=ON \
- -DENABLE_GLSLANG_BINARIES=OFF \
- -DENABLE_SPVREMAPPER=OFF \
- -DSPIRV_TOOLS_LIBRARY_TYPE=STATIC \
- -DSPIRV_SKIP_EXECUTABLES=ON \
- -G Ninja
- cmake --build build --parallel
- cmake --install build
+ -Dglslang_SOURCE_DIR=/usr/include/glslang
+ ninja -C build-shaderc
+ DESTDIR="$srcdir/deps" ninja -C build-shaderc install
echo "Building duckstation..."
- cd "$srcdir"
-
- # preparation for find shaderc as static
- sed -e 's|shaderc_shared|shaderc_combined|g' \
- -e 's|PUBLIC Shaderc|PRIVATE Shaderc|g' \
- -i duckstation/CMakeModules/FindShaderc.cmake \
- -i duckstation/src/util/CMakeLists.txt
- sed '/INTERFACE_COMPILE/d' -i duckstation/CMakeModules/FindShaderc.cmake
cmake -B build -S duckstation \
+ -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
@@ -129,13 +135,12 @@ build() {
-DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
- -DCMAKE_PREFIX_PATH="$srcdir/deps" \
+ -DCMAKE_PREFIX_PATH="$srcdir/deps/usr" \
-DCMAKE_SKIP_RPATH=ON \
-DBUILD_NOGUI_FRONTEND=OFF \
-DBUILD_QT_FRONTEND=ON \
- -G Ninja \
-Wno-dev
- cmake --build build --parallel
+ ninja -C build
}
package() {