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いれようか。