2
2

macOSでLLVM clang-19をソースコードからビルドする(2024年2月現在)

Last updated at Posted at 2024-02-24

こんにちは|こんばんは。カエルのアイコンで活動しております @kyamaz :frog: です。

はじめに

macOSでは、xcode-select --installすれば Xcode とともにコンパイラであるclangコマンドがインストールされます。Xcode はデフォルトではコマンドは/Library/Developer/CommandLineTools/usr/binフォルダに置かれます。
また、別の手段としては、homebrewを使ってbrew install llvmでインストールして/opt/homebrew/opt/llvm/binにPATHを通して使います。

本稿では、LLVMをソースコードからビルドして/opt/local/binにインストールする手順を書きます。参考にしたQiitaの2つのエントリのリンクを次に挙げしておきます。環境が違っておりますが、本稿ではほぼ同様の手順を紹介します。

本稿の環境

本稿のために使用した環境は以下となります。

  • macOS: Sonoma 14.2.1 (chip: Apple M1)
  • gcc/g++: Apple clang version 15.0.0 (clang-1500.1.0.2.5)
  • Homebrew 4.2.9
  • Ninja 1.11.1(homebrewにてインストール)
  • CMake 3.28.2(homebrewにてインストール)

作業ディレクトリは作業ユーザーのホームディレクトリの下の~/workで作業します。各環境に合わせて読み替えてください。

ビルドの手順

本家LLVMのサイトのGetting Started with the LLVM System ページの Stand-alone Buildsの項に従って進めます。

LLVMのソースコードを入手する

作業ディレクトリでgit cloneを実行してソースコードを入手します。

$ cd ~/work
$ git clone https://github.com/llvm/llvm-project.git
$ cd llvm-project

LLVMをビルドする

ビルド設定を行う

cmakeでビルドのための設定を行います。
-DLLVM_ENABLE_PROJECTSにclangとlldを指定して同時にビルドできるようにしましょう。

$ cmake -G Ninja -S llvm -B build \
-DLLVM_INSTALL_UTILS=ON -DCMAKE_INSTALL_PREFIX=/opt/local \
-DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='clang;lld'
cmakeのオプションの説明

-S : ソースディレクトリのパス。
-B : ビルド生成物の格納パス。指定したディレクトリは自動で生成されます。(本稿ではbuildを指定。)
-G : ビルド用のコード生成ツールを指定します。(本稿ではNinjaを指定。)
-D : キャッシュ・エントリーの情報(CMakeCache.txt)の定数定義を追加又は更新します。
  -DCMAKE_INSTALL_PREFIX=directory : ツール及びライブラリのインストール先をフルパスで指定します。(本稿では/opt/localを指定。)
  -DCMAKE_BUILD_TYPE=type : ビルドの種類を指定します。(本稿ではReleaseを指定。)

【公開後の追記】
  • lldb,libcを追加する場合は、次のように-DLLVM_ENABLE_RUNTIMES-DLLDB_USE_SYSTEM_DEBUGSERVERを指定する必要があります。

cmake -G Ninja -S llvm -B build \
-DLLVM_INSTALL_UTILS=ON -DCMAKE_INSTALL_PREFIX=/opt/local \
-DLLVM_ENABLE_PROJECTS="clang;lld;lldb;libc" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_RUNTIMES="libc;libunwind;libcxxabi;libcxx" \
-DLLDB_USE_SYSTEM_DEBUGSERVER=ON

ビルド&インストールする

cmakeコマンドでビルドしたのち、ninjaコマンドでインストールします。それぞれビルド生成物の格納パス(本稿では"build")を指定して実行します。

$ cmake --build build -j$(nproc)
:
(ビルドには多少時間がかかります)
:
$ ninja -C build install

コンパイル中に警告がでることもありますが、ほとんど無視してもよい(ignoring)警告だと思います。ただし、ビルドに問題がないかは都度判断が必要です。

コマンドを実行する

正しくインストールされていればコマンドが正常に実行されます。本稿ではいくつかのコマンドのバージョン表示を確認します。

$ /opt/local/bin/clang --version
clang version 19.0.0git (https://github.com/llvm/llvm-project.git XXX...)
Target: arm64-apple-darwin23.2.0
Thread model: posix
InstalledDir: /opt/local/bin
$ /opt/local/bin/ld64.lld --version
LLD 19.0.0
$ /opt/local/bin/llc --version
LLVM (http://llvm.org/):
  LLVM version 19.0.0git
  Optimized build.
  Default target: arm64-apple-darwin23.2.0
  Host CPU: apple-m1
:
:

おわりに

本稿では、/opt/local/binにソースコードから最新の LLVM clang-19 をインストールしました。「はじめに」に記載したとおり、macOSでは次のフォルダにもclangコマンドが存在します。

  • /Library/Developer/CommandLineTools/usr/bin
  • /opt/homebrew/opt/llvm/bin

インストールしたものと本稿でビルドしたものが混在することになりますが、PATHなどの環境変数を指定して、混乱しないように十分注意しましょう。
(●)(●) Happy Hacking!
/"" __""\

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2