ICU is packaged into a number of small, interdependent packages. This
file describes what these packages are, what their name should be
like, and what their contents are. It is useful as a reference and a
guide when packaging ICU on a new system.

+ List of ICU packages.

ICU is distributed as the following packages:

- ICU libraries. This package contains the runtime libraries needed by
applications that use ICU. All the other packages require this package
to be installed.
- ICU. This package contains the converters data, the timezones data,
and all the ICU tools.
- ICU locales. This package adds locales and break data.
- ICU development. This package contains the files necessary to build
applications that use ICU, i.e. header files, links to shared
libraries used by the linker, static libraries, etc... It also
contains sample applications and documentation.
- ICU docs. This package contains further documentation for ICU,
including a complete API reference.
- ICU data. This package contains the source for the compiled data
contained by the ICU package.
- ICU international data. This package contains the source for the
compiled data contained by the ICU locales package.

In this file, we will refer to Autoconf variables as in $(bindir). In
addition to these, we will use the following variables to denote
ICU-specific directories or information:

  VERSION       ICU's dotted version number, e.g. 1.6.0.1 as of this
		writing.

  ICUDATADIR	The directory where portable ICU data are. This is
	        defined as $(datadir)/icu/$(VERSION).
  ICULIBDIR	The directory where platform-specific ICU data
		are. This is defined as $(libdir)/icu/$(VERSION).
  ICUSYSCONFDIR	The directory where ICU configuration files are. This
		is defined as $(sysconfdir)/icu.

When referring to libraries, .so will be used to denote the extension
of a shared library, and .a to denote the extension of a static
library. These extensions will actually be different on some platforms.

+ Configuration and compilation of ICU

ICU should be configured with the following options:

  --with-data-packaging=files
  --disable-rpath
  --enable-shared
  --enable-static
  --without-samples

in addition to platform-specific settings (like a specific mandir or
sysconfdir). Note that the use of --disable-rpath assumes that the
packaging is made for a standard location, or that the package
installation/deinstallation will correctly manage the configuration
of the system's dyanmic loader. This is the right way of doing things.

The configure script invokation should also be done with

  CFLAGS="-O2"

set, as in:

  $ CFLAGS="-O2" ./configure ...

The files packaging mode is chosen because it offers the maximum
flexibility. Packages can be split easily, and system administrators
can add converters, aliases, and other resources with little
effort. Ideally, the ICU build will be modified to allow for distributing a
libicudata.so with all the converters and locales, but indexes and aliases
as separate files. But for now, this is the easiest way to get started.

+ The ICU libraries package

The ICU libraries package is typically named `libicuXX' where XX is
the major number of ICU's libraries. This number is ICU's version
number multiplied by 10 and rounded down to the nearest integer (it is
also the value of the LIB_VERSION_MAJOR configure substitution
variable). For example, for ICU 1.6.0.1, it is 16, so the package name
is `libicu16'. The major version is part of the package name to allow
for the simultaneous installation of different ICU releases.

This package contains:

- All the shared libraries, and their major number symbolic link, but
not the .so symbolic link that is only used at link time (this one is
part of the development package). These are $(libdir)/libicu*.so.* and
$(libdir)/libustdio.so.* at the time of this writing.

+ The ICU package

The ICU package is simply named `icu'.  It provides data used by the ICU
libraries package and commands to create and manipulate that data.

This package contains:

- The Unicode data files (uprops.dat and unames.dat as of this writing).
- The time zones data files (tz.dat).
- All the binary data files for converters (.cnv files).
- All the ICU commands.
- The manual pages for ICU commands and file formats.

+ The ICU locales package

The ICU locales package is named `icu-locales'. It provides data used by
internationalization support in ICU.

This package contains:

- All the data for locales in ICU (.dat files).
- All the break data for specific locales (.brk files).

+ The ICU development package

The ICU developpment package is named `libicu-dev'. It provides all
the files necessary to write applications that use ICU, along with
examples and some documentation.

This package contains:

- The /usr/include/unicode directory which contains all the ICU
headers.
- The .so symbolic links used by the linker to link against the
latest version of the libraries.
- A sample Makefile fragment that can be included by applications
using ICU, to faciliate their building, along with a platform-specific
configuration file included by this fragment.
- The sample applications from the ICU source tree, in an appropriate
location for the system that the package is installed on (for example,
on Debian, in /usr/share/doc/libicu-dev/examples).

This package depends on the ICU libraries package with the exact same
version, since it provides .so symbolic links to the latest libraries.

+ The ICU docs package

The ICU docs package is named `libicu-doc'. It contains the files
generated by doxygen when the `make doc' command is executed, in a
location appropriate for the system that the package is installed on.

+ The ICU data package

The ICU data package is named `icu-data'. It contains source files for
the data found in the ICU package. These files are installed in
$(ICUDATADIR).

+ The ICU international data package

The ICU data package is named `icu-i18ndata'. It contains source files for
the dat founf in the ICU locales package. These files are installed in
$(ICUDATADIR).

----
Yves Arrouye <yves@realnames.com>
