added initial i18n stuff
authorWerner Koch <wk@gnupg.org>
Mon, 26 Jan 1998 22:08:48 +0000 (22:08 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 26 Jan 1998 22:08:48 +0000 (22:08 +0000)
Makefile.am
README
acconfig.h
configure.in

index dea36e9..a2a1d87 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS =  util mpi cipher tools g10
+SUBDIRS =  util mpi cipher tools po intl g10
 EXTRA_DIST = VERSION
 
 
diff --git a/README b/README
index 4aa3f6e..91d3ac9 100644 (file)
--- a/README
+++ b/README
     Ditto, but sign the file with the user id "Suttner"
 
 
+    How to Specify a UserID
+    -----------------------
+    There are several ways to specify a userID, here are some examples:
+
+    * Only by the short keyid (prepend a zero if it start with A..F):
+
+       "234567C4"
+       "0F34E556E"
+       "01347A56A"
+
+    * By a complete keyid:
+
+       "234AABBCC34567C4"
+       "0F323456784E56EAB"
+       "01AB3FED1347A5612"
+
+    * By a fingerprint (not yet implemented):
+
+       "1234343434343434C434343434343434"
+       "123434343434343C3434343434343734349A3434"
+       "0E12343434343434343434EAB3484343434343434"
+
+      The first one is MD5 the others are ripemd160 or sha1.
+
+    * By an exact string (not yet implemented):
+
+       "=Heinrich Heine <heinrichh@uni-duesseldorf.de>"
+
+    * By an email address:
+
+       "<heinrichh@uni-duesseldorf.de>"
+
+      This can be used by a keyserver instead of a substring to
+      find this key faster.
+
+    * By the Local ID (from the trustdb):
+
+       "#34"
+
+      This can be used by a MUA to specify an exact key after selecting
+      a key from G10 (by the use of a special option or an extra utility)
+
+
+    * Or by the usual substring:
+
+       "Heine"
+       "*Heine"
+
+      The '*' indicates substring search explicitly.
+
+
+
+
     Batch mode
     ----------
     If you use the option "--batch", G10 runs in non-interactive mode and
index 3f83ef1..728d4d1 100644 (file)
 #undef M_DEBUG
 #undef VERSION
 #undef PACKAGE
+#undef G10_LOCALEDIR
+
+/* Define if your locale.h file contains LC_MESSAGES.  */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if NLS is requested.  */
+#undef ENABLE_NLS
+
+/* Define as 1 if you have catgets and don't want to use GNU gettext.  */
+#undef HAVE_CATGETS
+
+/* Define as 1 if you have gettext and don't want to use GNU gettext.  */
+#undef HAVE_GETTEXT
+
+#undef HAVE_STPCPY
+
 
 #undef BIG_ENDIAN_HOST
 #undef LITTLE_ENDIAN_HOST
index 39e8776..b9b8ccd 100644 (file)
@@ -8,12 +8,27 @@ AC_CONFIG_AUX_DIR(scripts)
 AC_CONFIG_HEADER(config.h)
 
 
+if test "x$exec_prefix" = xNONE ; then
+    if test "x$prefix" = xNONE ; then
+       g10_prefix="$ac_default_prefix"
+    else
+       g10_prefix="$prefix"
+    fi
+else
+    g10_prefix="$exec_prefix"
+fi
+
+
 VERSION=`cat $srcdir/VERSION`
 PACKAGE=g10
+ALL_LINGUAS="de"
+G10_LOCALEDIR="$g10_prefix/share/locale"
 AC_SUBST(VERSION)
 AC_SUBST(PACKAGE)
+AC_SUBST(G10_LOCALEDIR)
 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
+AC_DEFINE_UNQUOTED(G10_LOCALEDIR, "$G10_LOCALEDIR")
 
 AC_ARG_ENABLE(m-debug,
 [  --enable-m-debug    Enable debugging of memory allocation])
@@ -22,6 +37,250 @@ if test "$enableval" = y || test "$enableval" = yes; then
 fi
 CFLAGS="-g -Wall"
 
+g10_ln_sources=
+g10_ln_dests=
+
+
+
+dnl BEGIN===========================
+dnl FIXME: move this to aclocal.m4
+AC_PREREQ(2.5)
+
+AC_DEFUN(md_TYPE_PTRDIFF_T,
+  [AC_CACHE_CHECK([for ptrdiff_t], ac_cv_type_ptrdiff_t,
+     [AC_TRY_COMPILE(stddef.h, [ptrdiff_t p], ac_cv_type_ptrdiff_t=yes,
+                    ac_cv_type_ptrdiff_t=no)])
+   if test $ac_cv_type_ptrdiff_t = yes; then
+     AC_DEFINE(HAVE_PTRDIFF_T)
+   fi
+])
+
+AC_DEFUN(md_PATH_PROG,
+  [AC_PATH_PROG($1,$2,$3)dnl
+   if echo $$1 | grep openwin > /dev/null; then
+     echo "WARNING: Do not use OpenWin's $2.  (Better remove it.) >&AC_FD_MSG"
+     ac_cv_path_$1=$2
+     $1=$2
+   fi
+])
+
+
+dnl --------------------------------------------------------- ##
+dnl Use AC_PROG_INSTALL, supplementing it with INSTALL_SCRIPT ##
+dnl substitution.                                            ##
+dnl --------------------------------------------------------- ##
+
+AC_DEFUN(fp_PROG_INSTALL,
+[AC_PROG_INSTALL
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL} -m 755'
+AC_SUBST(INSTALL_SCRIPT)dnl
+])
+
+dnl Check NLS options
+
+AC_DEFUN(ud_LC_MESSAGES,
+  [if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], ud_cv_val_LC_MESSAGES,
+      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       ud_cv_val_LC_MESSAGES=yes, ud_cv_val_LC_MESSAGES=no)])
+    if test $ud_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES)
+    fi
+  fi])
+
+AC_DEFUN(ud_WITH_NLS,
+  [AC_MSG_CHECKING([whether NLS is requested])
+    dnl Default is enabled NLS
+    AC_ARG_ENABLE(nls,
+      [  --disable-nls          do not use Native Language Support],
+      nls_cv_use_nls=$enableval, nls_cv_use_nls=yes)
+    AC_MSG_RESULT($nls_cv_use_nls)
+
+    dnl If we use NLS figure out what method
+    if test "$nls_cv_use_nls" = "yes"; then
+      AC_DEFINE(ENABLE_NLS)
+      AC_MSG_CHECKING([for explicitly using GNU gettext])
+      AC_ARG_WITH(gnu-gettext,
+       [  --with-gnu-gettext      use the GNU gettext library],
+       nls_cv_force_use_gnu_gettext=$withval,
+       nls_cv_force_use_gnu_gettext=no)
+      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+      if test "$nls_cv_force_use_gnu_gettext" = "yes"; then
+       nls_cv_use_gnu_gettext=yes
+      else
+       dnl User does not insist on using GNU NLS library.  Figure out what
+       dnl to use.  If gettext or catgets are available (in this order) we
+       dnl use this.  Else we have to fall back to GNU NLS library.
+       AC_CHECK_LIB(intl, main)
+       AC_CHECK_LIB(i, main)
+       CATOBJEXT=NONE
+       AC_CHECK_FUNC(gettext,
+         [AC_DEFINE(HAVE_GETTEXT)
+          md_PATH_PROG(MSGFMT, msgfmt, no)dnl
+          if test "$MSGFMT" != "no"; then
+            AC_CHECK_FUNCS(dcgettext)
+            md_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+            md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+            CATOBJEXT=.mo
+            INSTOBJEXT=.mo
+            DATADIRNAME=lib
+          fi])
+
+       if test "$CATOBJEXT" = "NONE"; then
+         dnl No gettext in C library.  Try catgets next.
+         AC_CHECK_FUNC(catgets,
+           [AC_DEFINE(HAVE_CATGETS)
+            INTLOBJS="\$(CATOBJS)"
+            AC_PATH_PROG(GENCAT, gencat, no)dnl
+            if test "$GENCAT" != "no"; then
+              AC_PATH_PROGS(GMSGFMT, [gmsgfmt msgfmt], msgfmt)
+              md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+              CATOBJEXT=.cat
+              INSTOBJEXT=.cat
+              DATADIRNAME=lib
+              INTLDEPS="../intl/libintl.a"
+              INTLLIBS=$INTLDEPS
+              LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+              nls_cv_header_intl=intl/libintl.h
+              nls_cv_header_libgt=intl/libgettext.h
+            fi])
+       fi
+
+       if test "$CATOBJEXT" = "NONE"; then
+         dnl Neither gettext nor catgets in included in the C library.
+         dnl Fall back on GNU gettext library.
+         nls_cv_use_gnu_gettext=yes
+       fi
+      fi
+
+      if test "$nls_cv_use_gnu_gettext" = "yes"; then
+       dnl Mark actions used to generate GNU NLS library.
+       INTLOBJS="\$(GETTOBJS)"
+       md_PATH_PROG(MSGFMT, msgfmt, msgfmt)
+       md_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+       md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+       AC_SUBST(MSGFMT)
+       CATOBJEXT=.gmo
+       INSTOBJEXT=.mo
+       DATADIRNAME=share
+       INTLDEPS="../intl/libintl.a"
+       INTLLIBS=$INTLDEPS
+       LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+       nls_cv_header_intl=intl/libintl.h
+       nls_cv_header_libgt=intl/libgettext.h
+      fi
+
+      # We need to process the intl/ and po/ directory.
+      INTLSUB=intl
+      POSUB=po
+    else
+      DATADIRNAME=share
+      nls_cv_header_intl=intl/libintl.h
+      nls_cv_header_libgt=intl/libgettext.h
+    fi
+
+    dnl These rules are solely for the distribution goal.  While doing this
+    dnl we only have to keep exactly one list of the available catalogs
+    dnl in configure.in.
+    for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(CATALOGS)
+    AC_SUBST(CATOBJEXT)
+    AC_SUBST(DATADIRNAME)
+    AC_SUBST(GMOFILES)
+    AC_SUBST(INSTOBJEXT)
+    AC_SUBST(INTLDEPS)
+    AC_SUBST(INTLLIBS)
+    AC_SUBST(INTLOBJS)
+    AC_SUBST(INTLSUB)
+    AC_SUBST(POFILES)
+    AC_SUBST(POSUB)
+  ])
+
+AC_DEFUN(ud_GNU_GETTEXT,
+  [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+   AC_REQUIRE([AC_PROG_CC])dnl
+   AC_REQUIRE([AC_PROG_RANLIB])dnl
+   AC_REQUIRE([AC_HEADER_STDC])dnl
+   AC_REQUIRE([AC_C_CONST])dnl
+   AC_REQUIRE([AC_C_INLINE])dnl
+   AC_REQUIRE([AC_TYPE_OFF_T])dnl
+   AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+   AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+   AC_REQUIRE([AC_FUNC_MMAP])dnl
+
+   AC_CHECK_HEADERS([limits.h locale.h nl_types.h malloc.h string.h unistd.h values.h])
+   AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp])
+
+   if test "${ac_cv_func_stpcpy+set}" != "set"; then
+     AC_CHECK_FUNCS(stpcpy)
+   fi
+   if test "${ac_cv_func_stpcpy}" = "yes"; then
+     AC_DEFINE(HAVE_STPCPY)
+   fi
+
+   ud_LC_MESSAGES
+   ud_WITH_NLS
+
+   if test "x$CATOBJEXT" != "x"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       AC_MSG_CHECKING(for catalogs to be installed)
+       NEW_LINGUAS=
+       for lang in ${LINGUAS=$ALL_LINGUAS}; do
+        case "$ALL_LINGUAS" in
+         *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
+        esac
+       done
+       LINGUAS=$NEW_LINGUAS
+       AC_MSG_RESULT($LINGUAS)
+     fi
+
+     dnl Construct list of names of catalog files to be constructed.
+     if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+   dnl Determine which catalog format we have (if any is needed)
+   dnl For now we know about two different formats:
+   dnl  Linux and the normal X/Open format
+   test -d intl || mkdir intl
+   if test "$CATOBJEXT" = ".cat"; then
+     AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
+
+     dnl Transform the SED scripts while copying because some dumb SEDs
+     dnl cannot handle comments.
+     sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
+   fi
+   dnl po2tbl.sed is always needed.
+   sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
+     $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
+
+   dnl Generate list of files to be processed by xgettext which will
+   dnl be included in po/Makefile.
+   test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+       < $srcdir/po/POTFILES.in > po/POTFILES
+  ])
+
+dnl END========================
+
 dnl some additional macros
 
 dnl WK_MSG_PRINT(STRING)
