Last active
October 22, 2023 21:53
-
-
Save shmerl/3d49bee2ca04c1016f72366dca9438ce to your computer and use it in GitHub Desktop.
For dxvk and vkd3d-proton building on Debian
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Notes: | |
# | |
# For Debian build of dxvk and vkd3d-proton. | |
# | |
# 1. To build 64-bit and 32-bit dxvk: | |
# | |
# for bitness in 64 32; do project=dxvk bitness=$bitness dxvk_build.sh; done | |
# | |
# 2. To build 64-bit and 32-bit vkd3d-proton: | |
# | |
# for bitness in 64 32; do project=vkd3d bitness=$bitness dxvk_build.sh; done | |
# | |
# 3. To build both: | |
# | |
# for project in dxvk vkd3d; do for bitness in 64 32; do project=$project bitness=$bitness dxvk_build.sh; done; done | |
# | |
project=${project:-"dxvk"} # dxvk by default | |
dxvk_repo='https://github.com/doitsujin/dxvk.git' | |
vkd3d_repo='https://github.com/HansKristian-Work/vkd3d-proton.git' | |
dxvk_branch=${dxvk_branch:-"master"} | |
base_dir="${HOME}/build/${project}" | |
src_dir="${base_dir}/source" | |
bitness=${bitness:-64} | |
build_dir="${base_dir}/${project}/build_${bitness}" | |
dest_dir="${HOME}/mnt/vmshare/${project}" | |
lib_dir="lib${bitness}" | |
cpuarch=${cpuarch:-"znver4"} # Ryzen by default. Change to your arch or "native" accordingly. | |
cross_file="build-win${bitness}.txt" | |
verbose=${verbose:-false} | |
if [[ "$project" != "dxvk" ]] && [[ "$project" != "vkd3d" ]]; then | |
echo "Invalid project ${project} specified! Supported projects: dxvk, vkd3d" | |
exit 1 | |
fi | |
project_repo="${project}_repo" | |
project_repo="${!project_repo}" | |
if [[ "$bitness" != "64" ]] && [[ "$bitness" != "32" ]]; then | |
echo "Invalid bitness ${bitness} specified! Supported bitnesses: 64, 32" | |
exit 2 | |
fi | |
function prepare() { | |
sudo apt install meson mingw-w64 mingw-w64-tools glslang-tools | |
if (($? != 0)); then | |
echo "Installation of build tools failed! Aborting." | |
exit 3 | |
fi | |
} | |
function update_sources() { | |
mkdir -p $(dirname "$src_dir") | |
cd $(dirname "$src_dir") | |
git clone --recursive "$project_repo" $(basename "$src_dir") | |
cd "$src_dir" | |
git reset --hard HEAD | |
git clean -df | |
git checkout master | |
git pull --rebase --prune | |
git checkout ${dxvk_branch} | |
if (($? != 0)); then | |
echo "Invalid branch or tag ${dxvk_branch}! Aborting" | |
exit 4 | |
fi | |
git submodule update --rebase | |
} | |
function build() { | |
mkdir -p "$build_dir" | |
rm -rfv ${build_dir}/* | |
cd "$src_dir" | |
export CFLAGS="-march=${cpuarch}" | |
export CXXFLAGS="-march=${cpuarch}" | |
meson setup --strip --cross-file "$cross_file" --buildtype release --prefix "$dest_dir" --libdir "$lib_dir" --bindir "$lib_dir" "$build_dir" | |
cd "$build_dir" | |
if $verbose; then | |
ninja -v | |
else | |
ninja | |
fi | |
if (($? != 0)); then | |
echo "Build failed!" | |
exit 5 | |
fi | |
} | |
function publish() { | |
cd "$build_dir" | |
rm -rfv ${dest_dir}/${lib_dir} | |
ninja install | |
} | |
################################################### | |
update_sources | |
prepare | |
build | |
publish |
Removing d8vk since it's getting into upstream now and can't be built without conflicting with dxvk in the same installation.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Note, the script now builds dxvk, vkd3d-proton and d8vk.