# SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin # SPDX-License-Identifier: CC-BY-NC-ND-4.0 # NOTE: These package files are intended for your own personal/private use. # You do not have permission to upload them independently to other package repositories. pkgname=duckstation pkgver=0 pkgrel=1 pkgdesc='PlayStation 1, aka. PSX Emulator' arch=('x86_64' 'aarch64') url='https://www.duckstation.org/' license=('CC-BY-NC-ND-4.0') # We want to keep debug symbols for backtraces. # Our cmake build already generates symbols. options=('!strip' '!debug') # User-selectable dependencies (as .so), and packages. depends=('libjpeg.so' # libjpeg or libjpeg-turbo 'libudev.so' 'curl' 'dbus' 'freetype2' 'hicolor-icon-theme' 'libpng' 'libwebp' 'libx11' 'libxrandr' 'libzip' 'qt6-base>=6.8.0' 'qt6-imageformats>=6.8.0' 'qt6-svg>=6.8.0' 'wayland' 'zlib' 'zstd' ) # qttools only needed for building (moc/uic/rcc/lupdate) # Same with the compilers. makedepends=('base-devel' 'clang' 'cmake' 'extra-cmake-modules' 'git' 'lld' 'llvm' 'ninja' 'qt6-tools>=6.8.0') source=( "${pkgname}::git+file://${startdir}/../../.." ) sha256sums=( "SKIP" ) # Name of the .desktop file that will be installed. _desktopname=org.duckstation.DuckStation # https://wiki.archlinux.org/title/VCS_package_guidelines#Git # --dirty omitted, we need to ignore changes to this script because # makepkg is fricking weird and edits the build recipe, instead of # just setting in the resulting file?! pkgver() { cd "$pkgname" git describe | sed 's/\([^-]*-g\)/r\1/;s/-/./g' } prepare() { cd "${pkgname}" # Are we creating a CI/official build? _tagpath="${startdir}/../../../src/scmversion/tag.h" if [[ -f "${_tagpath}" ]]; then echo "Copying SCM release tag..." cp "${_tagpath}" src/scmversion fi # build dependencies if [[ ! -z "$DEPSDIR" ]]; then _depsdir="$DEPSDIR" echo "Using existing dependencies from ${_depsdir}." else _depsdir="$PWD/deps" echo "Building dependencies to ${_depsdir}..." ./scripts/deps/build-dependencies-linux.sh \ -system-freetype -system-harfbuzz -system-libjpeg \ -system-libpng -system-libwebp -system-libzip \ -system-zstd -system-qt \ "${_depsdir}" fi } build() { cd "${pkgname}" rm -fr build-arch cmake -B build-arch \ -G Ninja \ -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="${_depsdir}" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ -DALLOW_INSTALL=ON \ -DINSTALL_SELF_CONTAINED=ON \ -DCMAKE_INSTALL_PREFIX="${pkgdir}/opt/duckstation" ninja -C build-arch } package() { cd "${pkgname}" ninja -C build-arch install # install wrapper script install -Dm755 scripts/packaging/duckstation-qt "${pkgdir}/usr/bin/duckstation-qt" # install desktop file and icon install -Dm644 scripts/${_desktopname}.desktop "${pkgdir}/usr/share/applications/${_desktopname}.desktop" install -Dm644 scripts/${_desktopname}.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/${_desktopname}.png" # install license install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" install -Dm644 data/resources/thirdparty.html "${pkgdir}/usr/share/licenses/${pkgname}/thirdparty.html" }