summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
authorStelios Tsampas2021-10-18 23:26:04 +0300
committerStelios Tsampas2021-10-18 23:26:04 +0300
commit8b32eca39d923ac4053a69c451191c1a259e4f56 (patch)
tree37103ce191d3ab1e7bfe637d22d4e014b52058ea /PKGBUILD
downloadaur-8b32eca39d923ac4053a69c451191c1a259e4f56.tar.gz
Initial commit
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD345
1 files changed, 345 insertions, 0 deletions
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..f5b57e6b120a
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,345 @@
+# Maintainer: loathingkernel <loathingkernel _a_ gmail _d_ com>
+
+pkgname=proton-experimental
+_srctag=6.3-20211018
+_commit=
+pkgver=${_srctag//-/.}
+_geckover=2.47.2
+_monover=6.4.1
+_dxvkver=1.9.2
+pkgrel=1
+epoch=1
+pkgdesc="Compatibility tool for Steam Play based on Wine and additional components. Monolithic distribution, experimental branch"
+url="https://github.com/ValveSoftware/Proton"
+arch=(x86_64 x86_64_v3)
+options=(!staticlibs !lto)
+license=('custom')
+
+depends=(
+ attr lib32-attr
+ fontconfig lib32-fontconfig
+ lcms2 lib32-lcms2
+ libxml2 lib32-libxml2
+ libxcursor lib32-libxcursor
+ libxrandr lib32-libxrandr
+ libxdamage lib32-libxdamage
+ libxi lib32-libxi
+ gettext lib32-gettext
+ freetype2 lib32-freetype2
+ glu lib32-glu
+ libsm lib32-libsm
+ gcc-libs lib32-gcc-libs
+ libpcap lib32-libpcap
+ 'sdl2>=2.0.16' 'lib32-sdl2>=2.0.16'
+ desktop-file-utils
+ python
+ steam-native-runtime
+)
+
+makedepends=(autoconf ncurses bison perl fontforge flex mingw-w64-gcc
+ git wget rsync mingw-w64-tools lld nasm meson cmake python-virtualenv python-pip
+ glslang vulkan-headers
+ giflib lib32-giflib
+ libpng lib32-libpng
+ gnutls lib32-gnutls
+ libxinerama lib32-libxinerama
+ libxcomposite lib32-libxcomposite
+ libxmu lib32-libxmu
+ libxxf86vm lib32-libxxf86vm
+ libldap lib32-libldap
+ mpg123 lib32-mpg123
+ openal lib32-openal
+ v4l-utils lib32-v4l-utils
+ alsa-lib lib32-alsa-lib
+ libxcomposite lib32-libxcomposite
+ mesa lib32-mesa
+ mesa-libgl lib32-mesa-libgl
+ opencl-icd-loader lib32-opencl-icd-loader
+ libxslt lib32-libxslt
+ libpulse lib32-libpulse
+ libva lib32-libva
+ gtk3 lib32-gtk3
+ gst-plugins-base-libs lib32-gst-plugins-base-libs
+ vulkan-icd-loader lib32-vulkan-icd-loader
+ 'sdl2>=2.0.16' 'lib32-sdl2>=2.0.16'
+ libcups lib32-libcups
+ rust lib32-rust-libs
+ sane
+ libgphoto2
+ gsm
+ ffmpeg
+ samba
+ opencl-headers
+)
+
+optdepends=(
+ giflib lib32-giflib
+ libpng lib32-libpng
+ libldap lib32-libldap
+ gnutls lib32-gnutls
+ mpg123 lib32-mpg123
+ openal lib32-openal
+ v4l-utils lib32-v4l-utils
+ libpulse lib32-libpulse
+ alsa-plugins lib32-alsa-plugins
+ alsa-lib lib32-alsa-lib
+ libjpeg-turbo lib32-libjpeg-turbo
+ libxcomposite lib32-libxcomposite
+ libxinerama lib32-libxinerama
+ ncurses lib32-ncurses
+ opencl-icd-loader lib32-opencl-icd-loader
+ libxslt lib32-libxslt
+ libva lib32-libva
+ gtk3 lib32-gtk3
+ gst-plugins-base-libs lib32-gst-plugins-base-libs
+ vulkan-icd-loader lib32-vulkan-icd-loader
+ sane
+ libgphoto2
+ gsm
+ ffmpeg
+ cups
+ samba dosbox
+)
+
+makedepends=(${makedepends[@]} ${depends[@]})
+#install=${pkgname}.install
+source=(
+ proton::git+https://github.com/ValveSoftware/Proton.git#tag=experimental-${_srctag}
+ wine-valve::git+https://github.com/ValveSoftware/wine.git
+ dxvk-valve::git+https://github.com/ValveSoftware/dxvk.git
+ openvr::git+https://github.com/ValveSoftware/openvr.git
+ liberation-fonts::git+https://github.com/liberationfonts/liberation-fonts.git
+ FAudio::git+https://github.com/FNA-XNA/FAudio.git
+ gstreamer::git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git
+ gst-plugins-base::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-base.git
+ gst-plugins-good::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-good.git
+ gst-orc::git+https://gitlab.freedesktop.org/gstreamer/orc.git
+ vkd3d-proton::git+https://github.com/HansKristian-Work/vkd3d-proton.git
+ OpenXR-SDK::git+https://github.com/KhronosGroup/OpenXR-SDK.git
+ dxvk-nvapi::git+https://github.com/jp7677/dxvk-nvapi.git
+ dxil-spirv::git+https://github.com/HansKristian-Work/dxil-spirv.git
+ SPIRV-Headers::git+https://github.com/KhronosGroup/SPIRV-Headers.git
+ Vulkan-Headers::git+https://github.com/KhronosGroup/Vulkan-Headers.git
+ vkd3d-zfigura::git+https://repo.or.cz/vkd3d/zf.git
+ https://dl.winehq.org/wine/wine-gecko/${_geckover}/wine-gecko-${_geckover}-x86{,_64}.tar.xz
+ https://github.com/madewokherd/wine-mono/releases/download/wine-mono-${_monover}/wine-mono-${_monover}-x86.tar.xz
+ https://raw.githubusercontent.com/Sporif/dxvk-async/${_dxvkver}/dxvk-async.patch
+ wine-winevulkan_fsr.patch
+ wine-more_8x5_res.patch
+ proton-unfuck_makefile.patch
+ proton-disable_lock.patch
+ proton-user_compat_data.patch
+)
+noextract=(
+ wine-gecko-${_geckover}-{x86,x86_64}.tar.xz
+ wine-mono-${_monover}-x86.tar.xz
+)
+
+prepare() {
+ # I know this is fugly and it should NOT be done
+ # but the afdko package from AUR breaks regularly.
+ # Install it from pip in a virtualenv
+ virtualenv --app-data "$srcdir"/build_venv/cache --no-wheel build_venv
+ source build_venv/bin/activate
+ pip install --no-cache-dir afdko
+ pip install --no-cache-dir pefile
+
+ [ ! -d gecko ] && mkdir gecko
+ mv wine-gecko-${_geckover}-x86{,_64}.tar.xz gecko/
+
+ [ ! -d mono ] && mkdir mono
+ mv wine-mono-${_monover}-x86.tar.xz mono/
+
+ [ ! -d build ] && mkdir build
+ cd proton
+
+ pushd media-converter
+ export RUSTUP_TOOLCHAIN=stable
+ export CARGO_HOME="${srcdir}"/build/.cargo
+ cargo update
+ cargo fetch --locked --target "i686-unknown-linux-gnu"
+ cargo fetch --locked --target "x86_64-unknown-linux-gnu"
+ popd
+
+ _submodules=(
+ wine-valve::wine
+ dxvk-valve::dxvk
+ openvr
+ liberation-fonts::fonts/liberation-fonts
+ FAudio
+ gstreamer
+ gst-plugins-base
+ gst-plugins-good
+ gst-orc
+ vkd3d-proton
+ OpenXR-SDK
+ dxvk-nvapi
+ SPIRV-Headers
+ Vulkan-Headers
+ vkd3d-zfigura::vkd3d
+ )
+
+ for submodule in "${_submodules[@]}"; do
+ git submodule init "${submodule#*::}"
+ git config submodule."${submodule#*::}".url "$srcdir"/"${submodule%::*}"
+ git submodule update "${submodule#*::}"
+ done
+
+ pushd vkd3d-proton
+ for submodule in subprojects/{dxil-spirv,Vulkan-Headers,SPIRV-Headers}; do
+ git submodule init "${submodule}"
+ git config submodule."${submodule}".url "$srcdir"/"${submodule#*/}"
+ git submodule update "${submodule}"
+ done
+ pushd subprojects/dxil-spirv
+ git submodule init third_party/spirv-headers
+ git config submodule.third_party/spirv-headers.url "$srcdir"/SPIRV-Headers
+ git submodule update third_party/spirv-headers
+ popd
+ popd
+
+ pushd dxvk-nvapi
+ git submodule init external/Vulkan-Headers
+ git config submodule.external/Vulkan-Headers.url "$srcdir"/Vulkan-Headers
+ git submodule update external/Vulkan-Headers
+ popd
+
+ pushd wine
+ # Add FSR for fshack (doesn't compile)
+ #patch -p1 -i "$srcdir"/wine-winevulkan_fsr.patch
+ # Adds more 16:10 resolutions for use with FSR
+ patch -p1 -i "$srcdir"/wine-more_8x5_res.patch
+ popd
+
+ pushd dxvk
+ # Uncomment to enable dxvk async patch.
+ # Enable at your own risk. If you don't know what it is,
+ # and its implications, leave it as is. You have been warned.
+ # I am not liable if anything happens to you by using it.
+ patch -p1 -i "$srcdir"/dxvk-async.patch
+ popd
+
+ patch -p1 -i "$srcdir"/proton-unfuck_makefile.patch
+ patch -p1 -i "$srcdir"/proton-disable_lock.patch
+ patch -p1 -i "$srcdir"/proton-user_compat_data.patch
+}
+
+build() {
+ source build_venv/bin/activate
+
+ cd build
+ ROOTLESS_CONTAINER="" \
+ ../proton/configure.sh \
+ --container-engine="" \
+ --proton-sdk-image="" \
+ --steam-runtime=native \
+ --no-proton-sdk \
+ --build-name="${pkgname}"
+
+ # Export CFLAGS used by upstream
+ # -O2 is adjusted to -O3 since AVX is disabled
+ # This overrides CFLAGS from makepkg.conf, if you comment these you are on your own
+ # If you want the "best" possbile optimizations for your system you can use
+ # `-march=native` and remove the `-mtune=core-avx2` option.
+ export CFLAGS="-O3 -march=nocona -mtune=core-avx2 -pipe"
+ export CXXFLAGS="-O3 -march=nocona -mtune=core-avx2 -pipe"
+
+ # If using -march=native and the CPU supports AVX, launching a d3d9
+ # game can cause an Unhandled exception. The cause seems to be the
+ # combination of AVX instructions and tree vectorization (implied by O3),
+ # all tested archictures from sandybridge to haswell are affected.
+ # Disabling AVX (and AVX2 as a side-effect).
+ # Since Wine 5.16 AVX is supported. Testing showed 32bit applications
+ # crashing with AVX regardless, but 64bit applications worked just fine.
+ # So disable AVX only for the 32bit binaries and AVX2 for the 64bit.
+ # AVX2 seems to degrade performance. So disregard the above.
+ # Relevant Wine issues
+ # https://bugs.winehq.org/show_bug.cgi?id=45289
+ # https://bugs.winehq.org/show_bug.cgi?id=43516
+ export CFLAGS+=" -mno-avx -mno-avx2"
+ export CXXFLAGS+=" -mno-avx -mno-avx2"
+ # Filter known bad flags before applying optimizations
+ # Filter fstack-protector{ ,-all,-strong} flag for MingW.
+ # https://github.com/Joshua-Ashton/d9vk/issues/476
+ #export CFLAGS+=" -fno-stack-protector"
+ export CFLAGS="${CFLAGS// -fstack-protector*([\-all|\-strong])/}"
+ #export CXXFLAGS+=" -fno-stack-protector"
+ export CXXFLAGS="${CXXFLAGS// -fstack-protector*([\-all|\-strong])/}"
+ # From wine-staging PKGBUILD
+ # Doesn't compile with these flags in MingW so remove them.
+ # They are also filtered in Wine PKGBUILDs so remove them
+ # for winelib versions too.
+ # Doesn't compile without remove these flags as of 4.10
+ export CFLAGS="${CFLAGS/ -fno-plt/}"
+ export CXXFLAGS="${CXXFLAGS/ -fno-plt/}"
+ export LDFLAGS="${LDFLAGS/,-z,now/}"
+ # MingW Wine builds fail with relro
+ export LDFLAGS="${LDFLAGS/,-z,relro/}"
+
+ export RUSTUP_TOOLCHAIN=stable
+ export WINEESYNC=0
+ export WINEFSYNC=0
+ SUBJOBS=$([[ "$MAKEFLAGS" =~ -j\ *([1-9][0-9]*) ]] && echo "${BASH_REMATCH[1]}" || echo "$(nproc)") \
+ make -j1 dist
+}
+
+package() {
+ cd build
+
+ local _compatdir="$pkgdir/usr/share/steam/compatibilitytools.d"
+ mkdir -p "$_compatdir"
+ cp -rf --no-dereference --preserve=mode,links dist "$_compatdir/${pkgname}"
+
+ mkdir -p "$pkgdir/usr/share/licenses/${pkgname}"
+ mv "$_compatdir/${pkgname}"/LICENSE{,.OFL} \
+ "$pkgdir/usr/share/licenses/${pkgname}"
+
+ cd "$_compatdir/${pkgname}/files"
+ i686-w64-mingw32-strip --strip-unneeded \
+ $(find lib/wine \( -iname fakedlls \) -prune -false -or -iname "*.dll" -or -iname "*.exe")
+ x86_64-w64-mingw32-strip --strip-unneeded \
+ $(find lib64/wine \( -iname fakedlls \) -prune -false -or -iname "*.dll" -or -iname "*.exe")
+
+ local _geckodir="share/wine/gecko/wine-gecko-${_geckover}"
+ i686-w64-mingw32-strip --strip-unneeded \
+ $(find "$_geckodir"-x86 -iname "*.dll" -or -iname "*.exe")
+ x86_64-w64-mingw32-strip --strip-unneeded \
+ $(find "$_geckodir"-x86_64 -iname "*.dll" -or -iname "*.exe")
+
+ local _monodir="share/wine/mono/wine-mono-${_monover}"
+ i686-w64-mingw32-strip --strip-unneeded \
+ $(find "$_monodir"/lib/mono -iname "*.dll" -or -iname "*.exe")
+ i686-w64-mingw32-strip --strip-unneeded \
+ "$_monodir"/lib/x86/*.dll \
+ $(find "$_monodir" -iname "*x86.dll" -or -iname "*x86.exe")
+ x86_64-w64-mingw32-strip --strip-unneeded \
+ "$_monodir"/lib/x86_64/*.dll \
+ $(find "$_monodir" -iname "*x86_64.dll" -or -iname "*x86_64.exe")
+}
+
+sha256sums=('SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ '8fab46ea2110b2b0beed414e3ebb4e038a3da04900e7a28492ca3c3ccf9fea94'
+ 'b4476706a4c3f23461da98bed34f355ff623c5d2bb2da1e2fa0c6a310bc33014'
+ 'a70c865e590058fa6fc3aa47425646405bdda27f78b9aa6d2030d2d2a8efadbb'
+ '9212a9c42ac8c9c7b9ba7378685b27e7ea0e7a8a8aaac1f3f4d37590ada3e991'
+ 'b4e9c0c4959fcb3f7b7f25e35e5e0577dac5d54fe18e6edb15852a2a4196f2a2'
+ '9005d8169266ba0b93be30e1475fe9a3697464796f553886c155ec1d77d71215'
+ 'dd267386b793314b339a8b45e1335bc1820c77d4aa3c8c3946544f2017da2fce'
+ '12a587972a101a6d0c279a3820135277097c5f3e9f5990c5741d5fb1626dc770'
+ 'cfe984e2b3d65b01e2875e51b8ef8b8d6f1268dd09a88d5611655f24b46cff8d')