2010年03月15日

Clang の test suite を実行する

Hacking on Clang > Testing > Testing using Visual Studio on Windows を参考に、test suite を動かしてみました。



まず、Python と GnuWin32 をインストールしました。(python-2.6.4.msiGetGnuWin32-0.6.3.exe を使用。)

python は msi をダブルクリックするだけで問題無いですが、GnuWin32 のインストールはけっこう面倒ですし、時間がかかります。
(インストールツールが GetGnuWin32-0.6.3.exe となってますが、どうもこれは 0.6.30 の間違いじゃないかと思います。)
まず、インストールツールの exe をダブルクリックして(私の場合は)c:\gnuwin32 以下に unzip や wget などのインストールツール群を展開した後、以下のようにバッチファイルでパッケージのダウンロードと展開を行います。

download.bat を編集して jaist のミラーにすると良いという情報もありましたが、どうも上手く行かなかったので、デフォルトのまま実行しました。
(以下、Windows XP の場合。Vista 以降は UAC を切ってから行わないと、何十回も許可ダイアログをクリックするはめになるそうです。)
C:\gnuwin32\GetGnuWin32>download.bat

C:\gnuwin32\GetGnuWin32>install.bat

(なぜかこの後 python.exe が実行できなくなってしまったので、再インストールしました… 因果はちょっと不明です。) PATH を通した後、テストを実行。しかし、上記サイトの記述通りにやると、
lit.py: lit.site.cfg:17: fatal: unable to find 'build_config' parameter, use '--
param=build_config=VALUE'
というエラーが出てしまい困りました。キーワードを頼りに検索した結果、--param=build_config=${CMAKE_CFG_INTDIR} のようにしている実行例があったので、試してみると、とりあえずテストは動き出しました。
C:\llvm\work>C:\llvm\work>PATH c:\gnuwin32\GetGnuWin32\gnuwin32\bin;c:\llvm\bin\Debug;%PATH%

C:\llvm\work>which grep
c:\gnuwin32\GetGnuWin32\gnuwin32\bin\grep.EXE

C:\llvm\work>c:\Python26\python.exe c:\llvm\utils\lit\lit.py --param=build_confi
g=${CMAKE_CFG_INTDIR} -sv --no-progress-bar c:\llvm\tools\clang\test
実行結果です。Unexpected Failures が 8 つも出てるのが気になりますが、そのうち 5 つは arm と darwin と出ているのであまり関係無さそう ? (また、もともと Windows 版には、既知の通らないテストが存在するそうです。)
********************

Testing Time: 63.89s
********************
Failing Tests (8):
    Clang :: CodeGen/arm-arguments.c
    Clang :: CodeGen/arm_asm_clobber.c
    Clang :: CodeGen/builtin-attributes.c
    Clang :: CodeGen/builtins-arm.c
    Clang :: CodeGen/darwin-string-literals.c
    Clang :: CodeGen/parameter-passing.c
    Clang :: Coverage/targets.c
    Clang :: Driver/darwin-iphone-defaults.m

  Expected Passes    : 2068
  Expected Failures  : 17
  Unexpected Failures: 8


トラックバックURL

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード