namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: i18n (Re: gettext)



解決しました。

Ryuji Abe <raeva@xxxxxxxxxxxx> wrote:

>> これからcygwinの方もチェックします。
>
>configureを走らせてみましたが、Makefile及びsrc/Makefileには
>ちゃんと、
>INTLDEPS = $(top_builddir)/intl/libintl.a
>INTLLIBS = $(top_builddir)/intl/libintl.a
>INTLOBJS = $(GETTOBJS)
>が入っています。src/MakefileのLDADD行も
>LDADD = $(top_builddir)/intl/libintl.a
>と置き換わっております。

手元の環境でも /usr/local/lib/libintl.a が存在しない状態では

  INTLDEPS = $(top_builddir)/intl/libintl.a
  INTLLIBS = $(top_builddir)/intl/libintl.a
  INTLOBJS = $(GETTOBJS)
  LDADD = $(top_builddir)/intl/libintl.a

を設定してくれます。つまり、 Namazu の configureは

  * /usr/local/lib などに既存の libintl.a が存在する
  * かつ、 libc に gettext が含まれない

状況 (うちの環境) でのみ問題が起きるようです。しかし、 
sh-utils-2.0 の ./configure はこの状況でもきちんと設定してく
れます。

試しに sh-utils-2.0 の aclocal.m4 をコピーして autoreconf &&
rm config.cache && ./configure したところ、 
/usr/local/lib/libintl.a が存在するときに src/Makefile にき
ちんと

LIBS = -lm -lintl 

を設定してくれました (すばらしい)。というわけで、
sh-utils-2.0 の aclocal.m4 を参考に Namazu の aclocal.m4 を
修正して autoreconf && cvs commit しておきました。これで

  * /usr/local/lib などに既存の libintl.a が存在する
  * かつ、 libc に gettext が含まれない

ときに起こる問題は解決したはずです。が、もしかしたら他の環境
では逆に問題が起きてしまうかもしれません。動作確認をしてもら
えますか?

参考までに aclocal.m4 の差分をメイル末尾に添付しておきます。

p.s.
安部さんは automake 1.4a (CVSで取ってこれる最新版) を使って
いますね。私もそうしようかな? (autocon/automake ともに最新版
は CVS で取得済みです)

-- Satoru Takabayashi

Index: aclocal.m4
===================================================================
RCS file: /circus/cvsroot/namazu/aclocal.m4,v
retrieving revision 1.3.2.4
retrieving revision 1.3.2.5
diff -c -r1.3.2.4 -r1.3.2.5
*** aclocal.m4	1999/09/19 03:55:10	1.3.2.4
--- aclocal.m4	1999/09/21 01:06:15	1.3.2.5
***************
*** 1,4 ****
! dnl aclocal.m4 generated automatically by aclocal 1.4
  
  dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
--- 1,4 ----
! dnl aclocal.m4 generated automatically by aclocal 1.4a
  
  dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
***************
*** 22,27 ****
--- 22,29 ----
  
  AC_DEFUN(AM_INIT_AUTOMAKE,
  [AC_REQUIRE([AC_PROG_INSTALL])
+ dnl We require 2.13 because we rely on SHELL being computed by configure.
+ AC_PREREQ([2.13])
  PACKAGE=[$1]
  AC_SUBST(PACKAGE)
  VERSION=[$2]
***************
*** 42,47 ****
--- 44,69 ----
  AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
  AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
  AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
+ dnl Set install_sh for make dist
+ install_sh="$missing_dir/install-sh"
+ test -f "$install_sh" || install_sh="$missing_dir/install.sh"
+ AC_SUBST(install_sh)
+ dnl We check for tar when the user configures the end package.
+ dnl This is sad, since we only need this for "dist".  However,
+ dnl there's no other good way to do it.  We prefer GNU tar if
+ dnl we can find it.  If we can't find a tar, it doesn't really matter.
+ AC_CHECK_PROGS(AMTAR, gnutar gtar tar)
+ dnl We need awk for the "check" target.  The system "awk" is bad on
+ dnl some platforms.
+ AC_REQUIRE([AC_PROG_AWK])
+ AMTARFLAGS=
+ if test -n "$AMTAR"; then
+   if $SHELL -c "$AMTAR --version" > /dev/null 2>&1; then
+     dnl We have GNU tar.
+     AMTARFLAGS=o
+   fi
+ fi
+ AC_SUBST(AMTARFLAGS)
  AC_REQUIRE([AC_PROG_MAKE_SET])])
  
  #
***************
*** 151,167 ****
  
  	   if test "$gt_cv_func_gettext_libc" != "yes"; then
  	     AC_CHECK_LIB(intl, bindtextdomain,
! 	       [AC_CACHE_CHECK([for gettext in libintl],
! 		 gt_cv_func_gettext_libintl,
! 		 [AC_CHECK_LIB(intl, gettext,
! 		  gt_cv_func_gettext_libintl=yes,
! 		  gt_cv_func_gettext_libintl=no)],
! 		 gt_cv_func_gettext_libintl=no)])
  	   fi
  
  	   if test "$gt_cv_func_gettext_libc" = "yes" \
! 	      || test "$gt_cv_func_gettext_libintl" = "yes"; then
! 	      AC_DEFINE(HAVE_GETTEXT)
  	      AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
  		[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
  	      if test "$MSGFMT" != "no"; then
--- 173,185 ----
  
  	   if test "$gt_cv_func_gettext_libc" != "yes"; then
  	     AC_CHECK_LIB(intl, bindtextdomain,
! 	       [AC_CHECK_LIB(intl, gettext)])
  	   fi
  
  	   if test "$gt_cv_func_gettext_libc" = "yes" \
! 	      || test "$ac_cv_lib_intl_gettext" = "yes"; then
! 	      AC_DEFINE(HAVE_GETTEXT, 1,
! 	  [Define to 1 if you have gettext and don't want to use GNU gettext.])
  	      AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
  		[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
  	      if test "$MSGFMT" != "no"; then
***************
*** 261,266 ****
--- 279,288 ----
        DATADIRNAME=share
        nls_cv_header_intl=intl/libintl.h
        nls_cv_header_libgt=intl/libgettext.h
+     fi
+     if test -z "$nls_cv_header_intl"; then
+       # Clean out junk possibly left behind by a previous configuration.
+       rm -f intl/libintl.h
      fi
      AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
      AC_OUTPUT_COMMANDS(