This repository was archived by the owner on Oct 10, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathAppRun
More file actions
executable file
·187 lines (157 loc) · 5.77 KB
/
AppRun
File metadata and controls
executable file
·187 lines (157 loc) · 5.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
PCSX2_HOME="$HOME/.config/PCSX2"
F11_APPIMAGE_TMP_DIR="$HERE"_tmp
F11_APPIMAGE_CONF_DIR="$HOME/.config/f11conf"
F11_APPIMAGE_VKCONF="$F11_APPIMAGE_CONF_DIR/vulkan.conf"
#===================================================================
make_dir() { [ ! -d "$1" ] && mkdir -p "$1"; };
function cleanup {
# clean tmp files:
rm -rf "$F11_APPIMAGE_TMP_DIR"
}
#------------------------------
# Configure AppImage:
if [ "$1" = "f11conf" ] ; then
echo "Init Configuration:"
make_dir $F11_APPIMAGE_CONF_DIR
#like: pcsx2.appimage f11conf vulkan radeon:intel
if [ "$2" = "vulkan" ] ; then
cat > $F11_APPIMAGE_VKCONF << EOF
F11_VULKAN=$3
EOF
cat $F11_APPIMAGE_VKCONF
fi
echo "Configuration done! "
exit 0
fi
# Create a tmp dir to some utils like vulkan (need one new, so remove the old):
if [ -d "$F11_APPIMAGE_TMP_DIR" ]; then
rm -rf "$F11_APPIMAGE_TMP_DIR"
fi
mkdir "$F11_APPIMAGE_TMP_DIR"
trap cleanup EXIT
#===================================================================
# If not extract and overwrite, $HERE/lib is a link to $HERE/usr/lib, that link to $HERE/usr/lib64
export LD_LIBRARY_PATH="$HERE/usr/lib":$LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$HERE/usr/lib32":$LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$HERE/lib":$LD_LIBRARY_PATH
export PATH=$HERE/bin:$HERE/usr/bin:$PATH
#----------------------------------------
#Sound Library
export LD_LIBRARY_PATH="$HERE/usr/lib32/pulseaudio":$LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$HERE/usr/lib32/alsa-lib":$LD_LIBRARY_PATH
export LADSPA_PATH="$HERE/usr/lib32/ladspa":$LADSPA_PATH
export AO_PLUGIN_PATH="$HERE/usr/lib32/ao/plugins-4":$AO_PLUGIN_PATH
# For mpg123
export LD_LIBRARY_PATH="$HERE/usr/lib32/mpg123":$LD_LIBRARY_PATH
# for libomxil-bellagio
export BELLAGIO_SEARCH_PATH="$HERE/usr/lib32/bellagio":"$HERE/usr/lib32/omxloaders":"$HERE/usr/lib32"
# libGL drivers
export LIBGL_DRIVERS_PATH="$HERE/usr/lib32/dri":$LIBGL_DRIVERS_PATH
# Gallium Nine
export D3D_MODULE_PATH="$HERE/usr/lib32/d3d":$D3D_MODULE_PATH
#Font Config
export FONTCONFIG_PATH="$HERE/etc/fonts":$FONTCONFIG_PATH
#LD
export MAIN32LDLIBRARY="$HERE/usr/lib32/ld-linux.so.2"
#------------------------------
# GTK 2.0
export GTK_PATH="$HERE/usr/lib32/gtk-2.0"
#------------------------------
# GStreamer environment variables
export GST_REGISTRY_REUSE_PLUGIN_SCANNER="no"
export GST_PLUGIN_SYSTEM_PATH_1_0="${HERE}/usr/lib32/gstreamer-1.0/"
export GST_PLUGIN_SCANNER_1_0="${HERE}/usr/lib32/gstreamer-1.0/gst-plugin-scanner"
export GST_PTP_HELPER_1_0="${HERE}/usr/lib32/gstreamer-1.0/gst-ptp-helper"
export GST_PLUGIN_PATH=${GST_PLUGIN_SYSTEM_PATH_1_0}
export GST_PLUGIN_SYSTEM_PATH=${GST_PLUGIN_SYSTEM_PATH_1_0}
export GST_PLUGIN_SCANNER=${GST_PLUGIN_SCANNER_1_0}
#===================================================================
# Gdk Pixbuf
export GDK_PIXBUF_MODULE_FILE="${F11_APPIMAGE_TMP_DIR}/gdk_pixbuf_loaders.cache"
export GDK_PIXBUF_MODULEDIR="${HERE}/usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders"
if [ -d "$F11_APPIMAGE_TMP_DIR" ]; then
$MAIN32LDLIBRARY "${HERE}/usr/bin/gdk-pixbuf-query-loaders-32" --update-cache
fi
#===================================================================
# For Vulkan drivers:
# Setting VK_ICD_FILENAMES... But the user can use his own variable for local drivers
if [ -n "$VK_ICD_FILENAMES" ] && [ -d "$F11_APPIMAGE_TMP_DIR" ]
then
echo "Using user \$VK_ICD_FILENAMES: $VK_ICD_FILENAMES"
elif [ -f "$F11_APPIMAGE_VKCONF" ]; then
. "$F11_APPIMAGE_VKCONF"
IFS_TMP=$IFS
IFS=:
for driver in $F11_VULKAN; do
#echo "$driver"
if [ "$driver" = "intel" ]; then
export VK_ICD_FILENAMES="$VK_ICD_FILENAMES:$F11_APPIMAGE_TMP_DIR/intel_icd.i686.json"
cat > $F11_APPIMAGE_TMP_DIR/intel_icd.i686.json << EOF
{
"ICD": {
"api_version": "1.1.102",
"library_path": "$HERE/usr/lib32/libvulkan_intel.so"
},
"file_format_version": "1.0.0"
}
EOF
elif [ "$driver" = "radeon" ]; then
export VK_ICD_FILENAMES="$VK_ICD_FILENAMES:$F11_APPIMAGE_TMP_DIR/radeon_icd.i686.json"
cat > $F11_APPIMAGE_TMP_DIR/radeon_icd.i686.json << EOF
{
"ICD": {
"api_version": "1.1.107",
"library_path": "$HERE/usr/lib32/libvulkan_radeon.so"
},
"file_format_version": "1.0.0"
}
EOF
else
echo "ERROR: Driver \"$driver\" unsupported yet!!!"
fi
done
IFS=$IFS_TMP
fi
#===================================================================
export PCSX2_PLUGIN_DIR="$HERE/usr/lib32/pcsx2"
export PCSX2_GAMEINDEX_DIR="$HERE/usr/share/pcsx2"
export PCSX2_DOC_DIR="$HERE/usr/share/doc/PCSX2"
export LOCPATH="$HERE/usr/share/locale"
#----------------------------------------
# Allow the AppImage to be symlinked to e.g., /usr/bin/glxinfo32 or /usr/bin/glxgears32
if [ -n "$APPIMAGE" ] ; then
BINARY_NAME=$(basename "$ARGV0")
else
BINARY_NAME=$(basename "$0")
fi
MAIN="$HERE/usr/bin/PCSX2"
if [ -n "$1" ] && [ -x "$HERE/bin/$1" ] ; then
MAIN="$HERE/bin/$1" ; shift
elif [ -n "$1" ] && [ -x "$HERE/usr/bin/$1" ] ; then
MAIN="$HERE/usr/bin/$1" ; shift
elif [ -x "$HERE/bin/$BINARY_NAME" ] ; then
MAIN="$HERE/bin/$BINARY_NAME"
elif [ -x "$HERE/usr/bin/$BINARY_NAME" ] ; then
MAIN="$HERE/usr/bin/$BINARY_NAME"
else
MAIN="$HERE/usr/bin/PCSX2"
fi
# Exec outside apps with inside environment (make the link name "ExternalExec")
if [ "$BINARY_NAME" = "ExternalExec" ] && [ -n "$1" ] && [ -x "$1" ]; then
MAIN="$1" ; shift
fi
#===================================================================
# Find and update PCSX2 paths:
if [ "$MAIN" = "$HERE/usr/bin/PCSX2" ]; then
if [ -d "$PCSX2_HOME" ]; then
for dir_i in $(find -L "$PCSX2_HOME" -name *.ini); do
HERE_SLASH=$(echo "$HERE" | sed 's,/,\\\/,g')
sed -i "s/=[^[]*\/usr\/lib/=$HERE_SLASH\/usr\/lib/g" "$dir_i"
done
fi
fi
#===================================================================
export __GL_THREADED_OPTIMIZATIONS=1
$MAIN32LDLIBRARY "$MAIN" "$@" | cat