2014年03月06日
LLVM 3.5(git リポジトリ)をMS VC++でビルド
最新の LLVM 3.5(2014/3/6 の git リポジトリ)を MS Windows 環境でビルドしてみました。
・必要なツールのインストール
- VisualStudio 2012
今回はビルドに VC++ 2012 を使用します。
- CMake
ソリューションファイルを生成するために必要です。
http://www.cmake.org/files/v2.8/cmake-2.8.12.2-win32-x86.exe
全て default でインストールしました。
- Python
リグレッションテストを省略するならば不要そうですが、後述するエラーが出たので、インストールしておきます。
http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi
全て default でインストールしました。
・ビルド手順
(1) 空白を含まないパスに llvm と clang のソースコードを展開
今回は C:\work\llvm 以下に git で取得しました。
(llvm\tools 以下に clang のソースコードが必要な点に注意してください。)
C:\work\llvm\build のような書き込み可能なフォルダを適当に作っておきます。(後述するように、かなりのディスク容量が必要ですので、15GB 程度の空き容量を見ておいた方が良さそうです。少なくとも 9GB では足りませんでした。)
CMake GUI を起動し、
いろいろ選択できるようですが、今回は要件に「You will need Visual Studio 2012 or higher.」と書いてあったので
# Python をインストールしていない場合、以下のエラーが出ます。
# Please install Python or specify the PYTHON_EXECUTABLE CMake variable.
Subversion をインストールしていないので警告が出ますが、特に問題無さそう?なので、「Generate」ボタンを押して LLVM.sln が生成できました。
(3) LLVM.sln のビルド
sln ファイルを起動して VS2012 が立ち上がったら、「ソリューションのビルド」で C:\work\llvm\build\Debug\bin 以下にバイナリが生成されました。
ただし、VMWare の Windows 7 環境で 1 時間半ほどかかり、仮想ディスクの空き容量が 9GB ほどしか無かったので、途中でディスクフルで失敗してしまいました…が、一応 clang++ などはできていました。
リンカや標準ライブラリは準備してないので実行ファイルは作れませんが、とりあえず構文のチェックやシンボルの補完は動くようです。(本当は STL ライブラリの補完をしたかったのですが、当然ながらヘッダが無いので無理です。)
- VisualStudio 2012
今回はビルドに VC++ 2012 を使用します。
- CMake
ソリューションファイルを生成するために必要です。
http://www.cmake.org/files/v2.8/cmake-2.8.12.2-win32-x86.exe
全て default でインストールしました。
- Python
リグレッションテストを省略するならば不要そうですが、後述するエラーが出たので、インストールしておきます。
http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi
全て default でインストールしました。
・ビルド手順
(1) 空白を含まないパスに llvm と clang のソースコードを展開
今回は C:\work\llvm 以下に git で取得しました。
(llvm\tools 以下に clang のソースコードが必要な点に注意してください。)
c:\work\llvm>git clone http://llvm.org/git/llvm.git c:\work\llvm>cd llvm c:\work\llvm\llvm>git log commit 907423f7db7b9537cc3101398fc981f140fef348 Author: Owen Anderson(2) LLVM.sln ファイルの生成Date: Thu Mar 6 01:51:01 2014 +0000 ... c:\work\llvm\llvm>cd tools c:\work\llvm\llvm\tools>git clone http://llvm.org/git/clang.git c:\work\llvm\llvm\tools>cd clang c:\work\llvm\llvm\tools\clang>git log commit 70e2f181f57a3cfc22575524d90f83f408ff6967 Author: Rafael Espindola Date: Thu Mar 6 01:57:34 2014 +0000 ...
C:\work\llvm\build のような書き込み可能なフォルダを適当に作っておきます。(後述するように、かなりのディスク容量が必要ですので、15GB 程度の空き容量を見ておいた方が良さそうです。少なくとも 9GB では足りませんでした。)
CMake GUI を起動し、
Where is the source code: C:\work\llvm\llvm Where to build the binaries: C:\work\llvm\buildを指定して「Configure」ボタンを押します。
いろいろ選択できるようですが、今回は要件に「You will need Visual Studio 2012 or higher.」と書いてあったので
VisualStudio 11 Use default native compilersを選択して「Configure」ボタンを押しました。
# Python をインストールしていない場合、以下のエラーが出ます。
# Please install Python or specify the PYTHON_EXECUTABLE CMake variable.
Subversion をインストールしていないので警告が出ますが、特に問題無さそう?なので、「Generate」ボタンを押して LLVM.sln が生成できました。
(3) LLVM.sln のビルド
sln ファイルを起動して VS2012 が立ち上がったら、「ソリューションのビルド」で C:\work\llvm\build\Debug\bin 以下にバイナリが生成されました。
ただし、VMWare の Windows 7 環境で 1 時間半ほどかかり、仮想ディスクの空き容量が 9GB ほどしか無かったので、途中でディスクフルで失敗してしまいました…が、一応 clang++ などはできていました。
リンカや標準ライブラリは準備してないので実行ファイルは作れませんが、とりあえず構文のチェックやシンボルの補完は動くようです。(本当は STL ライブラリの補完をしたかったのですが、当然ながらヘッダが無いので無理です。)
>type test.cpp class C { public: int abc; int xyz; }; int f() { C c; c./* 10 行目カラム 7 でのシンボル補完結果 */ } >"clang++.exe" -v clang version 3.5.0 Target: i686-pc-win32 Thread model: posix >"clang++.exe" -cc1 -fsyntax-only -code-completion-at=test.cpp:10:7 test.cpp COMPLETION: abc : [#int#]abc COMPLETION: C : C:: COMPLETION: operator= : [#C ]operator=(<#const C >) COMPLETION: xyz : [#int#]xyz COMPLETION: ~C : [#void#]~C()