Skip to content

Instantly share code, notes, and snippets.

@ntropy83
Forked from shmerl/dxvk_build.sh
Created August 8, 2019 14:03
Show Gist options
  • Save ntropy83/80b6b67b530d66e6b563e95e17abb344 to your computer and use it in GitHub Desktop.
Save ntropy83/80b6b67b530d66e6b563e95e17abb344 to your computer and use it in GitHub Desktop.
#!/bin/bash
base="${HOME}/build"
dxvk_src="${base}/dxvk/source"
dxvk_type=${dxvk_type:-"so"}
dxvk_bitness=${dxvk_bitness:-64}
dxvk_build="${base}/dxvk/build_${dxvk_type}_${dxvk_bitness}"
dxvk_branch=${dxvk_branch:-"master"}
dest_dir="${HOME}/mnt/vmshare/dxvk-${dxvk_type}-${dxvk_bitness}"
lib_dir="lib${dxvk_bitness}"
if [[ "$dxvk_bitness" != "64" ]] && [[ "$dxvk_bitness" != "32" ]]; then
echo "Invalid dxvk bitness ${dxvk_bitness} specified! Supported bitnesses: 64, 32"
exit 1
fi
if [[ "$dxvk_type" == "dll" ]]; then
cross_file="build-win${dxvk_bitness}.txt"
elif [[ "$dxvk_type" == "so" ]]; then
cross_file="build-wine${dxvk_bitness}.txt"
else
echo "Invalid dxvk type ${dxvk_type} specified! Supported types: so, dll"
exit 2
fi
function prepare() {
# Debian doesn't handle parallel installation of 64-bit and 32-bit wine development tools,
# therefore check is needed before every winelib build.
if [[ "$dxvk_type" == "so" ]]; then
dpkg --status wine${dxvk_bitness}-development-tools &>/dev/null
if (($? != 0)); then
sudo apt-get install wine${dxvk_bitness}-development-tools
if (($? != 0)); then
echo "Installation of wine${dxvk_bitness}-development-tools failed! Aborting."
exit 3
fi
fi
fi
}
function update_sources() {
mkdir -p $(dirname "$dxvk_src")
cd $(dirname "$dxvk_src")
git clone git://github.com/doitsujin/dxvk.git $(basename "$dxvk_src")
cd "$dxvk_src"
git reset --hard HEAD
git clean -df
git checkout master
git pull
git checkout ${dxvk_branch}
if (($? != 0)); then
echo "Invalid branch or tag ${dxvk_branch}! Aborting"
exit 4
fi
}
function build() {
mkdir -p "$dxvk_build"
rm -rfv ${dxvk_build}/*
cd "$dxvk_src"
meson --cross-file "$cross_file" --buildtype release --prefix "$dest_dir" --libdir "$lib_dir" --bindir "$lib_dir" "$dxvk_build"
cd "$dxvk_build"
ninja
if (($? != 0)); then
echo "Build failed!"
exit 5
fi
}
function publish() {
cd "$dxvk_build"
rm -rfv ${dest_dir}/*
ninja install
}
###################################################
update_sources
prepare
build
publish
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment