.\" Hey, Emacs! This is -*-nroff-*- you know...
.\"
.\" makeconv.1: manual page for the makeconv utility
.\"
.\" Copyright (C) 2000-2002 IBM, Inc. and others.
.\"
.\" Manual page by Yves Arrouye <yves@realnames.com>.
.\"
.TH MAKECONV 1 "16 April 2002" "ICU MANPAGE" "ICU @VERSION@ Manual"
.SH NAME
.B makeconv
\- compile a converter table
.SH SYNOPSIS
.B makeconv
[
.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
]
[
.BR "\-c\fP, \fB\-\-copyright"
]
[
.BR "\-v\fP, \fB\-\-verbose"
]
[
.BI "\-d\fP, \fB\-\-destdir" " destination"
]
.IR convertertable " .\|.\|."
.SH DESCRIPTION
.B makeconv
converts the ICU converter table
.I convertertable
into a binary file. The binary file has the same base name as
.I convertertable
but has a
.B .cnv
extension (instead of the typical
.B .ucm
extension of the
.I convertertable
file).
This binary file can then be read directly by ICU, or used by
.BR pkgdata (1)
for incorporation into a larger archive or library.
.PP
The
.I convertertable
must be in the ICU ucm (Unicode Codepage Mapping) format in order to
be understood by
.BR makeconv .
The ICU ucm format is similar to the IBM NLTC upmap/tpmap/rpmap files.
Comments in the
.I convertable
are handled as follows. If a comment (starting with a `#' sign) that
is after some text does contain the fallback indicator `|' then only
the text starting with the `#' sign, and ending before the `|' sign,
is ignored.
Otherwise, or if the comment is the first thing on the line,
the comment runs up to the end of the line. This special
handling of comments is to accomodate the practice of putting fallback
information in comments in the strict IBM NLTC ucmap format.
.PP
Note that new converters will be automatically found by ICU after their
installation in ICU's data directory. They do not need to
be listed in the
.BR convrtrs.txt (5)
converters aliases file in order to be available to applications using ICU.
They do need to be listed there if one wants to give them aliases, or
tags, though.
.SH OPTIONS
.TP
.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
Print help about usage and exit.
.TP
.BR "\-c\fP, \fB\-\-copyright"
Include a copyright notice in the binary data.
.TP
.BR "\-v\fP, \fB\-\-verbose"
Display extra informative messages during execution.
.TP
.BI "\-d\fP, \fB\-\-destdir" " destination"
Set the destination directory to
.IR destination .
The default destination directory is specified by the environment variable
.BR ICU_DATA .
.SH CAVEATS
If an existing converter table is changed and recompiled using
.BR makeconv ,
the resulting binary file must be packaged in the same way that it was
packaged initially. For example, if converters were grouped together in
an archive or a library with
.BR pkgdata (1),
then the archive or library must be rebuilt with the new binary file.
A standalone binary converter file will not take precedence over a
packaged one.
.SH ENVIRONMENT
.TP 10
.B ICU_DATA
Specifies the directory containing ICU data. Defaults to
.BR @thepkgicudatadir@/@PACKAGE@/@VERSION@/ .
Some tools in ICU depend on the presence of the trailing slash. It is thus
important to make sure that it is present if
.B ICU_DATA
is set.
.SH VERSION
@VERSION@
.SH COPYRIGHT
Copyright (C) 2000 IBM, Inc. and others.
.SH SEE ALSO
.BR convrtrs.txt (5) 
.br
.BR pkgdata (1)

