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

Tomoki AONO aono****@cc*****
2011年 1月 3日 (月) 23:19:16 JST


青野です。藤原さん、ありがとうございます。

<yfmei8ve4iw.wl%makot****@ki*****>の記事において
makot****@ki*****さんは書きました。

>> こんにちは。
>> NetBSD/pkgsrc/inputmethod/ja-freewnn* は かなり古いので、何
>> とか 1.1.1-a021 まで新しくしようと思って、試行錯誤中です。

藤原さんの日記に挙げられてたpkgsrc(のパッチ部分)に関しては
少し見てました。

(略)
>> それで、その分ける場合の方ですが、どうも --with-wnn-include=
>> を設定する必要があって、見ていました。
>> 
>> ですが、どうもそれが効かない(指定しても無視される)ような気がして、
>> configure を変更して見たりする訳ですが、それには configure.in
>> を少し変更して、autoconf (2.53) を使うと、どうも変です。
>> 
>> (僕の勘違いでなければ)、configure.in がこわれている気がします。
>> それで直そうと思ったのが添付の差分です。
>>   ---> うーん、やはり勘違いかも知れません。

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

#ソースに取り込まれたパッチは[freewnn:00443]に当たるよう
#ですが、そこから(見た目以外は)変更されていないようです。
#(cf. http://www.tomo.gr.jp/users/wnn/0101ml/msg00019.html )

藤原さんのパッチは1.1.1-a021を対象に作られてますが、その辺
りは変更ないのでCVS版と読み替えてコメントします。

>> --- configure.in.orig	2005-11-28 02:30:23.000000000 +0900
>> +++ configure.in	2010-12-29 17:30:58.000000000 +0900
>> @@ -148,13 +148,13 @@
>>  
>>  AC_ARG_WITH(libwnn,
>>  [  --with-libwnn             use installed Wnn library [[default=no]]],
>> -[  with_libwnn="${withval}"
>> +[  with_libwnn="${withval}"],[])
>>  AC_ARG_WITH(wnn-includes,
>>  [  --with-wnn-includes=DIR   WNN include files are in DIR],
>> -[wnnincludedir="-I${withval}"], [wnnincludedir=''])
>> +[WNNINCLUDESRC="-I${withval}"], [WNNINCLUDESRC=''])
>>  AC_ARG_WITH(wnn-libraries,
>>  [  --with-wnn-libraries=DIR  Search for WNN libraries in DIR [[default=/usr/local/lib]]],
>> -[wnnlibdir="${withval}"], [wnnlibdir='/usr/local/lib'])
>> +[wnnlibdir="${withval}"
>>  	if test "X${with_libwnn}" = X-lwnn; then
>>  		WNNJLIB="-L${wnnlibdir} -lwnn"
>>  	elif test X"`echo ${with_libwnn} | grep '^/.*'`" != X ; then

この辺は分かりにくいですね。元のconfigure.in
(--with-libwnn近辺のみ)をインデントしなおしてみました。

AC_ARG_WITH(libwnn,
  [  --with-libwnn ....],
  [  with_libwnn="${withval}"
    AC_ARG_WITH(wnn-includes,
      [  --with-wnn-includes=DIR ....],
      [wnnincludedir="-I${withval}"], [wnnincludedir=''])
    AC_ARG_WITH(wnn-libraries,
      [  --with-wnn-libraries=DIR ....],
      [wnnlibdir="${withval}"], [wnnlibdir='/usr/local/lib'])
    # snipped: $with_libwnnに応じて WNNJLIBを決定
    # '-l${wnnlibdir} -lwnn' or '${wnnlibdir}/libwnn.a' or '$with_libwnn'
    DEPWNNJLIB=""
    HINSI_DATA="\$(JWNNWNNDIR)/hinsi.data"
  ],
  [ WNNJLIB="\$(top_builddir)/Wnn/jlib/libwnn.la"
    DEPWNNJLIB="\$(WNNJLIB)"
    HINSI_DATA="\$(top_builddir)/Wnn/jd/hinsi.data"
  ]
)

--with-libwnnのAC_ARG_WITH()文での定義中に
--with-wnn-{includes,libraries}の定義が混ざってて分かりに
くいですね。パッチ後は処理が--with-wnn-librariesの定義内で
実施されるように移動しただけで、挙動としてはパッチ前とパッ
チ後で変わらないという印象を持ちました。
#青野が書くならばWNNJLIBなどの実際の定義はAC_ARG_WITH()文
#の外で記述すると思います。

--with-wnn-includes で定義されたwnnincludedir(パッチ後の
WNNINCLUDESRC相当)がその後使われていないのはご指摘の通りで
す。

>> @@ -308,7 +314,19 @@
>>  	;;
>>  *-*-aix*)
>>      CCOPTIONS="-DSYSV"
>> -    ;;
>> +        ;;
>> +*-*-freebsd*|*-*-openbsd*)
>> +	CCOPTIONS="-DCSRG_BASED"
>> +	CDEBUGFLAGS="-O2 -fno-strength-reduce"
>> +	if test -x /usr/libexec/cpp; then
>> +	         CPP=/usr/libexec/cpp
>> +	fi
>> +	;;
>> +*-*-netbsd*|*-*-dragonfly*)
>> +	CCOPTIONS="-DCSRG_BASED"
>> +	CDEBUGFLAGS="-O2 -fno-strength-reduce"
>> +	CPP=/usr/bin/cpp
>> +	;;
>>  *)
>>  dnl    AC_MSG_WARN("It is not reported if FreeWnn works on this system.  But continuing...")
>>  dnl    AC_MSG_WARN([(It may or may not work if you set CCOPTIONS properly.)])

この辺は多分不要だと思います。特にマクロ「CSRG_BASED」は他
のソースでは参照されてないはずです。(Xwnmoだけ自信がありま
せんので保留しますが…。)
----
青野智樹	(aono****@cc*****)
Personal opinion only...




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