odcctools on OpenBSD 4.6
LLVMは無事通ったが、第一の問題はこれだ。
Linuxでコンパイルできるようにと、中にBSD系のヘッダを抱えているので、タチが悪い。
まずは、標準ではコンパイルに必要なautomake, autoconf がないので、pkg_addしておく。automakeを突っ込めば勝手に対応するautoconfが入るので、autoconfには触れなくていい。触れない。
パッケージを揃えたら、iphone-devを落としに行く。
$ sudo -s # cd /usr/local/src # svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev
落とせたら、ビルド用のディレクトリに潜って、configureする。
# mkdir -p build/odcctools # cd build/odcctools # ../../odcctools/configure --target=arm-apple-darwin --disable-ld64
ここまでは、LLVM同様マニュアル通りだが、ここからがダークネスな耐久ゲームが始まる。
とりあえず、主要な小細工をあげると、
_types.h
システムヘッダとダダ被り。Machだから仕方ない。
〜_t系型の多重定義を回避するために#ifマジックをいじる必要がある。
また、OpenBSD固有のヘッダでこけるので、Makefileで-D_LITTLE_ENDIANにする。
appleapiopt.h
Appleからappleapiopt.hを貰ってきてinclude/sys/に入れる。
システムには入れたらだめ。絶対。
ar/...
ENOSUP未対応。ar/Makefileで-DENOSUP=48 にする。どうせ使われないけど。
dylib_root.c
errnoがない。