壊れたメガネ

ホッチキスの達人の意識の高いブログ。

php-llvm ビルドメモ

llvm
http://pecl.php.net/package/llvm

Ubuntu 13.04 64bit でビルド。

LLVM-3.1

https://github.com/preillyme/llvm/blob/master/INSTALL に従い LLVM-3.1 を準備。
途中、 bits/c++config.h' file not found というメッセージと共にコンパイルエラーにあったが、
13.04 appears to have a special way with include-paths にある通り /usr/include/x86_64-linux-gnu/c++/4.7 を環境変数 $CPLUS_INCLUDE_PATH に追加してとりあえずビルドを通す。

$ CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu/c++/4.7
$ export CPLUS_INCLUDE_PATH

というか、このディレクトリは標準インクルードパスに入ってないの?このへんは謎。

php-5.4 と llvm 拡張

php-5.3 で phpize && ./configure && make とやってみたが、この拡張が使用している Zend API が5.3のそれと異なっていて make が通らなかったので、 5.4 に切り替えた。
あとから気づいたけど、
https://github.com/preillyme/llvm/commit/99bdfa2944c9ca986d3604d7687231b2e7888a01
とあるように、始めから 5.4 でよかったんや。コミットログちゃんと見るべし。
リンクの際、 undefined reference to dladdr なるリンクエラーが。
Why am I getting “undefined reference to `dladdr'” even with -ldl for this simple program?
にしたがって config.m4 を修正で make は通った。

しかし、 https://github.com/preillyme/llvm/blob/master/INSTALL の手順4

$ php -dextension=phpllvm.so your_script.php

で LLVM ERROR: JIT does not support inline asm! なるエラーが出る。
そして今やる気なくなったので、このメモを残して FPS やることにした。