Hatena::Groupocaml-nagoya

yoshihiro503の関数的日記

2012-05-23 (Wed)

omakeをocaml-3.12.1でビルドする

| 16:59 | omakeをocaml-3.12.1でビルドする - yoshihiro503の関数的日記 を含むブックマーク はてなブックマーク - omakeをocaml-3.12.1でビルドする - yoshihiro503の関数的日記

ocamlを使っている人はomakeをソースからビルドしてインストールすることができる。インストール方法は次の3ステップだ。

 $ make bootstrap
 $ make all
 # make install

しかし、ocaml-3.12.1 を使っている人がomake-0.9.8.6-0.rc1とかをソースからインストールしようとしたら、make all の段階で次のようなエラーが出る。

+ ocamlopt.opt -warn-error A -w Aez -I . -c lm_debug.ml
File "lm_debug.ml", line 176, characters 6-45:
Warning 9: the following labels are not bound in this record pattern:
info_info
Either bind these labels explicitly or add `; _' to the pattern.
File "lm_debug.ml", line 192, characters 13-53:                ] 00830 / 01203
Warning 9: the following labels are not bound in this record pattern:
info_info
Either bind these labels explicitly or add `; _' to the pattern.
File "lm_debug.ml", line 230, characters 16-61:
Warning 9: the following labels are not bound in this record pattern:
info_name
Either bind these labels explicitly or add `; _' to the pattern.
File "lm_debug.ml", line 1, characters 0-1:                                    
Error: Error-enabled warnings (3 occurrences)
*** omake: 834/1203 targets are up to date                                     
*** omake: failed (20.28 sec, 218/218 scans, 165/188 rules, 454/1637 digests)
*** omake: targets were not rebuilt because of errors:                         
   src/libmojave/lm_debug.cmx
   src/libmojave/lm_debug.o

この原因はomakeのビルドにおいてほとんどの警告をコンパイルエラーにしている設定と、OCamlがversion-3.12になったときに微妙にrecordに関する警告をキツくしたことである。

この問題はプロジェクトルートにあるOMakefileを編集してOCAMLFLAGSの設定を変えれば、解決する。

OCAMLFLAGS[] += -w Ae$(if $(OCAML_ACCEPTS_Z_WARNING), z)

↓ この行をつぎのように書き換える

OCAMLFLAGS[] += -w ae$(if $(OCAML_ACCEPTS_Z_WARNING), z)