Debianのmingw32-ocamlをDarwin上でビルドしてみた
Debianにはyumというパッケージシステムがありまして、これがmingw32をターゲットにしたクロスコンパイラを取り揃えているのです。すごい。binutilsやgccは元々クロス開発ができるように作られていますので、各自でクロスコンパイラを野良ビルドするのも楽勝*1です、が、yumはmingw32-ocamlなんてパッケージまで持ってます。ocamlのビルドプロセスはクロスコンパイルなんて想定されてないわけで、これはすごい。
というわけで(最近ようやくLeopardからバージョンアップして環境再構築中の)Snow Leopard上でビルドしてみましたらなんかできたっぽいのでアップロードしてみます。yumのパッチをそのまま使って、yumがやっているであろうことを手動でちまちまコマンド打って、エラーが出たらちまちま直して、あとディレクトリ構成は好みに合わせて弄りました。
http://panathenaia.halfmoon.jp/alang/darwin/ のmingw32-ocaml.dmgに置いてますので試したい方はどうぞ。
今、ビルドできたやったー、でこれ書いてますので、本当に動くかろくに試してません。動かなかったら教えていただければ幸いです。
インストール先は/usr/localになります。
とりあえずi686-w64-mingw32-ocamloptを動かすのに最低限必要なものは↓だけみたいですので、/usr/localを汚したくない人は↓だけシンボリックリンクでもOKです。全部他に置きたいって人は同梱してあるパッチから更に書き換えてくださいませ。
/usr/local/ i686-w64-mingw32/ bin/ ocamlrun flexlink lib/ flexdll/ flexdll_mingw.o ocaml/ OCamlのランタイムライブラリ
特にDebianならではやDarwinならではって部分はありませんでしたので、ホストがPOSIXでさえあれば同じ手順でクロスコンパイラが作れそう。(最近流行りらしいARMターゲットのOCamlクロスコンパイラは全く見てません)
ところで、どうせwine入れるならWindows用のocamlopt.exeを動かしたほうがよっぽど楽ですねそうですね。