This is the glibc ports repository, an add-on for the GNU C Library (glibc).
It contains code that is not maintained in the official glibc source tree.

This includes working ports to GNU/Linux on some machine architectures that
are not maintained in the official glibc source tree.  It also includes
some code once used by old libc ports now defunct, which has been abandoned
but may be useful for some future porter to examine.  It may also include
some optimized functions tailored for specific CPU implementations of an
architecture, to be selected using --with-cpu.

The ports repository is cooperatively maintained by volunteers on the
<libc-ports@sourceware.org> mailing list, and housed in the glibc CVS as a
module called "ports".  See http://www.gnu.org/software/libc/resources.html
for details on using CVS.  To report a bug in code housed in the ports
repository, please go to http://sources.redhat.com/bugzilla/ and file a bug
report under the glibc "ports" component.

An add-on for an individual port can be made from just the sysdeps/
subdirectories containing the port's code.  You may want to include a
README and Banner of your own talking about your port's code in particular,
rather than the generic ones here.

The real source code for any ports is found in the sysdeps/ subdirectories.
These should be exactly what would go into the main libc source tree if you
were to incorporate it directly.  The only exceptions are the files
sysdeps/*/preconfigure and sysdeps/*/preconfigure.in; these are fragments
used by this add-on's configure fragment.  The purpose of these is to set
$base_machine et al when the main libc configure's defaults are not right
for some machine.  Everything else can and should be done from a normal
sysdeps/.../configure fragment that is used only when the configuration
selects that sysdeps subdirectory.  Each port that requires some special
treatment before the sysdeps directory list is calculated, should add a
sysdeps/CPU/preconfigure file; this can either be written by hand or
generated by Autoconf from sysdeps/CPU/preconfigure.in, and follow the
rules for glibc add-on configure fragments.  No preconfigure file should do
anything on an unrelated configuration, so that disparate ports can be put
into a single add-on without interfering with each other.

Like all glibc add-ons, this must be used by specifying the directory in
the --enable-add-ons option when running glibc's configure script.


$Id$
