概要 ==== ユーザが % ./configure --enable-canna と指定してきたら、CANNAを#defineして、cannaライブラリ/ヘッダのありかを 探す。 検索結果は、意味的には以下のようなかんじでMakefileで使う変数に代入される: CFLAGS+= -I/usr/local/canna/include LDFLAGS+= -L/usr/local/canna/lib LIBS+= -lcanna cannaライブラリ/ヘッダの位置は、とりあえずFreeBSDとBSD/OS 2.1についてだけ 知識として持っている。 - FreeBSDの場合、portsでcannaがインストールされる場所を探す - BSD/OS 2.1の場合、cannaが標準添付だったのでその場所を探す - 知らないOSの場合は/usr/local/cannaを探す。 コード例 ======== #ifdef CANNA #include #endif /*CANNA*/ --- config.h.inに書くこと(AC_CONFIG_HEADER(config.h)を使う場合) /* Define if you need Canna support. */ #undef CANNA --- configure.inに書くこと(aclocal.m4に混ぜるのも可) AC_CANONICAL_HOST dnl If the user wants canna support. AC_MSG_CHECKING(if --enable-canna option specified) AC_ARG_ENABLE(canna, [ --enable-canna[=DIR] Build a canna version.], [vi_cv_canna="yes"; vi_cannapath=$enableval], [vi_cv_canna="no"]) AC_MSG_RESULT($vi_cv_canna) if test "$vi_cv_canna" = "yes"; then if test "$vi_cv_multibyte" = "no"; then echo "Fatal error: --enable-canna needs --enable-multibyte." exit 1 fi dnl Some operating system include canna libraries by default. dnl Use that pathname by default. dnl for freebsd2.*, order DOES matter. don't bother. if test "$vi_cannapath" = "yes"; then case "$host_os" in bsdi2.1) vi_cannapath="/usr/contrib/canna";; freebsd2.2*|freebsd3*) vi_cannapath="/usr/local";; freebsd2*) vi_cannapath="/usr/local/canna";; *) vi_cannapath="/usr/local/canna";; esac fi if test "$vi_cannapath" != "yes"; then CFLAGS="-I$vi_cannapath/include $CFLAGS" LDFLAGS="-L$vi_cannapath/lib $LDFLAGS" fi dnl we use AC_TRY_COMPILE not AC_CHECK_HEADER, to avoid unnecessery dnl use of CPPFLAGS. (why?) AC_MSG_CHECKING(for canna/jrkanji.h) AC_CACHE_VAL(vi_cv_cannahdrcheck, [dnl AC_TRY_COMPILE([#include ], jrKanjiStatus ks;, [vi_cv_cannahdrcheck="yes"], [vi_cv_cannahdrcheck="no"])]) AC_MSG_RESULT($vi_cv_cannahdrcheck) if test "$vi_cv_cannahdrcheck" = "no"; then echo -n "Fatal error: no canna header in suggested path" if test "$vi_cannapath" != "yes"; then echo ", $vi_cannapath/include." else echo "." fi exit 1 fi AC_CHECK_LIB(canna, jrKanjiControl, [vi_cv_cannalibcheck="yes"], [vi_cv_cannalibcheck="no"]) if test "$vi_cv_cannalibcheck" = "no"; then echo "Fatal error: no canna library in suggested path" if test "$vi_cannapath" != "yes"; then echo ", $vi_cannapath/lib." else echo "." fi exit 1 fi LIBS="-lcanna $LIBS" AC_DEFINE(CANNA) fi