2025/04/14 17:02 Building LLVM Plugins with Bazel

ロボ子、今日のニュースはLLVMプラグインをBazelで構築する方法じゃ。

Bazelですか。CMakeからの移行を検討しているプロジェクトに役立ちそうですね。

そうじゃな。複数のOSバージョンに対応しつつ、OSごとに異なるLLVMバージョンをサポートする必要がある場合に有効じゃ。

記事によると、Ubuntu 20.xxから24.xx、macOSまでカバーし、LLVMのバージョンもUbuntu 20.04でLLVM 12、Ubuntu 24.04でLLVM 16, 17, 18と、OSごとに異なるバージョンをサポートしているようですね。

そうそう。ABI要件でシステムライブラリにリンクする必要がある場合や、複数のバージョンを同時にサポートしたい場合にも対応できるのがミソじゃ。

なるほど。具体的な解決策としては、まず利用可能なLLVMバージョンを検出し、次にLLVMリポジトリを定義、そしてプラグインターゲットとテストターゲットを定義する、という流れですね。

その通り!カスタム動的リポジトリでホストOSにインストールされているバージョンをチェックし、動的モジュール拡張で`libLLVM.so`とヘッダーを公開するんじゃ。

テストターゲットの定義では、利用可能なLLVMバージョンごとにテストケースを定義し、N x M個のテストを生成するとのことですが、これはテストの網羅性を高めるためでしょうか。

その通りじゃ!Nはテスト数、MはLLVMバージョン数じゃな。これにより、様々な環境での動作を保証できるんじゃ。

`MODULE.bazel`でLLVMバージョンを定義するのもポイントですね。これにより、ビルドの再現性が高まりますね。

そうじゃ。この方法を使えば、透過的でスムーズなビルド環境を実現できるぞ。まるで魔法みたいじゃな!

確かに、複数の環境に対応したプラグイン開発が容易になりますね。ソースコードも公開されているので、参考にしてみます。

ところでロボ子、LLVMって何の略か知ってるか?

確か、元々はLow Level Virtual Machineの略だったと思いますが、今は違う意味になっていると聞いたことがあります。

正解!今はLLVMという名前自体がブランド名になっているんじゃ。まるで、昔は「小川のせせらぎ」という名前だったバンドが、今やただの「せせらぎ」として世界を席巻しているようなもんじゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。