SpiderMonkeyのビルド

検索で引っかかるページのビルド方法は、どれも難しく見えるけど、依存環境が少ない(libcレベル)ので正直簡単に作れる。開発環境があれば、以下のコマンドそのままコピーでいけるはず。

CVSからダウンロード

$ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login
password: anonymous
$ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/js/src
$ cd mozilla/js/src

Linuxの場合:

$ make -f Makefile.ref

js/src/Linux_All_DBG.OBJ/にjsができる。

最適化する場合

$ make -f Makefile.ref BUILD_OPT=1

こちらはjs/src/Linux_All_OPT.OBJ/にjsができる。

Cygwinの場合:

$ make -f Makefile.ref OS_ARCH=Linux
...途中で失敗する(.soを作ろうとして失敗かな)...
$ make -f Makefile.ref OS_ARCH=Linux js

Linux_All_DBG.OBJにjs.exeの実行ファイルができている。jsやjs.exeは静的リンクされているので単体でコピーしてよい。

VC++Toolkit 2003+Platform SDKでのビルド:

まず、VC++ Toolkit 2003では基本的にmsvcrt.libなどのライブラリファイルが足りない。

このなかでは、LIBCMT.libはToolkit配布中に存在しているので、「js.mak中の"/MD"をすべて"/MT"に置換する」(一応、/MDdも/MTdにする)。さらにデバッグ用のライブラリも無いので、ビルドではRelease版のみ構築できる。

ビルドはcygwin上で以下のとおり(このPlatform SDKはXPSP2時代のものだが、いまは2003SP1に統合されたようだ):

$ export PATH=/cygdrive/c/Program\ Files/Microsoft\ Visual\ C++\ Toolkit\ 2003/bin:"$PATH"
$ export INCLUDE=/Program\ Files/Microsoft\ Visual\ C++\ Toolkit\ 2003/include";"/Program\ Files/Microsoft\ Platform\ SDK\ for\ Windows\ XP\ SP2/Include
$ export LIB=/Program\ Files/Microsoft\ Visual\ C++\ Toolkit\ 2003/lib/";"/Program\ Files/Microsoft\ Platform\ SDK\ for\ Windows\ XP\ SP2/Lib/
$ nmake -f js.mak CFG="jsshell - Win32 Release"

(nmake含め、.NET1.1 SDKのVCに入ってたかも。その場合はjs.makはそのままで、環境変数LIBにmsvcrt.libのあるディレクトリを追加すればいいはず)

もしこれらをコマンドプロンプトで行うなら、環境変数INCLUDEとLIBをsetで設定すればいい。
mozilla/js/src/Releaseにjsshell.exe(やjs32.dll)があるので、コマンドプロンプト(もしくはダブルクリック起動)で利用可能である(jsshell.exeはcygwin環境では使えない)。

ちなみに、jsshell.exeでの終了はquit()を呼ぶ。

.NET 2.0 SDK+Platform SDKのビルド:

nmakeやmsvcrt.libなどもすべて入ってるので、警告がいっぱい出る(cl.exeのコンパイラオプションの違いと、strcpyなどが危ないからdeprecatedになってるのでコンパイラオプションつけろってやつ)けど問題なくDebug版もRelease版もビルド可能。

今回は、Windows Server 2003 SP1 Platform SDKを入れて作って見ました。

cygwin上(意地)で

$ export PATH=/cygdrive/c/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/bin:/cygdrive/c/Program\ Files/Microsoft\ Visual\ Studio\ 8/Common7/IDE:"$PATH"
$ export INCLUDE=/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/include/";"/Program\ Files/Microsoft\ Platform\ SDK/Include/
$ export LIB=/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/lib/";"/Program\ Files/Microsoft\ Platform\ SDK/Lib/
$ nmake -f js.mak CFG="jsshell - Win32 Release"

じつは上記環境変数さえセットされていれば、Linux同様にGNUmakeでもつくれてしまう。

$ make -f Makefile.ref

この場合、WINNT5.1_DBG.OBJにjs.exeとなって作成される(jsshell.exeと同じもの)。