メインコンテンツへスキップ
  1. Posts/

CrossOver Mac 24.05をビルドする

·2 分·
Mac Wine
目次

最近なにかと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のモジュールが読み込めないみたいなエラーで起動できなかった。

関連記事

ローカル内サービスの公開
·3 分
Network Linux network
VPNの導入
·2 分
Network Linux network
ルーター部分のセットアップ
·3 分
Network Linux network
ルーターの概要
·3 分
Network Linux network
自分のAndroid環境について語る
·4 分
Android Android
kvmでIntel ARCをパススルーする。
·6 分
kvm Linux kvm