Rosetta2を使わないApple Silicon MacのHomebrew環境構築(2020/01/08更新※gcc入った)

はじめに
-------
まだ出て間もないARM Mac向けにビルドされたプログラムはあまり多くないです。
かといってRosettaでIntel向けバイナリを動かしてると今後Appleアーキテクチャバイナリが出回り始めた時にどれがIntelバイナリなのかわからなくなって困りそう。
あとIntel版のdependsライブラリ入れててビルド通らねえとかありそう。

なのでRosetta2は使わずに環境を構築しました。
なお、MacPortsはかつてよく環境を破壊された記憶が鮮明なのでHomebrewを使います。


Command Line Toolsのインストール
------------------------------
```bash
% sudo xcodebuild -license
# Qキーで規約は飛ばせる。"agree"と入力

% xcode-select --install 
```

でインストールしてください。

Homebrewのインストール
--------------------
いつものコマンドをターミナルにコピペすると弾かれます。

```bash
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Homebrew is not (yet) supported on ARM processors!
Rerun the Homebrew installer under Rosetta 2.
If you really know what you are doing and are prepared for a very broken experience you can use another installation option for installing on ARM:
  https://docs.brew.sh/Installation
```

なので[公式ドキュメント](https://docs.brew.sh/Installation)の通り
/opt/homebrew にインストールしましょう(別に`/usr/local`に入れても問題ないと思うが)。

```bash
% cd /opt
% sudo mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
```

インストールが完了したら、`~/.zshrc`に以下を書き込んでパスを通しましょう。

```bash
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/sbin:$PATH"
export C_INCLUDE_PATH="/opt/homebrew/include:$C_INCLUDE_PATH"
export CPLUS_INCLUDE_PATH="/opt/homebrew/include:$CPLUS_INCLUDE_PATH"
```

Homebrewでパッケージをインストール
-----------------------------
まず注意点として、Homebrewでパッケージをインストールした際にApple Silicon向けにビルドされたバイナリが即インストールされることは少なかったです。
基本的にインストール時にビルドプロセスが走ると思って問題ないです。

GCC
---
~~インストール不可です
今(20210107)Homebrewで入手可能なバージョンは10.2.0です。
一方、gccをApple Siliconに対応させるには少なくともバージョン11が必要のようですが、このメジャーアップデートが来るのは**2021年中頃**のようです([HomebrewのGithub issuesより](https://github.com/Homebrew/brew/issues/7857))。
従ってC/C++のプログラミングをメインでやってる方は、、、M1チップ搭載のMBA/MBP購入は先行投資気味になりそうですね。
もちろんApple謹製のClang(gcc/g++コマンドにリンクされてる)はAppleアーキテクチャですし使えます。があまりC/C++erからは評判良くないらしいですよね。~~

###2021/01/08追記 インストール出来るようになったっぽい！
ついさっき`brew update`したところ、インストールできました。

```bash
 % brew install gcc
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
jpeg-xl
==> Updated Formulae
Updated 17 formulae.
==> Updated Casks
Updated 6 casks.
＃ (中略)
==> Installing dependencies for gcc: isl, mpfr and libmpc
==> Installing gcc dependency: isl
==> Pouring isl-0.23.arm64_big_sur.bottle.tar.gz
🍺  /opt/homebrew/Cellar/isl/0.23: 72 files, 5.0MB
==> Installing gcc dependency: mpfr
==> Pouring mpfr-4.1.0.arm64_big_sur.bottle.tar.gz
🍺  /opt/homebrew/Cellar/mpfr/4.1.0: 30 files, 5.2MB
==> Installing gcc dependency: libmpc
==> Pouring libmpc-1.2.1.arm64_big_sur.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libmpc/1.2.1: 13 files, 432.8KB
==> Installing gcc
==> Pouring gcc-10.2.0_2.arm64_big_sur.bottle.tar.gz
🍺  /opt/homebrew/Cellar/gcc/10.2.0_2: 1,367 files, 312.4MB

% gcc-10 --version
gcc-10 (Homebrew GCC 10.2.0_2) 10.2.1 20201220
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```

少なくともGCC11が来ないと対応できないって話はなんだったのか。。
まあこれでC/C++erも安心してApple Siliconで遊べますね！

Python3.9.x
-----------
インストール可能です。
ただしソースコードからビルドする形になります。
何回かインストールしなおしましたが、インストール時に自動でビルドが始まる時もあれば
`--build-from-source`　オプションを付けないと進めない時もありました。

OpenJDK(8,11,13,15,16EA,17EA)
------------
これはHomebrewではビルドに失敗しインストールできませんでした。
なので[Zuluのビルド](https://www.azul.com/downloads/zulu-community/?os=macos&architecture=arm-64-bit)を掴みましょう。

おわりに
--------
正直私は上記くらいしか使わないのでこれくらいしか書けませんが、
Apple Silicon搭載Macでインストールできるのか確認して欲しいパッケージなど
ありましたらコメントなどで書いてください。たまにやります。
あとこの記事も随時更新します。

`brew update`をしてるとわかりますが、毎日膨大な量のパッケージが追加・更新されてます。
Homebrew-coreのCommit数は平均800/dayくらいあり、パッケージのApple Silicon対応は確実に進んでいるとわかります。

余談ですが、Jailbreak端末向けのバイナリってApple Silicon Macで動いたりしないんですかね？いつか調査するかも。

Qemuをビルドして(面倒だった)ARM版Win10を動作させた話は別の記事に書きます。