[Freewnn-users 83] Re: configure.in (--with-wnn-include=DIR)

Tomoki AONO aono****@cc*****
2011年 1月 7日 (金) 03:38:35 JST


青野です。こんばんは。

<11010****@ikoma*****>の記事において
青野は書きました。

>> --with-wnn-includeを見てみると、設定したまま特にAC_SUBST() 
>> するでもなく放置されていました。多分藤原さんの仰るとおり同
>> オプションを指定しても使われていないのだと思います。実際に
>> はconfigure.inだけでなく、(藤原さんのpkgsrcのパッチにはあ
>> りますが) makerule.mk.inやMakefile.in 内で置き換える指定も
>> 必要です。

コメントばかりでもよろしくないので、コンセプト的なパッチを
作ってみました。(できれば同オプションを使っているパッケー
ジマネージャの方々にも)お試しいただければ幸いです。

(ご注意)
○今のところは[ck]wnnに対応してません。
○autoconfでconfigureスクリプトを生成してください。
○基本的にCVS版に対するパッチですが、多分1.1.1-a021でも適
  用できるのではないかと思います。(できなかったら…適宜編
  集してください。)
○従来は--without-libwnnを指定した時でも外部ライブラリを見
  るようになってましたが(これはバグかな…)、この変更により
  未指定時と同じく外部libwnnは使わないようになります。
○この指定が有効になる対象は(--with-wnn-librariesと同様)
  jutil(の一部)とuumに限られます。
○(多分)Wnn[67] SDKのlibwnnを利用できるような機能ではあり
  ません。

(その他コメント)
今回は--with-wnn-includesのデフォルト値は定めませんでした。
/usr/local/include/wnn (もっと言えば、$includedir/wnn)にし
てもよかったかもしれません。

過去の互換性を保つため(だと思うのですが)、日本語のWnn では
includeディレクトリにconfig.hを(wnn_config.hへのsymlinkと
して)作成します。先にそのファイルを読んでしまうとconfigure 
で検出した結果(であるところの$top_builddir/config.h の内容)
が全く反映されずコンパイル時にエラーとなります。そのため、
インクルードパスの順番に注意する必要があります。

あと、--with-libwnnで任意の文字列を引き受ける必要があるの
か青野には分かりません。過去の経緯をご存知の方がおられたら
お教え下さい。

Index: configure.in
===================================================================
RCS file: /cvsroot/freewnn/FreeWnn/configure.in,v
retrieving revision 1.53
diff -u -u -r1.53 configure.in
--- configure.in	31 Dec 2010 14:40:51 -0000	1.53
+++ configure.in	6 Jan 2011 09:55:20 -0000
@@ -186,39 +186,40 @@
 
 dnl For a library libwnn
 
