Microsoft Visual Studio を使用した LLVM システムの入門

概要

Windows での LLVM へようこそ!このドキュメントでは、WSL、mingw、cygwin ではなく、Visual Studio を使用した Windows での LLVM のみを取り扱います。開始するには、まずいくつかの基本情報を知っておく必要があります。

LLVM を構成する多くの異なるプロジェクトがあります。最初の部分は LLVM スイートです。これには、LLVM を使用するために必要なすべてのツール、ライブラリ、ヘッダーファイルが含まれています。アセンブラ、逆アセンブラ、ビットコードアナライザ、ビットコードオプティマイザが含まれています。また、LLVM ツールと Clang フロントエンドをテストするために使用できる基本的な回帰テストも含まれています。

2番目の部分は、Clang フロントエンドです。このコンポーネントは、C、C ++、Objective C、および Objective C ++ コードを LLVM ビットコードにコンパイルします。Clang は通常、LLVM ライブラリを使用してビットコードを最適化し、マシンコードを出力します。LLVM は、既存の他のすべての Windows ツールチェーンと互換性のある COFF オブジェクトファイル形式を完全にサポートしています。

このドキュメントでは説明しない LLVM プロジェクトが他にもあります。

要件

LLVM システムの使用を開始する前に、以下に示す要件を確認してください。これにより、必要なハードウェアとソフトウェアを事前に知ることで、いくつかのトラブルを回避できます。

ハードウェア

Visual Studio 2019 を適切に実行できるシステムであれば問題ありません。git インデックスを含む LLVM ソースツリーは約 3 GB を消費します。オブジェクトファイル、ライブラリ、および実行可能ファイルは、リリースモードで約 5 GB、デバッグモードではさらに多くの容量を消費します。SSD ドライブと 16 GB 以上の RAM を推奨します。

ソフトウェア

最新のアップデートがインストールされた Visual Studio 2019 以降が必要です。Visual Studio Community Edition で十分です。

また、ビルドに使用するプロジェクトファイルを生成するため、CMake ビルドシステムも必要になります。CMake は Visual Studio 2019 にバンドルされているため、個別のインストールは必要ありません。CMake を別途インストールする場合は、Visual Studio 2022 では CMake バージョン 3.21 以降が必要です。

LLVM テストを実行する場合は、Python が必要になります。バージョン 3.8 以降は動作することが確認されています。Python は、Visual Studio 2019、Microsoft ストア、または Python Web サイトからインストールできます。インストールオプションを調整できるため、後者をお勧めします。

bash ツールを使用した Git for Windows も必要になります。Git for Windows は Visual Studio 2019 にもバンドルされています。

はじめに

LLVM をすばやく起動して実行するための簡単な説明を次に示します。これらの手順は Visual Studio 2019 と Python 3.9.6 でテストされました。

  1. Visual Studio をダウンロードしてインストールします。

  2. Visual Studio インストーラーの [ワークロード] タブで、[C++ によるデスクトップ開発] ワークロードを選択します。[個別のコンポーネント] タブで、[Git for Windows] を選択します。

  3. Visual Studio のインストールを完了します。

  4. 最新の Python 3 リリースをダウンロードしてインストールします。

  5. 最初のインストール画面で、[すべてのユーザーにランチャーをインストールする] と [Python を PATH に追加する] の両方を選択します。これにより、回帰テスト用の psutil をすべてのユーザーにインストールし、コマンドラインから Python を使用できるようになります。

  6. 2 番目のインストール画面で、(再度) [すべてのユーザーにインストールする] を選択し、lldb を開発する場合は、[デバッグバイナリをダウンロード] を選択すると便利です。

  7. Python のインストールを完了します。

  8. 「VS 2019 用開発者コマンドプロンプト」を管理者として実行します。このコマンド

    プロンプトは、Visual Studio とインストールされたツールへの正しいパスと環境変数を提供します。

  9. ターミナルウィンドウで、次のコマンドを入力します。

    c:
    cd \
    

c:\llvm 以外の場所に llvm ソースをインストールできますが、スペースを含むパス (例: c:\Documents and Settings\...) にはインストールしないでください。失敗します。

  1. Microsoft Debug Interface Access (DIA) DLL を登録します。

    regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\msdia140.dll"
    regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\amd64\msdia140.dll"
    

DIA ライブラリは、LLVM PDB テストと LLDB 開発に必要です。

  1. psutil をインストールし、LLVM ソースコードを取得します。

    pip install psutil
    git clone https://github.com/llvm/llvm-project.git llvm
    

git clone の代わりに、リリースページから圧縮されたソースディストリビューションをダウンロードできます。最後のリンクを選択します。Source code (zip) を選択し、Windows エクスプローラーに組み込まれている zip サポートまたはその他の解凍ツールを使用して、ダウンロードしたファイルを解凍します。

  1. 最後に、CMake を使用して LLVM を構成します。

    cmake -S llvm\llvm -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=X86 -Thost=x64
    exit
    

LLVM_ENABLE_PROJECTS は、ビルドする追加の LLVM プロジェクトを指定し、LLVM_TARGETS_TO_BUILD はコンパイラターゲットを選択します。LLVM_TARGETS_TO_BUILD が省略されている場合、デフォルトですべてのターゲットがビルドされるため、コンパイルが遅くなり、より多くのディスク容量が使用されます。LLVM ビルドの構成方法の詳細については、LLVM CMake ガイドを参照してください。

