tuedaの日記

2008-02-12

[] グラフィックハードウェアの学会

http://www.graphicshardware.org/

たまに見ると面白いpptがあったりして侮れない。

[] パストレーシング

f:id:tueda_wolf:20080212210554p:image

f:id:tueda_wolf:20080212104038p:image

3dchayaさんの所の姫路城です。読み込みはTriMesh2ライブラリ。

128レイ/ピクセルだとまだざらつきます。

パストレーシングとして必要なものはすべて実装したはず。

[][] llvm-2.2リリース

LLVMの2.2がリリースされています。

個人的に今回の目玉はCellのSPUバックエンドが正式にリリースに入ったことでしょうか。

(前からsvnからソース落としてコンパイルすれば使えてた)

[] llvmとllvm-gccのコンパイルのしかた

llvm

まずはllvm.

ソースを適当にダウンロードして解凍して./configureしてmake.

spuバックエンドを使いたいので明示的に--enable-targetsで指定する。

デフォルトデバッグビルドなので--enable-optimizedが必要。

$ ./configure --enable-optimized --enable-targets=x86,x86_64,powerpc,spu
$ make

バイナリはReleaseの下に作られる。

インストールする場合はmake install

$ make install

インストール先は/usr/local/binだが./configureのときに--prefix=で変えることもできる。

llvm-gcc

次はllvm-gcc.これはえらい苦労した。なぜかgcc3系とgcc40,gcc42でコンパイルするとエラーが出た。

FreeBSDgccがバージョン毎に違う名前でインストールされる)

しかたがないのでgcc43系を使った。正確にはgcc-4.3.0_20080201

なんかdefine__STD_MACROSを定義しろとか何とかエラーでたかも。

llvmとllvm-gccを解凍したディレクトリと平行にobjとbinを作ってそこでコンパイル(そうしろとREADMEに書いてあったから)

環境変数LLVMOBJDIRが必要。絶対パスで指定すればそれでもいい。

llvmの下のReleaseを指定する。

$ mkdir obj
$ mkdir install
$ cd obj
$ ../llvm-gcc-4.2/configure --prefix=`pwd`/../install --enable-llvm=`pwd`/../llvm/Release --enable-languages=c,c++ --enable-gcc=gcc43 --enable-gxx=g++43

\--enable-llvmはLLVMのバイナリのルートを指す(微妙な表現だ)。普通は ../llvm/Release

この下に bin example lib があるはず。

\--enable-gcc=gcc43と--enable-gxx=g++43はコンパイラとしてgcc4.3系列を指定している(つもり)。

以前gcc4.3系列でないとコンパイル出来ないことがあったので念のため。普通は不要。

$ alias gcc gcc43
$ alias g++ g++43

もやってしまったため、どちらが効いたのかよくわからない。

終わったらmake

$ make
$ make install

これで前に作ったinstallディレクトリにインストールされる。

注意:今FreeBSD7.0で試したらllvm-gccのコンパイルでエラーが出た。

$ cd llvm/Release
$ ln -s ../include include