Packaging hints for binary package distributors
===============================================

Although the source of the gettext package comes as a single package,
I recommend that in distributions of binary packages the installed files
be split into two packages:

  gettext-runtime
       Contents: Runtime libraries and programs.
       Audience: Anyone who wants to run internationalized programs.

  gettext-tools
       Contents: Tools and documentation for developers and translators.
       Audience: Anyone who wants to develop or localize internationalized
                 programs, i.e. developers and translators.
       Dependencies: requires gettext-runtime.

The 'gettext-runtime' binary package is much smaller than the 'gettext-tools'
binary package (420 KB versus 5.5 MB). I recommend to include it in the default
installation list, like GNU 'coreutils'; in fact, the runtime programs are
utilities for sh programs.

The 'gettext-runtime' binary package can be installed by doing

     cd gettext-runtime
     ./configure
     make
     make install

The 'gettext-tools' binary package can be installed by doing

     cd gettext-tools
     ./configure
     make
     make install

If you want to install both at the same time, you simply do at the toplevel
directory:

     ./configure
     make
     make install

The precise split between gettext and gettext-tools is according to the
following file list.

  gettext-runtime

     $prefix/share/gettext/ABOUT-NLS

     $prefix/bin/gettext
     $prefix/bin/ngettext
     $prefix/bin/envsubst
     $prefix/bin/gettext.sh
     $prefix/share/man/man1/gettext.1
     $prefix/share/man/man1/ngettext.1
     $prefix/share/man/man1/envsubst.1
     $prefix/share/doc/gettext/gettext.1.html
     $prefix/share/doc/gettext/ngettext.1.html
     $prefix/share/doc/gettext/envsubst.1.html
     $prefix/share/locale/*/LC_MESSAGES/gettext-runtime.mo

     $prefix/lib/libintl.*               (not installed on glibc systems)
     $prefix/lib/charset.alias           (not installed on glibc systems)
     $prefix/share/locale/locale.alias   (not installed on glibc systems)
     $prefix/include/libintl.h           (not installed on glibc systems)
     $prefix/share/man/man3/*
     $prefix/share/doc/gettext/*.3.html

     $prefix/share/gettext/libintl.jar
     $prefix/share/doc/gettext/javadoc1/*
     $prefix/share/doc/gettext/javadoc2/*

     $prefix/lib/GNU.Gettext.dll
     $prefix/share/doc/gettext/csharpdoc/*

     $prefix/lib/libasprintf.*
     $prefix/include/autosprintf.h
     $prefix/share/doc/libasprintf/autosprintf.html
     $prefix/info/autosprintf.info

  gettext-tools

     Everything else, i.e. currently:

     $prefix/bin/msg*
     $prefix/bin/xgettext
     $prefix/bin/gettextize
     $prefix/bin/autopoint
     $prefix/bin/recode*
     $prefix/share/man/man1/msg*.1
     $prefix/share/man/man1/xgettext.1
     $prefix/share/man/man1/gettextize.1
     $prefix/share/man/man1/autopoint.1
     $prefix/share/doc/gettext/msg*.1.html
     $prefix/share/doc/gettext/xgettext.1.html
     $prefix/share/doc/gettext/gettextize.1.html
     $prefix/share/doc/gettext/autopoint.1.html
     $prefix/share/doc/gettext/gettext_*.html
     $prefix/share/doc/gettext/FAQ.html
     $prefix/share/doc/gettext/examples/*
     $prefix/info/gettext.info*
     $prefix/include/gettext-po.h
     $prefix/lib/libgettextlib*
     $prefix/lib/libgettextsrc*
     $prefix/lib/libgettextpo*
     $prefix/lib/preloadable_libintl.so  (only installed on glibc systems)
     $prefix/lib/gettext/*
     $prefix/share/locale/*/LC_MESSAGES/gettext-tools.mo
     $prefix/share/gettext/config.rpath
     $prefix/share/gettext/intl/*
     $prefix/share/gettext/po/*
     $prefix/share/gettext/projects/*
     $prefix/share/gettext/gettext.h
     $prefix/share/gettext/gettext.jar   (only installed if gcj is not present)
     $prefix/share/gettext/msgunfmt.tcl
     $prefix/share/gettext/archive.tar.gz
     $prefix/share/aclocal/codeset.m4
     $prefix/share/aclocal/gettext.m4
     $prefix/share/aclocal/glibc2.m4
     $prefix/share/aclocal/glibc21.m4
     $prefix/share/aclocal/iconv.m4
     $prefix/share/aclocal/intdiv0.m4
     $prefix/share/aclocal/intl.m4
     $prefix/share/aclocal/intldir.m4
     $prefix/share/aclocal/intmax.m4
     $prefix/share/aclocal/inttypes_h.m4
     $prefix/share/aclocal/inttypes-pri.m4
     $prefix/share/aclocal/lcmessage.m4
     $prefix/share/aclocal/lib-ld.m4
     $prefix/share/aclocal/lib-link.m4
     $prefix/share/aclocal/lib-prefix.m4
     $prefix/share/aclocal/lock.m4
     $prefix/share/aclocal/longdouble.m4
     $prefix/share/aclocal/longlong.m4
     $prefix/share/aclocal/nls.m4
     $prefix/share/aclocal/po.m4
     $prefix/share/aclocal/printf-posix.m4
     $prefix/share/aclocal/progtest.m4
     $prefix/share/aclocal/size_max.m4
     $prefix/share/aclocal/stdint_h.m4
     $prefix/share/aclocal/uintmax_t.m4
     $prefix/share/aclocal/ulonglong.m4
     $prefix/share/aclocal/visibility.m4
     $prefix/share/aclocal/wchar_t.m4
     $prefix/share/aclocal/wint_t.m4
     $prefix/share/aclocal/xsize.m4
     $prefix/share/emacs/site-lisp/po-compat.el
     $prefix/share/emacs/site-lisp/po-compat.elc
     $prefix/share/emacs/site-lisp/po-mode.el
     $prefix/share/emacs/site-lisp/po-mode.elc
     $prefix/share/emacs/site-lisp/start-po.el
     $prefix/share/emacs/site-lisp/start-po.elc


Java support:
-------------

If GNU gcj is available at build time, two programs will be built as native
executables:
     $prefix/lib/gettext/gnu.gettext.*
and the gettext-tools package will therefore have a runtime dependency to
libgcj.so.

If GNU gcj is not available at build time but another Java implementation is
available instead, the two programs will be compiled to Java bytecode only:
     $prefix/share/gettext/gettext.jar
and the gettext-tools package will therefore have a runtime dependency to
the Java virtual machine (Sun Java2, IBM Java2, GNU libgcj.jar, or other).


C# support:
-----------

For C# support, one of pnet or mono must be available at build time; it must
also be available at run time. If you have both available, choose the desired
one through the configure option. Note there is no interoperability currently
between pnet and mono: Programs compiled with pnet don't run with mono, and
vice versa.