.\" Hey, Emacs! This is -*-nroff-*- you know...
.\"
.\" pkgdata.8: manual page for the pkgdata utility
.\"
.\" Copyright (C) 2000-2002 IBM, Inc. and others.
.\"
.\" Manual page by Yves Arrouye <yves@realnames.com>.
.\" Modified by Steven R. Loomis <srl@jtcsv.com>.
.\"
.TH PKGDATA 8 "1 March 2002" "ICU MANPAGE" "ICU @VERSION@ Manual"
.SH NAME
.B pkgdata
\- package data for use by ICU
.SH SYNOPSIS
.B pkgdata
[
.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
]
[
.BI "\-v\fP, \fB\-\-verbose"
]
[
.BR "\-c\fP, \fB\-\-copyright"
|
.BI "\-C\fP, \fB\-\-comment" " comment"
]
[
.BI "\-m\fP, \fB\-\-mode" " mode"
]
.BI "\-p\fP, \fB\-\-name" " name"
.BI "\-O\fP, \fB\-\-bldopt" " options"
[
.BI "\-e\fP, \fB\-\-entrypoint" " name"
]
[
.BI "\-r\fP, \fB\-\-revision" " version"
]
[
.BI "\-M" " arg"
]
[
.BI "\-F\fP, \fB\-\-rebuild"
]
[
.BI "\-k\fP, \fB\-\-clean"
]
[
.BI "\-I\fP, \fB\-\-install"
]
[
.BI "\-n\fP, \fB\-\-nooutput"
]
[
.BI "\-s\fP, \fB\-\-sourcedir" " source"
]
[
.BI "\-d\fP, \fB\-\-destdir" " destination"
]
[
.BI "\-T\fP, \fB\-\-tempdir" " directory"
]
[
.IR file " .\|.\|."
]
.SH DESCRIPTION
.B pkgdata
takes a set of data files and packages them for use by ICU or
applications that use ICU. The typical reason to package files using
.B pkgdata
is to make their distribution easier and their loading by ICU faster
and less consuming of limited system resources such as file
descriptors.
Packaged data also allow applications to be distributed with fewer
resource files, or even with none at all if they link against the
packaged data directly.
.PP
.B pkgdata
supports a few different methods of packaging data that serve
different purposes.
.PP
The default packaging
.I mode
is
.BR common ,
or
.BR archive .
In this mode, the different data files are bundled together as an
architecture-dependent file that can later be memory mapped for use by
ICU. Data packaged using this mode will be looked up under the ICU
data directory. Such packaging is easy to use for applications resource
bundles, for example, as long as the application can install the
packaged file in the ICU data directory.
.PP
Another packaging mode is the
.BR dll ,
or
.BR library ,
mode, where the data files are compiled into a shared library. ICU
used to be able to dynamically load these shared libraries, but as of
ICU 2.0, such support has been removed. This mode is still useful for
two main purposes: to build ICU itself, as the ICU data is packaged as
a shared library by default; and to build resource bundles that are
linked to the application that uses them. Such resource bundles can
then be placed anywhere where the system's dynamic linker will be
looking for shared libraries, instead of being forced to live inside
the ICU data directory.
.PP
The
.BR static
packaging mode is similar to the shared library one except that it
produces a static library.
.\" Note that many platforms are not able to
.\" dynamically load symbols from static object files, so for this reason
.\" .BR udata_setAppData() 
.\" must be called
.\" to install this data. As a convenience, pkgdata will build a C source file
.\" and a header file. Given a data package named
.\" .IR name, in the output 
.\" directory will be created
.\" .IR name .c
.\" and
.\" .IR name .h with the single
.\" function
.\" .BR "udata_install_\fcIname\fB(UErrorCode *err)" ,
.\" where
.\" .I cname
.\" is
.\" .I name
.\" turned into a valid C identifier.
.\" The application need to call this function once. The error code returned
.\" is that of
.\" .BR udata_setAppData() .
.\" .PP
.\" Data pakackaged in a library, whether shared or static, 
.\" Subsequently, the application can access this data by passing
.\" .I name for the
.\" .I path 
.\" rgument to functions such as
.\" .BR Bures_open() .
.PP
Finally,
.B pkgdata
supports a
.B files
mode which simply copies the data files instead of packaging
them as a single file or library. This mode is mainly intended to
provide support for building ICU before it is packaged as separate
small packages for distribution with operating systems such as Debian
GNU/Linux for example. Please refer to the packaging documentation in
the ICU source distribution for further information on the use of this
mode.
.PP
.B pkgdata
relies on GNU
.BR make (1)
to do the packaging, and generates a makefile with rules to build,
package, install, or clean the appropriate data.
.SH OPTIONS
.TP
.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
Print help about usage and exit.
.TP
.BR "\-v\fP, \fB\-\-verbose"
Display extra informative messages during execution.
.TP
.BR "\-c\fP, \fB\-\-copyright"
Include a copyright notice in the binary data.
.TP
.BI "\-C\fP, \fB\-\-comment" " comment"
Includes the specified
.I comment
in the resulting data instead of the ICU copyright notice. 
.TP
.BI "\-m\fP, \fB\-\-mode" " mode"
Set the packaging
.I mode
to be used by 
.BR pkgdata .
The different modes and their meaning are explained in the
.B DESCRIPTION
section above. The valid mode names are
.BR common
(or
.BR archive ),
.BR dll
(or
.BR library ),
and
.BR files .
.TP
.BI "\-O\fP, \fB\-\-bldopt" " options"
Specify options for the builder. The builder is used internally by
.B pkgdata
to generate the correct packaged file. Such options include, but are
not limited to, setting variables used by
.BR make (1)
during the build of the packaged file.
.TP
.BI "\-p\fP, \fB\-\-name" " name"
Set the packaged file name to
.IR name .
This name is also used as the default entry point name after having
been turned into a valid C identifier.
.TP
.BI "\-e\fP, \fB\-\-entrypoint" " name"
Set the data entry point (used for linking against the data in a
shared library form) to
.IR name .
The default entry point name is the name set by the
.BI "\-n\fP, \fB\-\-name"
option.
.TP
.BI "\-r\fP, \fB\-\-revision" " version"
Enable versioning of the shared library produced in
.BR dll ,
or
.BR library ,
mode. The version number has the format
.I major\fP.\fIminor\fP.\fIpatchlevel
and all parts except for
.I major
are optional. If only
.I major
is supplied then the version is
assumed to be
.IR major .0
for versioning purposes.
.TP
.BI "\-M" " arg"
Pass
.I arg
to 
.BR make (1).
.TP
.BI "\-F\fP, \fB\-\-rebuild"
Force the rebuilding of all data and their repackaging.
.TP
.BI "\-k\fP, \fB\-\-clean"
Clean temporary files and other build residues.
.TP
.BI "\-I\fP, \fB\-\-install"
Install the packaged file (or all the files in the
.B files
mode). If the variable
.B DESTDIR
is set it will be used for installation.
.TP
.BI "\-n\fP, \fB\-\-nooutput"
Do not produce any output but simply a list of affected files.
.TP
.BI "\-s\fP, \fB\-\-sourcedir" " source"
Set the source directory to
.IR source .
The default source directory is the current directory.
.TP
.BI "\-d\fP, \fB\-\-destdir" " destination"
Set the destination directory to
.IR destination .
The default destination directory is the current directory.
.TP
.BI "\-T\fP, \fB\-\-tempdir" " directory"
Set the directory used to generate temporary files to
.IR directory .
The default temporary directory is the same as the destination
directory
as set by the
.BI "\-d\fP, \fB\-\-destdir"
option.
.SH AUTHORS
Steven Loomis
.br
Yves Arrouye
.SH VERSION
@VERSION@
.SH COPYRIGHT
Copyright (C) 2000-2002 IBM, Inc. and others.

