summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD85
1 files changed, 45 insertions, 40 deletions
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() {