ChromeのJavascript Engine v8をCygwin上で動かしてみる。
ChromeのJavascript 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の記述があるってことは予定通り開発進めてるんだ>MAC版Chrome.
何はともあれ、"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/を利用してみる。
ん、これ以外にも大量に修正が必要かも。パッチにするかな。