最近なにかとM1 macを使うことが多いがhomebrewバージョンのwine-crossoverが古いので自分でビルドすることにした。
自分であれこれ模索しながら色々変更した末のビルドなので不要な手順が紛れ込んでいるかもしれないです。
前提#
MacOSは15.0.1、Crossoverは24.05。
homebrew(x86_64)、Xcode、Rosetta2をインストールしている。
基本的にx86_64環境でコマンドを実行します。
必要なパッケージ#
arch -x86_64 zsh
brew install bison ccache gcenx/wine/cx-llvm gettext mingw-w64 pkgconfig xquartz freetype gnutls molten-vk sdl2
ソース等の準備#
ソースコードのダウンロード
mkdir workdir
curl -o crossover-24.05.tar.gz https://media.codeweavers.com/pub/crossover/source/crossover-sources-24.05.tar.gz
curl -o distversion.h https://github.com/Gcenx/crossover-wine-ci/raw/refs/heads/cleanup/distversion.h
tar xf crossover-24.05.tar.gz
ソースにテコ入れ#
distversion.hが欠落しているので追加する
cp distversion.h sources/wine/include/distversion.h
distversion.hのincludeを修正
# sources/wine/programs/winedbg/resource.h
-#include "distversion.h"
+#include <distversion.h>
winemac.drvのビルドエラーの修正
以下を参照
ntdllのビルドエラーの修正
環境変数の定義#
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
export LDFLAGS="-Wl,-rpath,/opt/X11/lib"
export CC="clang"
export CXX="clang++"
export BISON="$(brew --prefix bison)/bin/bison"
export CC="$(brew --prefix cx-llvm)/bin/clang"
export CXX="${CC}++"
export CPATH="$(brew --prefix)/include"
export LIBRARY_PATH="$(brew --prefix)/lib"
export MACOSX_DEPLOYMENT_TARGET=15.0.1
export CROSSCFLAGS="-g -O2"
export CFLAGS="${CROSSCFLAGS} -Wno-deprecated-declarations -Wno-format"
export LDFLAGS="-Wl,-headerpad_max_install_names -Wl,-rpath,@loader_path/../../ -Wl,-rpath,$(brew --prefix)/lib -Wl,-rpath,/opt/local/lib -Wl,-rpath,/opt/X11/lib"
export ac_cv_lib_soname_MoltenVK="libMoltenVK.dylib"
export ac_cv_lib_soname_vulkan=""
ビルド#
mkdir build
../sources/wine/configure --prefix= \
-disable-winedbg --disable-tests --enable-win64 --enable-archs=i386,x86_64 --without-alsa --without-capi \
--with-coreaudio --with-cups --without-dbus --without-fontconfig --with-freetype \
--with-gettext --without-gettextpo --without-gphoto --with-gnutls --without-gssapi \
--without-gstreamer --without-inotify --without-krb5 --with-mingw --without-netapi --with-opencl --with-opengl \
--without-oss --with-pcap --with-pthread --without-pulse --without-sane \
--with-sdl --without-udev --with-unwind --without-usb --without-v4l2 --with-vulkan --without-wayland
make
インストール#
make install-lib DESTDIR="../install"
workdir/install
にバイナリを配置するようにしているが特に理由がないのならmake install-lib DESTDIR="/usr/local"
でもいいと思う。
余談#
brewでインストールしたcrossoverと違ってfinderからexeを実行できなくて不便なのでautomaterとか使ってなんとかするのがいいかもしれない。
VRChatを動かしたかったがEACのモジュールが読み込めないみたいなエラーで起動できなかった。