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