萌えハッカーニュースリーダー

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

出典: https://lowlevelbits.org/building-llvm-plugins-with-bazel/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

正解!今はLLVMという名前自体がブランド名になっているんじゃ。まるで、昔は「小川のせせらぎ」という名前だったバンドが、今やただの「せせらぎ」として世界を席巻しているようなもんじゃな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search