ChromeのJavascript Engine v8をCygwin上で動かしてみる。

ChromeJavascript Engine v8をCygwin上で動かすためのチャレンジ。
まずはv8のソースコードをチェックアウトしてみる。
ファイル数は1000越えと多そうだけど、UNITテストコードも多く含まれてるみたい。

$ svn co http://v8.googlecode.com/svn/trunk/ v8
....
Checked out revision 184.
$ find v8 | wc -l
1764

次にビルドと…。あれれ、ビルドはMakefile方式じゃないみない。
SCons: A software construction tool - SConsを使うとの事。まずこっちを導入しないと先に進めない…。

$ cd ~/
$ tar zxvf scons-src-1.0.0.tar.gz
$ cd scons-src-1.0.0
$ python bootstrap.py build/scons
$ python setup.py install

sconインストール完了!さて気を取り直してv8のビルド開始。

$ cd v8
$ scons 
scons: Reading SConscript files ...
A value for option os must be specified (linux, macos, win32).

あれ、v8(Google側)でコンパイルオプションを意識するつくりになっているんだ。
むむむ、macosの記述があるってことは予定通り開発進めてるんだ>MACChrome.
何はともあれ、"os=win32"を追加してコンパイルが続くことが確認できた。

$ scons os=win32
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o obj/release/third_party/jscre/pcre_compile.o -c -ansi -w -fno-strict-aliasing -O2 -fno-rtti -fno-exceptions -ansi -w -fno-strict-aliasing -O2 -DENABLE_LOGGING_AND_PROFILING -DSUPPORT_UTF8 -DNO_RECURSE -DSUPPORT_UCP src/third_party/js
cre/pcre_compile.cpp
..
g++ -o obj/release/disasm-ia32.o -c -ansi -pedantic -Wall -Werror -W -Wno-unused -parameter -fno-strict-aliasing -O2 -fno-rtti -fno-exceptions -ansi -pedantic -Wall -Werror -W -Wno-unused-parameter -fno-strict-aliasing -O2 -DENABLE_LOGGING_AND_PROFILING src/disasm-ia32.cc
src/disasm-ia32.cc: In member function `void disasm::DisassemblerIA32::AppendToBuffer(const char*, ...)':
src/disasm-ia32.cc:321: error: `vsnprintf' undeclared (first use this function)
src/disasm-ia32.cc:321: error: (Each undeclared identifier is reported only once for each function it appears in.)
src/disasm-ia32.cc: In member function `virtual const char* disasm::NameConverter::NameOfAddress(disasm::byte*) const':
src/disasm-ia32.cc:1083: error: `snprintf' undeclared (first use this function)
scons: *** [obj/release/disasm-ia32.o] Error 1
scons: building terminated because of errors.

ちょっと長引きそう。ん、前にもCygwin上で
こうなったらちょっと強引だけどhttp://www.ijs.si/software/snprintf/を利用してみる。
ん、これ以外にも大量に修正が必要かも。パッチにするかな。