-dnl AC_ARG_WITH(libwnn,
-dnl [  --with-libwnn               use installed Wnn library [default=no]],
-dnl [case "${withval}" in
-dnl    yes|no) with_libwnn=${withval};;
-dnl    *)   AC_MSG_ERROR(invalid argument to --with-libwnn) ;;
-dnl esac], with_libwnn=no)
-dnl 
-
 AC_ARG_WITH(libwnn,
 [  --with-libwnn             use installed Wnn library [[default=no]]],
-[  with_libwnn="${withval}"
+[  with_libwnn="${withval}"], [with_libwnn=no])
 AC_ARG_WITH(wnn-includes,
-[  --with-wnn-includes=DIR   WNN include files are in DIR],
+[  --with-wnn-includes=DIR   Installed Wnn include files are in DIR],
 [wnnincludedir="-I${withval}"], [wnnincludedir=''])
 AC_ARG_WITH(wnn-libraries,
-[  --with-wnn-libraries=DIR  Search for WNN libraries in DIR [[default=/usr/local/lib]]],
+[  --with-wnn-libraries=DIR  Search for Wnn libraries in DIR [[default=/usr/local/lib]]],
 [wnnlibdir="${withval}"], [wnnlibdir='/usr/local/lib'])
-	if test "X${with_libwnn}" = X-lwnn; then
-		WNNJLIB="-L${wnnlibdir} -lwnn"
-	elif test X"`echo ${with_libwnn} | grep '^/.*'`" != X ; then
-		WNNJLIB="${with_libwnn}"
-	else
-		WNNJLIB="${wnnlibdir}/libwnn.a"
-	fi
+
+if test X${with_libwnn} != Xno; then
+	case X${with_libwnn} in
+	Xyes | X-lwnn)
+		WNNJLIB="-L${wnnlibdir} -lwnn" ;;
+	X/*)
+		WNNJLIB="${wnnlibdir}/libwnn.a" ;;
+	*)
+		# Honor specified value --with-libwnn
+		# (maybe wrong in most cases)
+		WNNJLIB="${with_libwnn}" ;;
+	esac
 	DEPWNNJLIB=""
+	dnl NOTICE: HINSI_DATA depends on --prefix (and makerule.mk).
 	HINSI_DATA="\$(JWNNWNNDIR)/hinsi.data"
-],
-[	WNNJLIB="\$(top_builddir)/Wnn/jlib/libwnn.la"
+	EXTWNNJINC=${wnnincludedir}
+else
+	WNNJLIB="\$(top_builddir)/Wnn/jlib/libwnn.la"
 	DEPWNNJLIB="\$(WNNJLIB)"
 	HINSI_DATA="\$(top_builddir)/Wnn/jd/hinsi.data"
-])
+	EXTWNNJINC=""
+fi
 AC_SUBST(WNNJLIB)
 AC_SUBST(DEPWNNJLIB)
+AC_SUBST(EXTWNNJINC)
 AC_SUBST(HINSI_DATA)
 
 AC_ARG_WITH(libcwnn,
Index: Wnn/jutil/Makefile.in
===================================================================
RCS file: /cvsroot/freewnn/FreeWnn/Wnn/jutil/Makefile.in,v
retrieving revision 1.12
diff -u -u -r1.12 Makefile.in
--- Wnn/jutil/Makefile.in	11 Jul 2010 10:18:17 -0000	1.12
+++ Wnn/jutil/Makefile.in	6 Jan 2011 09:55:20 -0000
@@ -39,7 +39,7 @@
 LT_LD           = $(LIBTOOL) --mode=link $(CCLINK)
 LOCAL_INSTFLAGS = -o $(WNNOWNER)
 
-       INCLUDES = -I$(WNNINCLUDESRC) -I$(top_builddir)
+       INCLUDES = -I$(top_builddir) @EXTWNNJINC@ -I$(WNNINCLUDESRC)
         DEFINES = $(WNNDEFINES) $(WNNLANGDEF)
     HINSIDEFINE = -DHINSIDATA_FILE=\"/$(JWNNLANG)/hinsi.data\"
 
Index: Wnn/uum/Makefile.in
===================================================================
RCS file: /cvsroot/freewnn/FreeWnn/Wnn/uum/Makefile.in,v
retrieving revision 1.16
diff -u -u -r1.16 Makefile.in
--- Wnn/uum/Makefile.in	11 Jul 2010 10:18:17 -0000	1.16
+++ Wnn/uum/Makefile.in	6 Jan 2011 09:55:20 -0000
@@ -37,7 +37,7 @@
 INSTALL         = @INSTALL@
 LOCAL_INSTFLAGS = $(INSTUUMFLAGS)
 
-       INCLUDES = -I$(WNNINCLUDESRC) -I$(WNNROMKANSRC) -I$(top_builddir)
+       INCLUDES = -I$(top_builddir) @EXTWNNJINC@ -I$(WNNINCLUDESRC) -I$(WNNROMKANSRC)
         DEFINES = $(WNNDEFINES) $(WNNLANGDEF)
 # todo: should update configure to switch both WNNJLIB and WNNCONVLIB
 #	according to --with-wnn-libraries

----
青野智樹	(aono****@cc*****)
Personal opinion only...




freewnn-users メーリングリストの案内