ラスタサポートがインストールできずに半泣きになった

ラスタをちょっと使ってやろうと思って、PostGIS-2.0.0SVN の rtpostgis.sql を実行してやったところエラーが出る。「log2() が無い」とのこと。

そっち違う

log2() か、ログを取るPostgreSQL側の関数だろうな、と思って、最新のPostgreSQLを取って、コンパイル、実行。でもあいかわらず log2() は無いらしい。
で、もうちょっと調べてたら、log2() は「底が2の対数」であることが判明。
完全に間違ってた orz

で、c99はどうすれば

log2() は c99 で追加されたらしい。ということは、手持ちのライブラリは c99 対応でないのだな、と。
c99対応にするには "gcc -std=c99" とかすると良いらしいぞ、とあったので環境変数 CFLAGS, CXXFLAGS に "-std=c99" を混ぜ込んだけれども、なんかうまくいかん。
もうちょっと調べると、FreeBSD のプロジェクトで c99 対応プロジェクトがあるらしい。バイナリに c99 なんてものもある。てことで環境変数CC を "c99" にしたった。そうすると、オプションが gcc のと違うらしくてビルド途中に「そんなオプション知らんわ」とか言われた。

あきらめた

http://groups.google.com/group/hugin-ptx/browse_thread/thread/a8d0b50dff973da2 に到達。
これは、とりあえず諦めて、かわりに log2() を底変換で作ったれ、というもの。なるー。
log2() を使ってるところを探すと、raster/rt_core/rt_api.c だけのようです。このファイルに次の行をアタマの方に追加すればOK。

#define log2(X) (log(X)/M_LN2)

M_LN2 は log(2) を示す定数で、math.h に入ってます。