.\" Hey, Emacs! This is -*-nroff-*- you know...
.\"
.\" pkgdata.1: manual page for the pkgdata utility
.\"
.\" Copyright (C) 2016 and later: Unicode, Inc. and others.
.\" License & terms of use: http://www.unicode.org/copyright.html
.\" Copyright (C) 2000-2009 IBM, Inc. and others.
.\"
.\" Manual page by Yves Arrouye <yves@realnames.com>.
.\" Modified by Michael Ow <mow@us.ibm.com>.
.\"
.TH PKGDATA 1 "6 February 2009" "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 "\-F\fP, \fB\-\-rebuild"
]
[
.BI "\-I\fP, \fB\-\-install"
]
[
.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
builds, packages, installs, or cleans the appropriate data based on the options given
without the need to call GNU
.BR make
anymore.
.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. Note: If 
.BR icu-config 
is available, then this option is not needed.
.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 "\-F\fP, \fB\-\-rebuild"
Force the rebuilding of all data and their repackaging.
.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 "\-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-2009 IBM, Inc. and others.

