FreeBSD / omake -P raises Fatal error: exception Invalid_argument("FAM not enabled")

FreeBSDは最後の理想郷に思えた。
なぜか、~/*.coreがいっぱいある。

$ sudo pkg_add -r omake
...
$ omake -P
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.04 sec)
Fatal error: exception Invalid_argument("FAM not enabled")

-Pの無いomakeなんて。

$ cd /usr/ports/devel/omake
$ sudo make install clean
...
--- Checking for FAM... (NOT found)
...
$ ls -al /usr/local/lib/libfam*
-rw-r--r--  1 root  wheel  137820  7 31 17:28 /usr/local/lib/libfam.a
-rwxr-xr-x  1 root  wheel     805  7 31 17:28 /usr/local/lib/libfam.la
lrwxr-xr-x  1 root  wheel      11  7 31 17:28 /usr/local/lib/libfam.so -> libfam.so.0
-rwxr-xr-x  1 root  wheel   91159  7 31 17:28 /usr/local/lib/libfam.so.0

やはりomake -Pはできない。

どうやら、/usr/ports/devel/omake/work/omake-0.9.8.5/lib/configure/fam.omで何やらlibfamの存在チェックをしているが、そこでlibfamが存在しないと判定されてる気配。

/etc/make.confに、CFLAGS=-I/usr/local/include, LDFLAGS=-L/usr/local/libまたは、sudo CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make install clean


しょうがないから、ハードコード。gamin版。fam版は-DHAVE_FAMNOEXISTSを削除

$ cat ./work/omake-0.9.8.5/lib/configure/fam.om
open configure/Configure

#
# Figure out if FAM is installed
#
.STATIC:
    FAM_AVAILABLE = true
    FAM_CFLAGS = -DFAM_ENABLED -DHAVE_FAMNOEXISTS
    FAM_CLIBS = -lfam
# これ以降の設定は適用させない
# コメントアウトなり条件文を調整するなり適宜

これだけだと、/usr/bin/ld: cannot find -lfamとか素敵なエラーを吐く。
FreeBSD的にそれが正しいのか悪いのか判断しかねるので、ld.so.confをいじったりはせず、ocamlopt.optからccを呼び出す時のCFLAGSを適当かつ強引に設定する。

$ sudo vim ./work/omake-0.9.8.5/lib/build/OCaml.om
-public.OCAMLFLAGS    = -warn-error A
+public.OCAMLFLAGS    = -warn-error A -ccopt -L/usr/local/lib

さらにfam.hがネーヨとかおっしゃりやがりますので、ln -s /usr/local/include/fam.h /usr/include/fam.h
本当は-I/usr/local/includeを指定すればいいんだけど、OCAMLFLAGSに指定しても、ccまで伝播しなかった。
ヘッダなら後で消しても平気ダシネ
厳かにsudo make install clean
fam.hのリンクを作っていたなら、rm /usr/include/fam.h

$ omake -P
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.06 sec)
- scan sources/lib/core/config scan-cxx-config.cpp
+ g++ -pipe -std=c++0x -Wall -O0 -g -D_DEBUG -rdynamic -fPIC -fPIE -Wl,--export-dynamic,-rpath,$ORIGIN -I. -I/usr/local/include/ClearSilver -I/usr/local/include/python2.6 -I/usr/local/include -MM config.cpp
cc1plus: error: unrecognized command line option "-std=c++0x"
...

・・・さて、gcc45いれようか。