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).

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 contents
of the icuhtml CVS module, 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>
