Build Valve Proton on macOS
Recently Valve has released Proton on their Steam for Linux client, a Wine modification with DirectX 11/12 to Vulkan support, enabling running 3A games like NieR: Automata on Linux directly without performance impacts.
Wine has been ported to macOS too, but it’s has a few limitations like setting locale doesn’t always working, and x64 support is broken forever, making Wine not that useful on macOS platforms.
Although Proton has no plan for macOS users at the moment, their repo has an introduction for building Proton on macOS, so let’s see how far it goes.
First, let’s install Xcode from App Store, as it’s needed for compiling complex apps.
Then, install command line tools via HomeBrew:
brew install wget mingw-w64 cmake nasm libtool automake meson glslang
Now we clone the repo and init the submodules:
git clone https://github.com/ValveSoftware/Proton
cd Proton
git submodule update --init
The glslang
in the repo root is for Linux and will not run on macOS, so we remove it and use the global one installed by HomeBrew:
rm -rf glslang
In the build process, meson install
is used to move Windows DLLs to the right places, but when meson discovers that we are on macOS, the DLLs are moved using install_name_tool
, which only works will macOS *.dylibs
and resulting in failures. We have to fix it by replacing the last line with a pass
:
# save and exit using :wq! as it's readonly
vi /usr/local/lib/python3.7/site-packages/mesonbuild/scripts/depfixer.py
Now everything is done, we can run ./build_proton.sh
and take a coffee. When it finishes, the binaries are stored in /dist/
, to run a Windows executable with it, using:
STEAM_COMPAT_DATA_PATH=%HOME/.proton/ ./proton run THE/PATH/TO/EXE
Currently I don’t have any Windows 3A games to test, if you have read this article and managed to get it working, please share your experience with me and I am happy to learn about it.