summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorxiota2024-06-06 19:39:19 +0000
committerxiota2024-06-06 19:39:19 +0000
commit06bd47ecdceb14f9ac4a7935cbd3566860c16585 (patch)
tree17f9b804bf8261d855a0db99c4e8a8b1137b54e6
parent5c66087cfe0779e7fdf4ec0046cb6e60b02e6f4c (diff)
downloadaur-06bd47ecdceb14f9ac4a7935cbd3566860c16585.tar.gz
add rpath; revise shaderc
-rw-r--r--.SRCINFO10
-rw-r--r--PKGBUILD89
2 files changed, 49 insertions, 50 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 86d0aa2a93ca..ff04f59c2285 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = duckstation
pkgdesc = Playstation emulator
pkgver = 0.1.6759
- pkgrel = 2
+ pkgrel = 3
url = https://github.com/stenzek/duckstation
arch = x86_64
license = GPL-3.0-only
@@ -12,6 +12,8 @@ pkgbase = duckstation
makedepends = lld
makedepends = llvm
makedepends = ninja
+ makedepends = patchelf
+ makedepends = patchutils
makedepends = python
makedepends = qt6-tools
makedepends = qt6-wayland
@@ -23,16 +25,10 @@ pkgbase = duckstation
depends = sdl2
depends = spirv-tools
source = google.shaderc::git+https://github.com/google/shaderc.git
- source = khronosgroup.glslang::git+https://github.com/KhronosGroup/glslang.git
- source = khronosgroup.spirv-headers::git+https://github.com/KhronosGroup/SPIRV-Headers.git
- source = khronosgroup.spirv-tools::git+https://github.com/KhronosGroup/SPIRV-Tools.git
source = ianlancetaylor.libbacktrace::git+https://github.com/ianlancetaylor/libbacktrace.git
source = duckstation::git+https://github.com/stenzek/duckstation.git#commit=0a63bec65ca0346c89f82469a8a9c9cba401faa1
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
pkgname = duckstation
diff --git a/PKGBUILD b/PKGBUILD
index fcd7f7d8ee58..01eb193c0d4f 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -15,7 +15,7 @@ unset _pkgtype
_pkgname="duckstation"
pkgname="$_pkgname${_pkgtype:-}"
pkgver=0.1.6759
-pkgrel=2
+pkgrel=3
pkgdesc="Playstation emulator"
url="https://github.com/stenzek/duckstation"
arch=('x86_64')
@@ -49,6 +49,8 @@ makedepends=(
'lld'
'llvm'
'ninja'
+ 'patchelf'
+ 'patchutils'
'python'
'qt6-tools'
'qt6-wayland'
@@ -56,24 +58,15 @@ makedepends=(
)
_src_shaderc="google.shaderc"
-_src_shaderc_glslang="khronosgroup.glslang"
-_src_shaderc_spirv_headers="khronosgroup.spirv-headers"
-_src_shaderc_spirv_tools="khronosgroup.spirv-tools"
_src_backtrace="ianlancetaylor.libbacktrace"
source=(
"$_src_shaderc"::"git+https://github.com/google/shaderc.git"
- "$_src_shaderc_glslang"::"git+https://github.com/KhronosGroup/glslang.git"
- "$_src_shaderc_spirv_headers"::"git+https://github.com/KhronosGroup/SPIRV-Headers.git"
- "$_src_shaderc_spirv_tools"::"git+https://github.com/KhronosGroup/SPIRV-Tools.git"
"$_src_backtrace"::"git+https://github.com/ianlancetaylor/libbacktrace.git"
)
sha256sums=(
'SKIP'
'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
)
if [ "${_build_git::1}" != "t" ]; then
@@ -108,48 +101,33 @@ fi
prepare() {
local _version_shaderc=$(grep -E -m1 'SHADERC=' "$_pkgsrc/scripts/build-dependencies-linux.sh" | sed -E -e 's&^\s*SHADERC=(\S+)$&\1&')
- local _hash_glslang=$(grep -E -m1 glslang_revision "$_src_shaderc"/DEPS | sed -E "s&^.*: '([a-f0-9]+)'.*\$&\1&")
- local _hash_spirv_headers=$(grep -E -m1 spirv_headers_revision "$_src_shaderc"/DEPS | sed -E "s&^.*: '([a-f0-9]+)'.*\$&\1&")
- local _hash_spirv_tools=$(grep -E -m1 spirv_tools_revision "$_src_shaderc"/DEPS | sed -E "s&^.*: '([a-f0-9]+)'.*\$&\1&")
git -C "$srcdir/$_src_shaderc" checkout -f "v$_version_shaderc"
- git -C "$srcdir/$_src_shaderc_glslang" checkout -f "$_hash_glslang"
- git -C "$srcdir/$_src_shaderc_spirv_headers" checkout -f "$_hash_spirv_headers"
- git -C "$srcdir/$_src_shaderc_spirv_tools" checkout -f "$_hash_spirv_tools"
- ln -s "$srcdir/$_src_shaderc_glslang" "$srcdir/$_src_shaderc"/third_party/glslang
- ln -s "$srcdir/$_src_shaderc_spirv_headers" "$srcdir/$_src_shaderc"/third_party/spirv-headers
- ln -s "$srcdir/$_src_shaderc_spirv_tools" "$srcdir/$_src_shaderc"/third_party/spirv-tools
+ filterdiff -x '*/CMakeLists.txt' "$srcdir/$_pkgsrc/.github/workflows/scripts/common/shaderc-changes.patch" \
+ | sed -E 's&non_sematic_debug_info&non_semantic_debug_info&' \
+ > shaderc-changes.patch
cd "$_src_shaderc"
git apply "$srcdir/$_pkgname/scripts/shaderc-changes.patch"
-}
-build() {
- export AR CC CXX CFLAGS CXXFLAGS LDFLAGS LTOFLAGS
- AR="llvm-ar"
- CC="clang"
- CXX="clang++"
- LDFLAGS+=" -fuse-ld=lld"
- LTOFLAGS="-flto=thin"
-
- if [[ "${_build_avx::1}" == "t" ]]; then
- export CFLAGS="$(echo "$CFLAGS" | sed -E 's@(\s*-(march|mtune)=\S+\s*)@ @g;s@\s*-O[0-9]\s*@ @g;s@\s+@ @g') -march=x86-64-v3 -mtune=generic -O3"
- export CXXFLAGS="$(echo "$CXXFLAGS" | sed -E 's@(\s*-(march|mtune)=\S+\s*)@ @g;s@\s*-O[0-9]\s*@ @g;s@\s+@ @g') -march=x86-64-v3 -mtune=generic -O3"
- fi
+ sed -E -e '/\(glslc\)/d;/examples/d;/third_party/d' \
+ -i CMakeLists.txt
+}
- (
- echo "Building libbacktrace..."
- cd "$_src_backtrace"
+_build_libbacktrace() (
+ echo "Building libbacktrace..."
+ cd "$_src_backtrace"
- autoreconf -fi
- ./configure
- make
+ autoreconf -fi
+ ./configure
+ make
- install -Dm644 .libs/libbacktrace.a -t "$srcdir/deps/"
- install -Dm644 *.h -t "$srcdir/deps/include/"
- )
+ install -Dm644 .libs/libbacktrace.a -t "$srcdir/deps/"
+ install -Dm644 *.h -t "$srcdir/deps/include/"
+)
+_build_shaderc() {
echo "Building shaderc..."
local _cmake_shaderc=(
@@ -161,13 +139,16 @@ build() {
-DSHADERC_SKIP_TESTS=ON
-DSHADERC_SKIP_EXAMPLES=ON
-DSHADERC_SKIP_COPYRIGHT_CHECK=ON
+ -Dglslang_SOURCE_DIR=/usr/include/glslang
-Wno-dev
)
cmake "${_cmake_shaderc[@]}"
cmake --build build_shaderc
DESTDIR="$srcdir/deps" cmake --install build_shaderc
+}
+_build_duckstation() {
echo "Building duckstation..."
local _cmake_options=(
@@ -177,10 +158,12 @@ build() {
-DCMAKE_BUILD_TYPE=None
-DBUILD_NOGUI_FRONTEND=OFF
-DBUILD_QT_FRONTEND=ON
- -DCMAKE_PREFIX_PATH="$srcdir/deps/usr"
+
-DCMAKE_SKIP_RPATH=ON
-DLIBBACKTRACE_LIBRARY="$srcdir/deps/libbacktrace.a"
-DLIBBACKTRACE_INCLUDE_DIR="$srcdir/deps/include"
+ -DSHADERC_INCLUDE_DIR="$srcdir/deps/usr/include"
+ -DSHADERC_LIBRARY="$srcdir/deps/usr/lib/libshaderc_shared.so.1"
-Wno-dev
)
@@ -188,11 +171,31 @@ build() {
cmake --build build
}
+build() {
+ export AR CC CXX CFLAGS CXXFLAGS LDFLAGS
+ AR="llvm-ar"
+ CC="clang"
+ CXX="clang++"
+ LDFLAGS+=" -fuse-ld=lld"
+
+ if [[ "${_build_avx::1}" == "t" ]]; then
+ export CFLAGS="$(echo "$CFLAGS" | sed -E 's@(\s*-(march|mtune)=\S+\s*)@ @g;s@\s*-O[0-9]\s*@ @g;s@\s+@ @g') -march=x86-64-v3 -mtune=generic -O3"
+ export CXXFLAGS="$(echo "$CXXFLAGS" | sed -E 's@(\s*-(march|mtune)=\S+\s*)@ @g;s@\s*-O[0-9]\s*@ @g;s@\s+@ @g') -march=x86-64-v3 -mtune=generic -O3"
+ fi
+
+ _build_libbacktrace
+ _build_shaderc
+ _build_duckstation
+}
+
package() {
install -dm755 "$pkgdir/opt/$_pkgname/"
cp --reflink=auto -r build/bin/{resources,translations,duckstation-qt} "$pkgdir/opt/$_pkgname/"
- # bundled shaderc
+ # add rpath
+ patchelf --force-rpath --set-rpath '$ORIGIN' "$pkgdir/opt/$_pkgname/duckstation-qt"
+
+ # bundle libraries
install -Dm644 "$srcdir/deps/usr/lib/libshaderc_shared.so.1" -t "$pkgdir/opt/$_pkgname/"
install -Dm755 /dev/stdin "$pkgdir/usr/bin/duckstation" << END