\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename udunits2.info @include version.texi @settitle UDUNITS @value{VERSION} Manual @c %**end of header @dircategory Science @direntry * udunits-2: (udunits2). The Unidata package for units of physical quantities. @end direntry @copying @include LICENSE @end copying @titlepage @title The UDUNITS-2 Package @author Steven R. Emmerson @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @ifnottex @node Top, Introduction, (dir), (dir) @top UDUNITS-2 This manual describes the UDUNITS-2 package, which contains a C library for units of physical quantities and a unit-definition and value-conversion utility. @insertcopying @end ifnottex @menu * Introduction:: Introduction * Differences:: How this package differs from the original UDUNITS * Obtain:: Obtaining this package * Install:: Installing this package * Support:: Support for this package * Complete Index:: Complete index @end menu @node Introduction, Differences, Top, Top @chapter Introduction @cindex Introduction The UDUNITS-2 package provides support for units of physical quantities. Its three main components are: 1) @ref{Top, , a C library, udunits2lib} for units of physical quantities; 2) @ref{Top, , a utility, udunits2prog}; for obtaining the definition of a unit and for converting numeric values between compatible units; and 3) an extensive database of units. @node Differences, Obtain, Introduction, Top @chapter How This Package Differs from the Original @code{UDUNITS} Package The @code{UDUNIT-2} package differs from the original @code{UDUNITS} package in the following ways: @itemize @bullet @item @strong{Support for non-ASCII characters:} The original @code{UDUNITS} package only supports the ASCII character set. The @code{UDUNITS-2} package supports the following character sets: ASCII, ISO 8859-1 (Latin-1), and the UTF-8 encoding of ISO 10646 (Unicode). This means that unit string specifications like "@code{µ°F·Ω⁻¹}" are now supported (your viewer must support UTF-8 to display this string correctly). @item @strong{Support for logarithmic units:} The unit string specification "@code{0.1 lg(re 1 mW)}" specifies a deciBel unit with a one milliwatt reference level. Such units are fully integrated into the package and all meaningful operations and conversions are supported. @item @strong{Persistent value converters:} It is now possible to obtain a @emph{converter} data-object, which can be used to convert numeric values in one unit to numeric values in another, compatible unit. The values can be @code{float}, @code{double}, or one-dimensional arrays of @code{float}s or @code{double}s. @item @strong{Improved API:} Due to the above changes, it was not possible to keep the application programming interface (API) of the original @code{UDUNITS} package. The new interface, however, is easily understood and easy to use. To support backward comptibility, the package does contain a version 1 C API, which uses the version 2 library. @item @strong{XML unit database:} The unit database is encoded using human-readable XML rather than a custom format. The XML parser included in the package supports an @emph{} element to allow easy and convenient customization. @item @strong{No Fortran or Perl API:} Interfaces for these languages have not yet been created. Contact @email{support-udunits@@unidata.ucar.edu} if you are interested in helping to create these interfaces. @end itemize One thing that has not changed is that almost all unit string specifications understood by the original @code{UDUNITS} package are also understood by the new @code{UDUNITS-2} package. The one exception is the symbol @code{g}, which in the original package was associated with standard free fall (a unit of accelleration) but which is associated with gram in the new package. @node Obtain, Install, Differences, Top @chapter Obtaining this Package @cindex obtaining this package Get this package from its download-page at @uref{http://www.unidata.ucar.edu/downloads/udunits/} and unpack it in an appropriate place, e.g., @example cd /usr/local/src gunzip -c udunits-@value{VERSION}.tar.gz | pax -r @end example @node Install, Support, Obtain, Top @chapter Installing this Package @cindex installing this package @menu * Short:: Short intallation instructions * Long:: Long installation instructions * What:: What gets installed @end menu @node Short, Long, , Install @section Short Installation Instructions Not all development enviroments can build and install this package. See the long instructions in the next section for details. The following assumes that you are familiar with autoconf-based package-installation. If you're not, then follow the long instructions in the next section. @example ./configure [--prefix=@var{root}] [--disable-shared] [CC=@var{path}] make make check # optional; requires CUNIT installation make install make install-info install-html install-pdf make clean @end example By default, the installation root is @code{/usr/local}. If you encounter problems, then follow the instructions in the next section. @node Long, What, Short, Install @section Long Installation Instructions @enumerate @item Go to the top-level source-directory of this package, e.g., @example cd udunits-@value{VERSION} @end example @item Because some @code{make} utilities cannot build this package correctly, locate the operating system that is closest to yours in the following table and determine the @var{make} utility that you will use. @quotation @include make.texi @end quotation @item If necessary, clean-up from a previous installation attempt by making the @code{distclean} target using the @var{make} utility from step 2: @example @var{make} distclean @end example @item Because some compilers cannot build this package correctly, locate the operating system closest to yours in the following table and determine the compiler that you will use and any required option for the @code{configure} script. @quotation @include success.texi @end quotation The option @code{--disable-shared} causes the build process to create a static library only: a sharable library is not created. This option is necessary if the @code{libtool} utility that's included in this package can't build a sharable library using the given compiler. The following table lists the build environments that do not work --- so don't use them: @quotation @include failure.texi @end quotation @item Execute the @code{configure} script. Specify the installation prefix, the compiler from the previous step, and any required option. For example, if you are on an HP-UX system and want to use the @code{/bin/c89} compiler and install under @code{/opt}, then the following command is appropriate: @example ./configure --prefix=/opt --disable-shared CC=/bin/c89 @end example If the installation prefix is not specified, then the default is to install under @code{/usr/local}. If the compiler isn't specified, then the default is to use @code{gcc}. @item Build this package by making the default target using the @var{make} utility from step 2: @example @var{make} @end example @item If you wish to verify that this package works correctly, then make the @code{check} target using the @var{make} utility from step 2: @example @var{make} check @end example This step is only effective if the @code{configure} script found an installed @code{CUNIT} unit-testing package. If that package wasn't found, then the above command will quickly exit without testing this package. @item Install the @ref{Top, , library, udunits2lib}, @ref{Top, , utility, udunits2prog}, header-files, and units-database by making the @code{install} target using the @var{make} utility from step 2: @example @var{make} install @end example @item If desired, install the documentation by making one or more of the following targets using the @var{make} utility from step 2: @example @var{make} install-info install-html install-pdf @end example @item Clean up by making the @code{clean} target using the @var{make} utility from step 2: @example @var{make} clean @end example @end enumerate @node What, , Long, Install @section What Gets Installed By default, the following files are created or installed under the installation directory: @example bin/: udunits2 # Unit @ref{Top, , utility, udunits2prog} include/: converter.h # API for value converters udunits2.h # API for units lib/: libudunits2.a # Static unit @ref{Top, , library, udunits2lib} libudunits2.la # libtool(1) reference for unit @ref{Top, , library, udunits2lib} libudunits2.so # Link to shared @ref{Top, , library, udunits2lib} libudunits2.so.0 # Link to shared @ref{Top, , library, udunits2lib} libudunits2.so.0.0.0 # Shared @ref{Top, , library, udunits2lib} share/: doc # Directory. Created if it doesn't exist info # Directory. Created if it doesn't exist udunits # Directory. Created if it doesn't exist share/doc: udunits # Directory. Created if it doesn't exist share/doc/udunits: udunits2.html # HTML documentation on this package udunits2lib.html # HTML documentation on the unit @ref{Top, , library, udunits2lib} udunits2lib.pdf # PDF documentation on the unit @ref{Top, , library, udunits2lib} udunits2.pdf # PDF documentation on this package udunits2prog.html # HTML documentation on the unit @ref{Top, , utility, udunits2prog} udunits2prog.pdf # PDF documentation on the unit @ref{Top, , utility, udunits2prog} share/info: dir # Top-level "info" file. Created if it doesn't exist udunits2.info # INFO documentation on this package udunits2lib.info # INFO documentation on the unit @ref{Top, , library, udunits2lib} udunits2prog.info # INFO documentation on the unit @ref{Top, , utility, udunits2prog} share/udunits: udunits2.xml # Default unit database udunits2-accepted.xml # Units accepted for use with the SI udunits2-base.xml # SI base units udunits2-common.xml # Common, non-SI units udunits2-derived.xml # Derived units of the SI udunits2-prefixes.xml # SI unit prefixes @end example @node Support, Complete Index, Install, Top @chapter Support for this Package @cindex support @cindex package, support The home-page for this package can be found at @uref{http://www.unidata.ucar.edu/software/udunits/}. Bug reports should be sent to @email{support-udunits@@unidata.ucar.edu}. @node Complete Index, , Support, Top @unnumbered Index @printindex cp @bye