Windows XP+VC++2005環境下でSecondlife Viewer 1.7.2.0 をコンパイルするためのメモ

個人的には何の面白さも見出せず「早く潰れな
なんでもないよ。
で、Secondlife Viewerがオプソなわけだけど、わけあってそいつを解析して改造することになったわけ。とりあえずコンパイルからなってことで、そのメモ。

2007.08.09追記:バージョンアップするごとにちょっとずつ手順が変わったりするので、Compiling the viewer (MSVS2005) - Second Life Wiki見てやったほうがいいよ。注意すべきはllimage2coj_vc8.projがないのでllimage2coj.projをかわりに使い、構成マネージャで構成を設定しとくこと。それ以外は全部書いてある


情報源

MS関係の依存ライブラリを落としてくる

platform sdkのほうはVC++にパスが設定されなかったので手動で設定。ツール→オプション→プロジェクトおよびソリューション→VC++ディレクトリ のライブラリおよびincludeのとこを設定。

Cygwinを入れる

http://www.cygwin.com/
flexとかbisonを使うのに必要。リンデンスクリプトの処理系をコンパイルするために使う。
なんかC:\cygwinきめうちになってるので、別の場所にインストールするときはあとでプロジェク設定を変更する必要がある。
インストール時にflex,bison,patchutilsを選択しておく。

ソースを落としてくる

https://wiki.secondlife.com/wiki/Source_archive
とりあえず最新版をおとしてくればいいんじゃないかな。Sourceのwindowsとartwork、Libsのwindowsを落として展開。
ソースの置き場のパスは、長すぎたら駄目だとかスペースや非ASCII文字が駄目だとかおきまりの制限がある。

依存ライブラリ落としてくる

あとoptionalでquick timeのライブラリとか。面倒なので入れない。

libpng

どこにも言及がないんだけど、libpngのヘッダファイルが同梱されてない(ライブラリはついてる)。
libpngおとしてきて、png.hをpng12フォルダ以下に配置(これちょっとやばいかもしれない。pngconf.hの設定内容とコンパイル済みpng12.libが不整合起こしそうで)

VC++2005でプロジェクトを開く

展開先/indra/indra_complete/indra_complete_vc8.slnを開く。変換ウィザードが出たので変換。llimagej2coj_vc8.vcprojがないって文句言われる。llimagej2coj.vcprojはあるのであとでソリューションに追加する。そのままだとソリューションの構成でReleaseForDownloadのときの構成がReleaseNoOptになってるのでReleaseに変更。

コンパイル前にひとしごと

リンデンじゃVC++2003で開発してるらしくて、2005でコンパイルするためにはちょっとした作業が必要なんだってさ。
まず、testプロジェクトはうまく動かないらしいのでunload。
あと

If you do not plan to create a full download build, you can exclude the win_crash_logger and win_updater from newview's project dependencies and unload them also. But be careful with unloading these projects without removing them from the dependencies, because I have seen VS2005 act highly erratic while linking then project when I tried this.

らしいんだけどfull download buildってなんだ。とりあえず保留。
qucktimeライブラリを使いたくないのでllcommon/llpreprocessor.hのLL_QUICKTIME_ENABLEDを0に。構成“ReleaseForDownload”および“ReleaseNoOpt”において、newviewのプロジェクトプロパティ→リンカ→追加の依存ファイルからqtmlclient.libを除去。

cygwinのインストール場所がc:\cygwinじゃないときはプロジェクトlscript_compile_fbの設定を変更する必要がある。GUIでやる方法が分からなかったので、いったんソリューションを閉じてlscript_compile_fb_vc8.vcproj内のc:\cygwinという文字列を探して置換。

ぱいそん

07.07.20追記:1.8.0以降をコンパイルする場合にはPythonを入れる必要がある。
http://www.activestate.com/Products/ActivePython/?mp=1

“警告をエラーとして扱う”オプションが有効だとコンパイル失敗するプロジェクトがある。newviewとlscript_compileあたり解除しとく。

コンパイルする

newviewをスタートアッププロジェクトに設定しとく
構成“ReleaseNoOpt”がデバグ用、“ReleaesForDownload”がリリース用、らしい
で、とりあえずビルド開始。凄く時間が掛かる!

こんぱいるできたよ

ankhsvnでmyリポジトリにつっこんでとりあえず完了。