M1 MacでのWine 6.0-rc5のビルド


Wine

WindowsアプリケーションをLinuxやmacOS上で動作させることができるWineの6.0-rc5をM1 MacのRosetta2環境でビルド&実行してみました。
macOS Catalina以降ではWine 6.0-rc5は64bitアプリケーションのみ対応となります。

32bitアプリケーション64bitアプリケーション両対応のCrossOver 20.0.2のビルドについては
https://qiita.com/asfdrwe/items/24cf3759edeb3fe56bc0
で解説しています。

ビルド環境構築

~/Download/以下で作業しています。

$ cd ~/Downloads

Command line tools for XcodeとRosetta2上で動作するx86_64用homebrewをインストールしてください。

参考
https://qiita.com/royroy/items/338362362de73a94fc0c
https://qiita.com/shira-shun/items/0f6213f4923cb5544367

homebrewでbison、flex、mingw-w64、pkgconfig、freetypeをインストールし、bisonやflexにパスを通し、LDFLAGS等を設定します(XQuartzは不要です)。

$ brew install bison flex mingw-w64 pkgconfig freetype
$ export PATH="/usr/local/opt/flex/bin:/usr/local/opt/bison/bin:$PATH"
$ export LDFLAGS="-L/usr/local/opt/freetype/lib/ -L/usr/local/opt/flex/lib -L/usr/local/opt/bison/lib"
$ export CPPFLAGS="-I/usr/local/opt/flex/include"

Wine 6.0-rc5のダウンロードと展開

https://dl.winehq.org/wine/source/6.0/wine-6.0-rc5.tar.xz
をダウンロードして展開してください。

$ tar xvfJ wine-6.0-rc5.tar.xz
$ cd wine-6.0-rc5

Wineのビルド

そのままビルドするとwineを実行しても

display: macdrv_init_display_devices No GPUs detected

とメッセージが出てウィンドウが表示されないようなので、CrossOver-20.0.2からdlls/winemac.drv/cocoa_display.mを置き換えた上で、必要なinclude/wine/hostaddrspace_enter.hを追加したパッチを当てます。

https://pastebin.com/raw/Ruxp6FA3
をwinemac.drv.patchとして保存して

$ patch -p1 < ../winemac.drv.patch

ビルド

とりあえず、/usr/local/wine-6.0-rc5以下にインストールするようにビルドします。

$ ./configure --prefix=/usr/local/wine-6.0-rc5 --enable-win64
$ make

インストール

$ sudo mkdir /usr/local/wine-6.0-rc5
$ sudo chown "$USER":admin /usr/local/wine-6.0-rc5
$ make install
$ cd ..

Wineの実行

wine64にパスを通して実行します。

$ export PATH="/usr/local/wine-6.0-rc5/bin:$PATH"
$ wine64 winecfg

winetricksは環境変数WINEをwine64になるように設定してください。

$ export WINE=/usr/local/wine-6.0-rc5/bin/wine64
$ ./winetricks

7zipのx64版が動作するのを確認していますが、インストーラーがx86のようなので、msi版インストーラをダウンロードして、msiexecコマンドでインストールしてください。

$ wine64 msiexec /i 7z1900-x64.msi

参考サイト

https://wiki.winehq.org/MacOS/Building
https://github.com/Gcenx/macOS_Wine_builds/issues/15