The following packages should be installed before GNU gettext is installed
(runtime dependencies that are also build dependencies):

* GNU libiconv
  + Not needed on systems with glibc, on macOS, and NetBSD.
    But highly recommended on all other systems.
    Needed for character set conversion of PO files from/to Unicode
    and for the iconv_ostream class of libtextstyle.
  + Homepage:
    https://www.gnu.org/software/libiconv/
  + Download:
    https://ftp.gnu.org/gnu/libiconv/
  + Pre-built package name:
    - On Debian and Debian-based systems: --,
    - On Red Hat distributions: --.
    - Other: https://repology.org/project/libiconv/versions
  + If it is installed in a nonstandard directory, pass the option
    --with-libiconv-prefix=DIR to 'configure'.

* GNU ncurses (preferred)
  or libtermcap (discouraged) or a curses library (legacy).
  + Highly recommended.
    Needed for styling of terminal output (libtextstyle and the --color
    option of the 'msgcat' program).
  + Homepage:
    https://www.gnu.org/software/ncurses/
  + Download:
    https://ftp.gnu.org/gnu/ncurses/
  + Pre-built package name:
    - On Debian and Debian-based systems: libncurses-dev,
    - On Red Hat distributions: ncurses-devel.
    - Other: https://repology.org/project/ncurses/versions
  + If it is installed in a nonstandard directory, pass the option
    --with-ncurses-prefix=DIR or --with-libtermcap-prefix to 'configure'.

* libxml2
  + Recommended.
    Needed for 'xgettext' and 'msgfmt', so that it can parse XML
    files.  Also needed for the --color option of the various
    programs.
    If not present, a subset of libxml2 (included in this package) will be
    compiled into libgettextlib.
  + Homepage:
    http://xmlsoft.org/
  + Download:
    ftp://xmlsoft.org/libxml2/
  + Pre-built package name:
    - On Debian and Debian-based systems: libxml2-dev,
    - On Red Hat distributions: libxml2-devel.
    - Other: https://repology.org/project/libxml2/versions
  + If it is installed in a nonstandard directory, pass the option
    --with-libxml2-prefix=DIR to 'configure'.

* libacl
  + Recommended.
    Needed so that the creation of backup files respects the access control
    lists (ACLs) set on the original files.
  + Homepage:
    https://savannah.nongnu.org/projects/acl/
  + Download:
    https://download.savannah.nongnu.org/releases/acl/
  + Pre-built package name:
    - On Debian and Debian-based systems: acl, libacl1-dev,
    - On Red Hat distributions: acl, libacl-devel.
    - Other: https://repology.org/project/acl/versions

* A Java runtime and compiler (e.g. OpenJDK, AdoptOpenJDK, or kaffe).
  + Recommended.
    Needed for building libintl.jar.  Also needed for 'msgfmt' and
    'msgunfmt', so that they can handle Java classes and properties files.
  + Homepage:
    http://openjdk.java.net/
    http://www.kaffe.org/
  + Download:
    http://openjdk.java.net/install/index.html
    https://github.com/kaffe/kaffe
  + Pre-built package name:
    - On Debian and Debian-based systems:
      openjdk-11-jdk or openjdk-8-jdk or openjdk-7-jdk,
    - On Red Hat distributions:
      java-11-openjdk or java-1.8.0-openjdk or java-1.7.0-openjdk.
    - Other: https://repology.org/project/openjdk/versions

* A C# runtime and compiler (e.g. mono).
  + Recommended.
    Needed for building GNU.Gettext.dll. Also needed for 'msgfmt' and
    'msgunfmt', so that they can handle C# resources and assemblies.
  + Homepage:
    http://www.mono-project.com/
  + Download:
    http://www.mono-project.com/download/
  + Pre-built package name:
    - On Debian and Debian-based systems: mono,
    - On Red Hat distributions: mono.
    - Other: https://repology.org/project/mono/versions
  + If more than one C# is installed, pass the option --enable-csharp=IMPL
    to 'configure', to disambiguate.

* git 1.6 or newer
  + Recommended.
    Needed by the 'autopoint' program, if not configured with --without-git
    or --with-cvs.
  + Homepage:
    https://git-scm.com/
  + Download:
    https://www.kernel.org/pub/software/scm/git/
  + Pre-built package name:
    - On Debian and Debian-based systems: git,
    - On Red Hat distributions: git.
    - Other: https://repology.org/project/git/versions

* The archiving utility 'tar'.
  + Recommended.
    Needed for the 'autopoint' program.
    Either the platform's native tar, or GNU tar.
  + Homepage:
    https://www.gnu.org/software/tar/
  + Download:
    https://ftp.gnu.org/gnu/tar/
  + Pre-built package name:
    - On Debian and Debian-based systems: tar,
    - On Red Hat distributions: tar.
    - Other: https://repology.org/project/tar/versions

