2008年03月11日
Tamarin Central の avmplus を VC++ 2005 でビルドする
最近、ビルドしてばっかりだけど、今度は avmplus をビルドしてみた。
基本、Tamarin Build Documentation - MDC に沿って。
Mercurial というバージョン管理ツールを使ってるらしいので、BinaryPackages - Mercurial から hg.exe を入手。
$ hg clone http://hg.mozilla.org/tamarin-central tamarin-central
ってやってしばらく待機。過去の履歴を全部落としてくるのが Mercurial の特徴なのかな。そこそこ時間がかかる。
zlib を手に入れといて、platform/win32/avmplus_8.sln を VC++2005 で開く。
ビルドしたら
error C2733: オーバーロードされた関数 '_interlockedbittestandset' の C リンケージの 2 回以上の宣言は許されません。 C:\Program Files\Microsoft Visual Studio 8\VC\include\intrin.h(944) : '_interlockedbittestandset' の宣言を確認してください。
というエラーが出たので検索してみたら、Windows SDK 6.0 の問題らしい(参考:Windows SDK for Windows Vistaとintrin.h - MSDN フォーラム)。
ってことで、avmplus.h の #include <intrin.h> をコメントアウトしたらうまくいった。Windows SDK 6.1 では解決してるのかも。
続いて、ErrorConstants.cpp で
warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。 error C2001: 定数が 2 行目に続いています。
が大量に出た。
各国語対応のメッセージを保持してるファイルらしい。そんなんどうでもいいので、
LangName languageNames[kLanguages] =
{
{ "en", LANG_en },
{ "de", LANG_de },
{ "es", LANG_es },
{ "fr", LANG_fr },
{ "it", LANG_it },
{ "ja", LANG_ja },
{ "ko", LANG_ko },
{ "zh-CN", LANG_zh_CN },
{ "zh-TW", LANG_zh_TW },
};
をシンプルに
LangName languageNames[kLanguages] =
{
{ "en", LANG_en },
};
と書き換えた。各国語のエラーメッセージを含む errorConstants も英語以外は削除しておいた。
こんだけいじったら、ビルドできましたよーっと。
(追記)