@@ -44,8 +303,6 @@ fi
 ])
 
 
-
-
 dnl
 AC_CANONICAL_SYSTEM
 AC_MSG_CHECKING(cached information)
@@ -91,13 +348,14 @@ dnl Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS(unistd.h)
 
+ud_GNU_GETTEXT
+
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_INLINE
 AC_TYPE_SIZE_T
 
-
 dnl autoconf doesn't support a default value for AC_C_BIGENDIAN
 dnl so here is the modified version
 if test "$cross_compiling" = yes; then
@@ -181,8 +439,14 @@ else
 ac_cv_mpi_config_done=""
 if test -f $srcdir/mpi/config.links ; then
     . $srcdir/mpi/config.links
+    if test "x$g10_ln_sources" = "x"; then
+       g10_ln_sources="$mpi_ln_src"
+       g10_ln_dests="$mpi_ln_dst"
+    else
+       g10_ln_sources="$g10_ln_sources $mpi_ln_src"
+       g10_ln_dests="$g10_ln_dests $mpi_ln_dst"
+    fi
     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
-    AC_LINK_FILES( ${mpi_ln_src}, ${mpi_ln_dst} )
     ac_cv_mpi_config_done="yes"
     AC_MSG_RESULT(done)
 else
@@ -223,11 +487,25 @@ fi
 AC_SUBST(CIPHER_EXTRA_OBJS)
 AC_SUBST(CIPHER_EXTRA_DIST)
 
-AC_OUTPUT([ Makefile   \
-           util/Makefile    \
-           mpi/Makefile \
-           cipher/Makefile \
-           g10/Makefile     \
-           tools/Makefile   \
-], [echo timestamp > stamp-h ] )
+if test "x$g10_ln_sources" = "x"; then
+    g10_ln_sources="$nls_cv_header_libgt"
+    g10_ln_dests="$nls_cv_header_intl"
+else
+    g10_ln_sources="$g10_ln_sources $nls_cv_header_libgt"
+    g10_ln_dests="$g10_ln_dests $nls_cv_header_intl"
+fi
+
+AC_LINK_FILES($g10_ln_sources,$g10_ln_dests)
+
+
+AC_OUTPUT([
+Makefile
+intl/Makefile
+po/Makefile.in
+util/Makefile
+mpi/Makefile
+cipher/Makefile
+g10/Makefile
+tools/Makefile
+],[echo timestamp >stamp-h; sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])