M1 Macでのオープンソース版CrossOver 22.0.0のビルド

# CrossOver
[CrossOver](https://www.codeweavers.com/crossover)はWindowsバイナリをLinuxやmacOS上で動作させることができる商用ソフトです。GPLの[Wine](https://www.winehq.org/)をベースとしているのでソースコードが公開されています。

CrossOverは、通常のWineと異なり、llvm/clangベースの特別なコンパイラを使って64bit環境で32bitバイナリを実行するwine32on64により32bit Windowsバイナリと64bit Windowsバイナリの両方を動かすことができます。本家Wine 7.xでWindowsのWOW64と同様の仕組みで32bit Windowsバイナリを64bit環境で動作させる仕組みが実装されつつありますが、現時点(2022/9/10)はまだ完了していないので、現行のmacOSで32bit Windowsバイナリの実行するにはCrossOver版Wineが必要です。

CrossOverのビルドは手間がかかるのですが、GabLeRoux氏らにより[MacOS CrossOver FOSS built from the Cloud](https://github.com/GabLeRoux/macos-crossover-wine-cloud-builder)というツールが出ています。今回からは [手動でコマンドを実行する21.0.0以前の解説](
https://qiita.com/asfdrwe/items/926c18c40bc713d1031b)から変更してこちらを利用してビルドします。

実際にビルドしている手順は[build_local.sh](https://github.com/GabLeRoux/macos-crossover-wine-cloud-builder/blob/main/build_local.sh)で実行しているコマンドを参照してください。以前の手動の手順と同様に、brewで必要なアプリを入れて、環境変数を設定して、必要なパッチを当ててビルドしています。

今回は一度再インストールしてクリーンな状態にしたmacOS 12.5.1で動作確認しています。

## ビルド
~/Download/以下で作業します。

```
$ cd ~/Downloads
```

### x86_64用brewのインストール
Command line tools for XcodeとRosetta2上で動作するx86_64用homebrewをインストールして、Rosetta2環境下で必要な環境変数を設定して作業します。

```
$ xcode-select --install
$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ arch -x86_64 /bin/zsh
$ eval "$(/usr/local/bin/brew shellenv)"
```

(注: /usr/localが未使用の場合brewインストール時に
```
==> Checking for `sudo` access (which may request your password)...
Password:
```
と聞いてくるので、管理者パスワードを入れれば/usr/local以下に必要なフォルダが作成されます。

その後
```
Press RETURN/ENTER to continue or any other key to abort:
```
と出るのでEnterキーを入力してください。)

### MacOS CrossOver FOSS built from the Cloudの取得と実行
git経由でファイルを取得してフォルダに移動します。

```
$ git clone https://github.com/GabLeRoux/macos-crossover-wine-cloud-builder.git
$ cd macos-crossover-wine-cloud-builder/
```

2022/9/10時点では標準でCrossOver 21.2.0をビルドするようになっているので、22.0.0をビルドするように環境変数を設定します。

```
$ export CROSS_OVER_VERSION=22.0.0
```

build_local.shを実行してCrossOver-22.0.0をビルドします。ビルドにはかなり時間がかかります。

```
$ sh build_local.sh
```

ビルドが終わると`install/`以下の`wine-cx22.0.0/usr/local/`以下にビルドされたファイルが作られ、`upload/`以下にそれをまとめた`wine-cx22.0.0.tar.gz`が作られているはずです。

### CrossOver-22.0.0のインストールと実行
[WineskinServer](https://github.com/Gcenx/WineskinServer)で`wine-cx22.0.0.tar.gz`を利用して実行してもかまいませんが、手動で`/usr/local/opt/wine-cx22.0.0`以下にインストールして実行します。

```
$ cp -a install/wine-cx22.0.0/usr/local /usr/local/opt/wine-cx22.0.0
```

環境変数を設定します。
```
$ export PATH=/usr/local/opt/wine-cx22.0.0/bin:$PATH
$ export WINE=wine64
```

先にwine64を実行してWineのWOW64環境対応の~/.wine/を作成し、必要な設定を行ってください。
```
$ wine64 winecfg
```

winetricksで日本語フォントをインストールします。

```
$ winetricks fonts fakejapanese
```

Monoが入っていないので、必要ならば[Wine-Mono](https://dl.winehq.org/wine/wine-mono/)よりインストールしてください。

```
$ curl -o wine-mono-7.3.0-x86.msi https://dl.winehq.org/wine/wine-mono/7.3.0/wine-mono-7.3.0-x86.msi
$ wine64 msiexec /i wine-mono-7.3.0-x86.msi
```

###  動作確認したもの
#### 7zip
[7zip](https://sevenzip.osdn.jp/)は32bit版も64bit版も問題なく動作します。

#### PPSSPP
PSPエミュレータの[PPSSPP](https://www.ppsspp.org/)は64bit版はVulkanバックエンドとOpenGLバックエンドで動くようですが動かない場合もあるので不安定です。32bit版はOpenGLバックエンドで動くようです。PPSSPP自作ソフトストアにあるCave Storyで動作確認しました。

#### Steam
[Steam](https://store.steampowered.com/)も試してみました。

[Windows版のクライアント](https://cdn.akamai.steamstatic.com/client/installer/SteamSetup.exe)をダウンロードして実行したところ、ブラウザがうまく表示されないですが、メニューの表示からスモールモードにすればソフトのインストールと実行が可能です。

持っているゲームで試したところ、Cat Quest2はうまく動きましたが、イースオリジンとイース8は画面が表示されずうまく動かなかったです。

macでのSteamの実行に関しては[こちら](https://qiita.com/yaju/items/51af9434bb859453f82b)が参考になります。