cmake コマンドラインツールは Visual Studio にバンドルされていますが、GUI はバンドルされていません。CMake をインストールして GUI を使用して CMake 変数を変更したり、上記のコマンドラインを変更したりできます。

  • CMake がインストールされたら、CMake GUI を起動し、LLVM を展開したディレクトリを選択するのが最も簡単な方法です。デフォルトオプションはすべて問題ありません。他に何も変更しなくても、本当に変更したいオプションの 1 つは、コンパイルが完了したらインストールするディレクトリを選択するための CMAKE_INSTALL_PREFIX 設定です。ただし、LLVM を使用するためにインストールは必須ではありません。もう 1 つの重要なオプションは、ビルドに含まれる LLVM ターゲットアーキテクチャを制御する LLVM_TARGETS_TO_BUILD です。

  • CMake は、すべてのビルドタイプのプロジェクトファイルを生成します。特定のビルドタイプを選択するには、VS IDE の構成マネージャーを使用するか、MSBuild を使用する場合は /property:Configuration コマンドラインオプションを使用します。

  • デフォルトでは、CMake によって生成された Visual Studio プロジェクトファイルは、32 ビットツールセットを使用します。64 ビットバージョンの Windows で開発していて、64 ビットツールセットを使用する場合は、Visual Studio ソリューションを生成するときに -Thost=x64 フラグを渡します。これには CMake 3.8.0 以降が必要です。

  1. Visual Studio を起動して構成を選択します。

プロジェクトファイルを作成したディレクトリには、llvm.sln ファイルがあります。それをダブルクリックして Visual Studio を開くだけです。デフォルトの Visual Studio 構成は Debug であり、遅く、ディスクに大量のデバッグ情報を生成します。今のところ、LLVM プロジェクトには、最も高速にビルドされる Release 構成または、Release よりも数倍大きい RelWithDebInfo を選択することをお勧めします。もう 1 つの手法は、LLVM のすべてをリリースモードでビルドし、実際にデバッグする必要がある特定のライブラリまたはソースファイルのみで、最適化を無効にしてデバッグ情報を有効にするコンパイラフラグを変更することです。

  1. Visual Studio で LLVM をテストします。

プロジェクト「check-all」をビルドするだけで、LLVM テストを実行できます。テスト結果は、VS 出力ウィンドウに表示されます。ビルドが成功すると、動作する LLVM 開発環境が検証されます。

予期しない失敗は表示されないはずですが、多くのサポートされていないテストと予期される失敗が表示されます。

114>Testing Time: 1124.66s
114>  Skipped          :    39
114>  Unsupported      : 21649
114>  Passed           : 51615
114>  Expectedly Failed:    93
========== Build: 114 succeeded, 0 failed, 321 up-to-date, 0 skipped ==========``

手動インストールに代わる方法

上記の手順の代わりに、インストール手順を簡素化するために、Chocolatey をパッケージマネージャーとして使用できます。Chocolatey の インストール後、管理者シェルで次のコマンドを実行して、必要なツールをインストールします。

choco install -y git cmake python3
pip3 install psutil

また、ビルドツールチェーン全体を含む Windows Dockerfile もあります。これは、ホストのインストールとは異なるツールチェーンでビルドをテストしたり、ビルドサーバーを作成するために使用できます。

次のステップ

  1. ドキュメントを読んでください。

  2. 真面目に、ドキュメントを読んでください。

  3. ドキュメントを読むことについて 2 回警告されたことを忘れないでください。

コマンドラインで LLVM をテストする:

LLVM テストは、ディレクトリを llvm ソースディレクトリに変更して実行することで実行できます。

c:\llvm> python ..\build\Release\bin\llvm-lit.py llvm\test

この例では、Pythonのインストール時にAdd Python to the PATHを選択した場合、PythonがPATH変数に含まれていることを前提としています。Pythonをインストールする前にコマンドウィンドウを開いていた場合は、更新されたPATHを取得するために、一度閉じてから再度開く必要があります。

特定のテストまたはテストディレクトリは、次のコマンドで実行できます。

c:\llvm> python ..\build\Release\bin\llvm-lit.py llvm\test\Transforms\Util

LLVMスイートのビルド:

  • 各プロジェクトは個別にビルドできますが、すべてをビルドするには、バッチビルドですべてを選択するのではなく(一部は設定プロジェクトとして使用されるため)、ALL_BUILDプロジェクトのみを選択してビルドし、すべてをビルドするか、INSTALLプロジェクトを選択してビルドします。後者はまずALL_BUILDプロジェクトをビルドし、次にCMakeを最初に設定したときにCMAKE_INSTALL_PREFIX設定で指定されたディレクトリにLLVMヘッダー、ライブラリ、およびその他の便利なものをインストールします。

  • Fibonacciプロジェクトは、JITを使用するサンプルプログラムです。プロジェクトのデバッグプロパティを変更して、数値のコマンドライン引数を指定するか、コマンドラインから実行してください。プログラムは対応するフィボナッチ値を表示します。