Mac に Raia の開発環境を構築する
この記事では Mac に Raia の開発環境を構築する方法を解説します。
0. 検証した環境について
使用した Mac の環境は以下のとおりです。
- マシン: Mac mini
- チップ: Apple M1
- メモリ: 16GB
- OS: macOS Ventura バージョン 13.2
環境構築は Mac を工場出荷時の設定にリセットした状態から行っています。
工場出荷時の設定にリセット
検証環境では「すべてのコンテンツと設定を消去」を使って macOS を工場出荷時の設定にリセットしています。詳しくは Mac を消去して工場出荷時の設定にリセットするを参照してください。
ターミナルを起動する方法
開発環境を構築するのにターミナルを使用します。ターミナルは「アプリケーション」フォルダの「ユーティリティ」サブフォルダにあります。
Spotlight からアプリケーションを起動する
Mac では Spotlightからアプリケーションを起動することができます。
- Mac のメニューバーで Spotlight アイコン をクリックするか、⌘ + Space を押します。
- 検索フィールドにアプリケーションの名前を入力します。今回は「ターミナル」と入力します。
- Enter を押すか、検索結果のアプリケーション名をクリックして実行します。
作業ディレクトリについて
このドキュメントでは開発環境を構築するディレクトリに ~/
を使用するもの仮定として解説をします。
自分が普段使用しているディレクトリに置き換えて読み進めてください。
適切に環境構築するために
Raia は多数のサードパーティ製ライブラリを使用しています。その多くは活発に開発されているため、このドキュメントの解説が最新のものとは異なる可能性があることに留意してください。
1. Xcodeをインストールする
Mac の App Store から Xcode を入手します。
ダウンロードに時間がかかるので、完了するまで待ちます。
ライセンスに同意する
sudo xcodebuild -license
ターミナルに表示されるライセンスを読んだのち、同意できたら agree
と打ち込んでください。
2. コマンドラインツールをインストールする
ターミナルに以下のコマンドを入力して、コマンドラインツールをインストールします。
xcode-select --install
ポップアップウィンドウが表示され、デベロッパーツールをインストールするかどうかを尋ねられます。インストールを続行するための指示に従ってください。
詳細な手順
- 「インストール」をクリックします。
- 「同意する」をクリックします。
- ソフトウェアのダウンロードとインストールが開始されます(検証環境では10分程度かかりました)
- 「完了」をクリックします。
インストールの確認をする
以下のコマンドをターミナルに入力して、正しくインストールされたことを確認します。
git -v
このコマンドを実行すると、インストールされた git
のバージョン情報が表示されます。バージョン情報が表示されたら、コマンドラインツールのインストールに成功しています。
検証した環境での結果と補足
検証した環境では次のようなメッセージが表示されました。
git version 2.39.2 (Apple Git-143)
なお、工場出荷時の状態で git
等のコマンドを実行しようとすると、xcode-select --install
を実行したときと同様に、コマンドデベロッパーツールをインストールするためのポップアップが表示されます。
3. Homebrew をインストールする
Homebrew のウェブサイトのトップページにあるコマンドをターミナルで実行します。
検証環境で使用したコマンドは以下のとおりです。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
パスワードを求められるのでMacのパスワードを入力します。Enter を押して続行するとインストールが始まります。
Homebrew のパスを通す
インストールが完了したら、ターミナルに表示されている ==> Next steps
の項の ... Homebrew to your PATH:
に続くコマンドをターミナルで実行します。
例:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/UserName/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
注意点
/UserName/
の箇所を自分のユーザー名に置き換えて実行してください。
GCC-13 をインストールする
ompによるGPU処理で使用します。
brew install gcc-13
4. Ninjaをインストールする
次のコマンドを実行して、Ninjaをインストールします。
brew install ninja
5. Raia リポジトリをクローンする
cd
コマンドを使用して作業ディレクトリに移動します。
# 例:
cd ~/
リポジトリをクローンする
git clone
コマンドを使って、リポジトリをクローンします:
git clone https://github.com/dolphilia/raia-engine.git
6. ANGLE をビルドする
cd
コマンドを使用して作業ディレクトリに移動します。
# 例:
cd ~/raia/third_party
depot_tools をクローンする
git clone
コマンドを実行して depot_tools リポジトリをクローンします。
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
パスを通す
export
コマンドを使用して depot_tools のパスを通します。
# 例:
export PATH=~/$PWD/depot_tools:$PATH
ANGLE のソースコードを取得する
depot_tools の fetch
を使って ANGLE のソースコードを取得します。
mkdir angle
cd angle
fetch angle
ダウンロードに時間がかかるので、完了するまで待ちます。
ninja ファイルを生成する
depot_tools の gn gen
コマンドを使用して ninja ファイルを生成します。
gn gen out/Release
コンパイルする
depot_toolsの autoninja
を使ってコンパイルします。
autoninja -C out/Release
コンパイルには時間がかかるので、完了まで待ちます。
生成された共有ライブラリを確認する
以下の共有ライブラリが ~/raia/third_party/angle/out/Release
ディレクトリに生成されていることを確認してください。
libc++_chrome.dylib
libchrome_zlib.dylib
libEGL.dylib
libGLESv2.dylib
libthird_party_abseil-cpp_absl.dylib
共有ライブラリを Raia コピーする
先ほどの共有ライブラリを ~/raia/sdk/macos/arm64/lib
にコピーします。
ヘッダーファイルを Raia コピーする
~/raia/third_party/angle/include
内のすべてのファイルを ~/raia/sdk/macos/arm64/include
にコピーする。
7. V8 をビルドする
ディレクトリを作成して移動します。
mkdir v8
cd v8
クローンして移動する
depot_tools の fetch
を使用して、V8をクローンします。
fetch v8
V8 のクローンには時間がかかるので、完了まで待ちます。
クローンしたディレクトリを移動する
cd
コマンドでクローンしたディレクトリに移動します。
cd v8
V8 のバージョンを指定する
次のコマンドを実行して、正常な動作を確認しているバージョンに設定します。
git checkout refs/tags/11.7.115
gclient sync -D
V8 の ninja ファイルを生成する
python3
コマンドを使って ninja ファイルを生成します。
python3 tools/dev/v8gen.py arm64.release
ビルドの設定ファイルを編集する
vi
などのエディターを使用してビルドの設定ファイル args.gn
を編集します。
# 例
vi ~/raia/third_party/v8/v8/out.gn/arm64.release/args.gn
内容を次のように書き換えて保存してください。
dcheck_always_on = false
is_component_build = false
is_debug = false
target_cpu = "arm64"
use_custom_libcxx = false
v8_monolithic = true
v8_enable_sandbox = false
v8_use_external_startup_data = false
v8_enable_pointer_compression = false
v8_enable_31bit_smis_on_64bit_arch = false
メモ: WindowsでV8をビルドするときのargs.gnの設定
Windows向けの解説記事を書くまで、ここにメモを残しておきます。
is_debug = false
target_cpu = "x64"
treat_warnings_as_errors = false
is_component_build = false
v8_enable_i18n_support = false
symbol_level = 0
v8_use_external_startup_data = false
v8_static_library = true
v8_enable_i18n_support = false
v8_monolithic = true
use_custom_libcxx = false #おそらく削除
v8_enable_pointer_compression = false
V8 をコンパイルする
ninja
コマンドを使用して V8 をコンパイルします。
ninja -C out.gn/arm64.release v8_monolith
コンパイルには時間がかかるので、完了まで待ちます。
生成された静的ライブラリの確認
以下の静的ライブラリが ~/raia/third_party/v8/v8/out.gn/arm64.release/obj
ディレクトリに生成されているのを確認してください。
libv8_monolith.a
libv8_libbase.a
libv8_libplatform.a
libv8_monolith.a
は容量が大きいので注意してください。
静的ライブラリを Raia にコピーする
先ほど確認した静的ライブラリを ~/raia/sdk/macos/arm64/lib
にコピーします。
ヘッダーファイルのコピー
~/raia/third_party/v8/v8/include
にあるヘッダーファイルを ~/raia/sdk/macos/arm64/include
にコピーします。
8. GLFW をビルドする
GLFW をクローンする
git clone https://github.com/glfw/glfw.git
GLFW をビルドする
mkdir build
cd build
cmake ..
cmake --build .
mruby をセットアップする
git clone https://github.com/mruby/mruby.git
cd mruby
make
cd ../
cp mruby/build/host/lib/libmruby_core.a ../sdk/macos/arm64/lib
cp mruby/build/host/lib/libmruby.a ../sdk/macos/arm64/lib
rsync -av mruby/build/host/include/ ../sdk/macos/arm64/include/
libffi をセットアップする
autoconf
, automake
, texinfo
を使用するので brew
コマンドであらかじめインストールしておくこと。
# 必要なツールをインストールしておく
brew install autoconf
brew install automake
brew install texinfo
git clone https://github.com/libffi/libffi.git
cd libffi
./autogen.sh
./configure --prefix=/usr/local
make
# sudo make install
ライブラリは libffi/aarch64-apple-darwin23.1.0/.libs/
に生成される。