* The GNU compression utility 'gzip'.
  + Recommended.
    Needed for the 'autopoint' program.
  + Homepage:
    https://www.gnu.org/software/gzip/
  + Download:
    https://ftp.gnu.org/gnu/gzip/
  + Pre-built package name:
    - On Debian and Debian-based systems: gzip,
    - On Red Hat distributions: gzip.
    - Other: https://repology.org/project/gzip/versions

* The compression utility 'bzip2'.
  + Recommended.
    Needed for the 'autopoint' program, if not configured with --without-bzip2.
  + Homepage:
    http://www.bzip.org/
  + Download:
    http://www.bzip.org/downloads.html
  + Pre-built package name:
    - On Debian and Debian-based systems: bzip2,
    - On Red Hat distributions: bzip2.
    - Other: https://repology.org/project/bzip2/versions

* The compression utility 'xz'.
  + Recommended.
    Needed for the 'autopoint' program, if not configured with --without-xz.
  + Homepage:
    https://tukaani.org/xz/
  + Download:
    https://tukaani.org/xz/
  + Pre-built package name:
    - On Debian and Debian-based systems: xz-utils,
    - On Red Hat distributions: xz.
    - Other: https://repology.org/project/xz/versions

* GNU libunistring
  + Optional.
    Needed for the line breaking in PO files and for xgettext.
    If not present, a subset of libunistring (included in this package) will
    be compiled into libgettextlib.
  + Homepage:
    https://www.gnu.org/software/libunistring/
  + Download:
    https://ftp.gnu.org/gnu/libunistring/
  + Pre-built package name:
    - On Debian and Debian-based systems: libunistring-dev,
    - On Red Hat distributions: libunistring-devel.
    - Other: https://repology.org/project/libunistring/versions
  + If it is installed in a nonstandard directory, pass the option
    --with-libunistring-prefix=DIR to 'configure'.

* CVS 1.11 or newer
  + Optional but deprecated.
    Needed by the 'autopoint' program, if configured with --with-cvs.
  + Homepage:
    https://www.nongnu.org/cvs/
  + Download:
    https://ftp.gnu.org/non-gnu/cvs/
  + Pre-built package name:
    - On Debian and Debian-based systems: cvs,
    - On Red Hat distributions: cvs.
    - Other: https://repology.org/project/cvs/versions


The following packages should be installed when GNU gettext is installed
(runtime dependencies, but not build dependencies):

None.


The following should be installed when GNU gettext is built, but are not
needed later, once it is installed (build dependencies, but not runtime
dependencies):

* A C runtime, compiler, linker, etc.
  + Mandatory.
    Either the platform's native 'cc', or GCC 3.1 or newer.
  + GCC Homepage:
    https://gcc.gnu.org/
  + Download:
    https://ftp.gnu.org/gnu/gcc/

* A 'make' utility.
  + Mandatory.
    Either the platform's native 'make' (for in-tree builds only),
    or GNU Make 3.79.1 or newer.
  + GNU Make Homepage:
    https://www.gnu.org/software/make/
  + Download:
    https://ftp.gnu.org/gnu/make/

* A shell
  + Mandatory.
    Either the platform's native 'sh', or Bash.
  + Homepage:
    https://www.gnu.org/software/bash/
  + Download:
    https://ftp.gnu.org/gnu/bash/

* Core POSIX utilities, including:
    [ basename cat chgrp chmod chown cp dd echo expand expr
    false hostname install kill ln ls md5sum mkdir mkfifo
    mknod mv printenv pwd rm rmdir sleep sort tee test touch
    true uname
  + Mandatory.
    Either the platform's native utilities, or GNU coreutils.
  + Homepage:
    https://www.gnu.org/software/coreutils/
  + Download:
    https://ftp.gnu.org/gnu/coreutils/

* The comparison utilities 'cmp' and 'diff'.
  + Mandatory.
    Either the platform's native utilities, or GNU diffutils.
  + Homepage:
    https://www.gnu.org/software/diffutils/
  + Download:
    https://ftp.gnu.org/gnu/diffutils/

* Grep.
  + Mandatory.
    Either the platform's native grep, or GNU grep.
  + Homepage:
    https://www.gnu.org/software/grep/
  + Download:
    https://ftp.gnu.org/gnu/grep/

* Awk.
  + Mandatory.
    Either the platform's native awk, mawk, or nawk, or GNU awk.
  + Homepage:
    https://www.gnu.org/software/gawk/
  + Download:
    https://ftp.gnu.org/gnu/gawk/
