summaryrefslogtreecommitdiff
path: root/app-emulation/steam/files/steam-wrapper.sh
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/steam/files/steam-wrapper.sh')
-rw-r--r--app-emulation/steam/files/steam-wrapper.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/app-emulation/steam/files/steam-wrapper.sh b/app-emulation/steam/files/steam-wrapper.sh
new file mode 100644
index 00000000..25936107
--- /dev/null
+++ b/app-emulation/steam/files/steam-wrapper.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Set a default STEAM_RUNTIME value.
+: ${STEAM_RUNTIME:=@@STEAM_RUNTIME@@}
+export STEAM_RUNTIME
+
+# Gentoo's lsb-release doesn't set this.
+export DISTRIB_RELEASE="@@PVR@@"
+
+# Add paths to occasionally needed libraries not found in /usr/lib.
+export LD_LIBRARY_PATH+="${LD_LIBRARY_PATH+:}@@GENTOO_LD_LIBRARY_PATH@@"
+
+# Preload the extest library when running in a Wayland session.
+[[ -f "@@GENTOO_X86_LIBDIR@@/libextest.so" && ${XDG_SESSION_TYPE} == wayland ]] &&
+ export LD_PRELOAD+="${LD_PRELOAD+:}@@GENTOO_X86_LIBDIR@@/libextest.so"
+
+# Preload libstdc++ on default-libcxx systems to avoid crashes. Loading the
+# 64-bit library prevents Steam from working at all, so only load the 32-bit
+# multlib library. Pure 32-bit systems are untested and may not work.
+if grep -Fxqe --stdlib=libc++ /etc/clang/gentoo-runtimes.cfg 2>/dev/null; then
+ IFS=:
+ for GCC_LIB_DIR in $(gcc-config -L 2>/dev/null); do
+ [[ ${GCC_LIB_DIR} == */32 ]] || continue
+ export LD_PRELOAD+="${LD_PRELOAD+:}${GCC_LIB_DIR}/libstdc++.so"
+ done
+ unset IFS GCC_LIB_DIR
+fi
+
+# Steam renames LD_LIBRARY_PATH to SYSTEM_LD_LIBRARY_PATH and it then becomes
+# ineffective against games. We unfortunately therefore have to force the value
+# through via STEAM_RUNTIME_LIBRARY_PATH instead.
+export STEAM_RUNTIME_LIBRARY_PATH="${LD_LIBRARY_PATH}"
+
+. "${0%/*}"/../lib/steam/bin_steam.sh