mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-11-29 19:24:10 +01:00
7d7dbe2632
Use the configured libdir, so non-defaults paths don't break the script.
160 lines
3.2 KiB
Bash
Executable File
160 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
export WINEDEBUG=-all
|
|
|
|
dlls_dir=`dirname "$(readlink -f $0)"`
|
|
build_arch='@arch@'
|
|
winelib='@winelib@'
|
|
|
|
if [ $winelib == 'True' ]; then
|
|
dll_ext='dll.so'
|
|
# strip off the trailing bindir to get to the prefix, then append libdir
|
|
dlls_dir="${dlls_dir%/@bindir@}/@libdir@"
|
|
else
|
|
dll_ext='dll'
|
|
fi
|
|
|
|
if [ ! -f "$dlls_dir/d3d11.$dll_ext" ] || [ ! -f "$dlls_dir/dxgi.$dll_ext" ]; then
|
|
echo "d3d11.$dll_ext or dxgi.$dll_ext not found in $dlls_dir" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$wine" ]; then
|
|
if [ $build_arch == "x86_64" ]; then
|
|
wine="wine64"
|
|
else
|
|
wine="wine"
|
|
fi
|
|
fi
|
|
|
|
winever=`$wine --version | grep wine`
|
|
if [ -z "$winever" ]; then
|
|
echo "$wine:"' Not a wine executable. Check your $wine.' >&2
|
|
exit 1
|
|
fi
|
|
|
|
quiet=false
|
|
assume=
|
|
|
|
function ask {
|
|
echo "$1"
|
|
if [ -z "$assume" ]; then
|
|
read continue
|
|
else
|
|
continue=$assume
|
|
echo "$continue"
|
|
fi
|
|
}
|
|
|
|
POSITIONAL=()
|
|
while [[ $# -gt 0 ]]; do
|
|
|
|
case $1 in
|
|
-y)
|
|
assume='y'
|
|
shift
|
|
;;
|
|
-n)
|
|
assume='n'
|
|
shift
|
|
;;
|
|
-q|--quiet)
|
|
quiet=true
|
|
assume=${assume:-'y'}
|
|
shift
|
|
;;
|
|
*)
|
|
POSITIONAL+=("$1")
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
set -- "${POSITIONAL[@]}"
|
|
|
|
if [ "$quiet" = true ]; then
|
|
exec >/dev/null
|
|
fi
|
|
|
|
if [ -z "$WINEPREFIX" ]; then
|
|
ask "WINEPREFIX is not set, continue? (y/N)"
|
|
if [ "$continue" != "y" ] && [ "$continue" != "Y" ]; then
|
|
exit 1
|
|
fi
|
|
else
|
|
if ! [ -f "$WINEPREFIX/system.reg" ]; then
|
|
ask "WINEPREFIX does not point to an existing wine installation. Proceeding will create a new one, continue? (y/N)"
|
|
if [ "$continue" != "y" ] && [ "$continue" != "Y" ]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
unix_sys_path="$($wine winepath -u 'C:\windows\system32')"
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
|
|
ret=0
|
|
|
|
function removeOverride {
|
|
echo " [1/2] Removing override... "
|
|
$wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v $1 /d builtin /f > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed"
|
|
exit 1
|
|
fi
|
|
local dll="$unix_sys_path/$1.dll"
|
|
echo " [2/2] Removing link... "
|
|
if [ -h "$dll" ]; then
|
|
out=$(rm "$dll" 2>&1)
|
|
if [ $? -ne 0 ]; then
|
|
ret=2
|
|
echo -e "$out"
|
|
fi
|
|
else
|
|
echo -e "'$dll' is not a link or doesn't exist."
|
|
ret=2
|
|
fi
|
|
}
|
|
|
|
function createOverride {
|
|
echo " [1/2] Creating override... "
|
|
$wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v $1 /d native /f >/dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "Failed"
|
|
exit 1
|
|
fi
|
|
echo " [2/2] Creating link to $1.$dll_ext... "
|
|
ln -sf "$dlls_dir/$1.$dll_ext" "$unix_sys_path/$1.dll"
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "Failed"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
reset)
|
|
fun=removeOverride
|
|
;;
|
|
'')
|
|
fun=createOverride
|
|
;;
|
|
*)
|
|
echo "Unrecognized option: $1"
|
|
echo "Usage: $0 [reset] [-q|--quiet] [-y|-n]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo '[1/5] dxgi:'
|
|
$fun dxgi
|
|
echo '[2/5] d3d10:'
|
|
$fun d3d10
|
|
echo '[3/5] d3d10_1:'
|
|
$fun d3d10_1
|
|
echo '[4/5] d3d10core:'
|
|
$fun d3d10core
|
|
echo '[5/5] d3d11:'
|
|
$fun d3d11
|
|
exit $ret
|