update from main archive 960807
authordrepper <drepper>
Thu, 8 Aug 1996 00:30:48 +0000 (00:30 +0000)
committerdrepper <drepper>
Thu, 8 Aug 1996 00:30:48 +0000 (00:30 +0000)
INSTALL

diff --git a/INSTALL b/INSTALL
index 1476bd8..25ede5f 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -4,16 +4,13 @@ Library Maintenance
 How to Install the GNU C Library
 ================================
 
-   Installation of the GNU C library is relatively simple.
-
-   You need the latest version of GNU `make'.  Modifying the GNU C
-Library to work with other `make' programs would be so hard that we
-recommend you port GNU `make' instead.  *Really.*
+   Installation of the GNU C library is relatively simple, but usually
+requires several GNU tools to be installed already.
 
    To configure the GNU C library for your system, run the shell script
 `configure' with `sh'.  Use an argument which is the conventional GNU
 name for your system configuration--for example, `sparc-sun-sunos4.1',
-for a Sun 4 running Sunos 4.1.  *Note Installation:
+for a Sun 4 running SunOS 4.1.  *Note Installation:
 (gcc.info)Installation, for a full description of standard GNU
 configuration names.  If you omit the configuration name, `configure'
 will try to guess one for you by inspecting the system it is running
@@ -21,46 +18,6 @@ on.  It may or may not be able to come up with a guess, and the its
 guess might be wrong.  `configure' will tell you the canonical name of
 the chosen configuration before proceeding.
 
-   The GNU C Library currently supports configurations that match the
-following patterns:
-
-     alpha-dec-osf1
-     i386-ANYTHING-bsd4.3
-     i386-ANYTHING-gnu
-     i386-ANYTHING-isc2.2
-     i386-ANYTHING-isc3.N
-     i386-ANYTHING-sco3.2
-     i386-ANYTHING-sco3.2v4
-     i386-ANYTHING-sysv
-     i386-ANYTHING-sysv4
-     i386-force_cpu386-none
-     i386-sequent-bsd
-     i960-nindy960-none
-     m68k-hp-bsd4.3
-     m68k-mvme135-none
-     m68k-mvme136-none
-     m68k-sony-newsos3
-     m68k-sony-newsos4
-     m68k-sun-sunos4.N
-     mips-dec-ultrix4.N
-     mips-sgi-irix4.N
-     sparc-sun-solaris2.N
-     sparc-sun-sunos4.N
-
-   While no other configurations are supported, there are handy aliases
-for these few.  (These aliases work in other GNU software as well.)
-
-     decstation
-     hp320-bsd4.3 hp300bsd
-     i386-sco
-     i386-sco3.2v4
-     i386-sequent-dynix
-     i386-svr4
-     news
-     sun3-sunos4.N sun3
-     sun4-solaris2.N sun4-sunos5.N
-     sun4-sunos4.N sun4
-
    Here are some options that you should specify (if appropriate) when
 you run `configure':
 
@@ -76,8 +33,15 @@ you run `configure':
      building the GNU C Library.  On some systems, the library may not
      build properly if you do *not* use `gas'.
 
+`--with-gnu-binutils'
+     This option implies both `--with-gnu-ld' and `--with-gnu-as'.  On
+     systems where GNU tools are the system tools, there is no need to
+     specify this option.  These include GNU, GNU/Linux, and free BSD
+     systems.
+
+`--without-fp'
 `--nfp'
-     Use this option if your computer lacks hardware floating point
+     Use this option if your computer lacks hardware floating-point
      support.
 
 `--prefix=DIRECTORY'
@@ -89,6 +53,29 @@ you run `configure':
      subdirectories of `DIRECTORY'.  (You can also set this in
      `configparms'; see below.)
 
+`--enable-shared'
+`--disable-shared'
+     Enable or disable building of an ELF shared library on systems that
+     support it.  The default is to build the shared library on systems
+     using ELF when the GNU `binutils' are available.
+
+`--enable-profile'
+`--disable-profile'
+     Enable or disable building of the profiled C library, `-lc_p'.  The
+     default is to build the profiled library.  You may wish to disable
+     it if you don't plan to do profiling, because it doubles the build
+     time of compiling just the unprofiled static library.
+
+`--enable-omitfp'
+     Enable building a highly-optimized but possibly undebuggable
+     static C library.  This causes the normal static and shared (if
+     enabled) C libraries to be compiled with maximal optimization,
+     including the `-fomit-frame-pointer' switch that makes debugging
+     impossible on many machines, and without debugging information
+     (which makes the binaries substantially smaller).  An additional
+     static library is compiled with no optimization and full debugging
+     information, and installed as `-lc_g'.
+
    The simplest way to run `configure' is to do it in the directory
 that contains the library sources.  This prepares to build the library
 in that very directory.
@@ -141,57 +128,101 @@ work with object files for the target you configured for.
 in the GNU C compiler, so you may need to compile the library with GCC.
 (In fact, all of the existing complete ports require GCC.)
 
-   The current release of the C library contains some header files that
-the compiler normally provides: `stddef.h', `stdarg.h', and several
-files with names of the form `va-MACHINE.h'.  The versions of these
-files that came with older releases of GCC do not work properly with
-the GNU C library.  The `stddef.h' file in release 2.2 and later of GCC
-is correct.  If you have release 2.2 or later of GCC, use its version
-of `stddef.h' instead of the C library's.  To do this, put the line
-`override stddef.h =' in `configparms'.  The other files are corrected
-in release 2.3 and later of GCC.  `configure' will automatically detect
-whether the installed `stdarg.h' and `va-MACHINE.h' files are
-compatible with the C library, and use its own if not.
-
-   There is a potential problem with the `size_t' type and versions of
-GCC prior to release 2.4.  ANSI C requires that `size_t' always be an
-unsigned type.  For compatibility with existing systems' header files,
-GCC defines `size_t' in `stddef.h' to be whatever type the system's
-`sys/types.h' defines it to be.  Most Unix systems that define `size_t'
-in `sys/types.h', define it to be a signed type.  Some code in the
-library depends on `size_t' being an unsigned type, and will not work
-correctly if it is signed.
-
-   The GNU C library code which expects `size_t' to be unsigned is
-correct.  The definition of `size_t' as a signed type is incorrect.
-Versions 2.4 and later of GCC always define `size_t' as an unsigned
-type, and GCC's `fixincludes' script massages the system's
-`sys/types.h' so as not to conflict with this.
-
-   In the meantime, we work around this problem by telling GCC
-explicitly to use an unsigned type for `size_t' when compiling the GNU C
-library.  `configure' will automatically detect what type GCC uses for
-`size_t' arrange to override it if necessary.
-
-   To build the library, type `make lib'.  This will produce a lot of
-output, some of which looks like errors from `make' (but isn't).  Look
-for error messages from `make' containing `***'.  Those indicate that
-something is really wrong.
+   To build the library and related programs, type `make'.  This will
+produce a lot of output, some of which may look like errors from `make'
+(but isn't).  Look for error messages from `make' containing `***'.
+Those indicate that something is really wrong.
 
    To build and run some test programs which exercise some of the
-library facilities, type `make tests'.  This will produce several files
+library facilities, type `make check'.  This will produce several files
 with names like `PROGRAM.out'.
 
    To format the `GNU C Library Reference Manual' for printing, type
-`make dvi'.  To format the Info version of the manual for on line
-reading with `C-h i' in Emacs or with the `info' program, type
-`make info'.
+`make dvi'.
 
    To install the library and its header files, and the Info files of
-the manual, type `make install', after setting the installation
-directories in `configparms'.  This will build things if necessary,
+the manual, type `make install'.  This will build things if necessary,
 before installing them.
 
+Recommended Tools to Install the GNU C Library
+----------------------------------------------
+
+   We recommend installing the following GNU tools before attempting to
+build the GNU C library:
+
+   * `make' 3.75
+
+     You need the latest version of GNU `make'.  Modifying the GNU C
+     Library to work with other `make' programs would be so hard that we
+     recommend you port GNU `make' instead.  *Really.* We recommend
+     version GNU `make' version 3.75 or later.
+
+   * GCC 2.7.2
+
+     On most platforms, the GNU C library can only be compiled with the
+     GNU C compiler.  We recommend GCC version 2.7.2 or later; earlier
+     versions may have problems.
+
+   * `binutils' 2.6
+
+     Using the GNU `binutils' (assembler, linker, and related tools) is
+     preferable when possible, and they are required to build an ELF
+     shared C library.  We recommend `binutils' version 2.6 or later;
+     earlier versions are known to have problems.
+
+Supported Configurations
+------------------------
+
+   The GNU C Library currently supports configurations that match the
+following patterns:
+
+     alpha-dec-osf1
+     alpha-ANYTHING-linux
+     alpha-ANYTHING-linuxecoff
+     iX86-ANYTHING-bsd4.3
+     iX86-ANYTHING-gnu
+     iX86-ANYTHING-isc2.2
+     iX86-ANYTHING-isc3.N
+     iX86-ANYTHING-linux
+     iX86-ANYTHING-sco3.2
+     iX86-ANYTHING-sco3.2v4
+     iX86-ANYTHING-sysv
+     iX86-ANYTHING-sysv4
+     iX86-force_cpu386-none
+     iX86-sequent-bsd
+     i960-nindy960-none
+     m68k-hp-bsd4.3
+     m68k-mvme135-none
+     m68k-mvme136-none
+     m68k-sony-newsos3
+     m68k-sony-newsos4
+     m68k-sun-sunos4.N
+     mips-dec-ultrix4.N
+     mips-sgi-irix4.N
+     sparc-sun-solaris2.N
+     sparc-sun-sunos4.N
+
+   Each case of `iX86' can be `i386', `i486', `i586', or `i686'..  All
+of those configurations produce a library that can run on any of these
+processors.  The library will be optimized for the specified processor,
+but will not use instructions not available on all of them.
+
+   While no other configurations are supported, there are handy aliases
+for these few.  (These aliases work in other GNU software as well.)
+
+     decstation
+     hp320-bsd4.3 hp300bsd
+     i486-gnu
+     i586-linux
+     i386-sco
+     i386-sco3.2v4
+     i386-sequent-dynix
+     i386-svr4
+     news
+     sun3-sunos4.N sun3
+     sun4-solaris2.N sun4-sunos5.N
+     sun4-sunos4.N sun4
+
 Reporting Bugs
 ==============
 
@@ -246,8 +277,10 @@ But what they do is fairly straightforward, and only requires that you
 define a few variables in the right places.
 
    The library sources are divided into subdirectories, grouped by
-topic.  The `string' subdirectory has all the string-manipulation
-functions, `stdio' has all the standard I/O functions, etc.
+topic.
+
+   The `string' subdirectory has all the string-manipulation functions,
+`math' has all the mathematical functions, etc.
 
    Each subdirectory contains a simple makefile, called `Makefile',
 which defines a few `make' variables and then includes the global
@@ -283,7 +316,9 @@ The basic variables that a subdirectory makefile defines are:
      data in a file called `TEST-PROGRAM.input'; it will be given to
      the test program on its standard input.  If a test program wants
      to be run with arguments, put the arguments (all on a single line)
-     in a file called `TEST-PROGRAM.args'.
+     in a file called `TEST-PROGRAM.args'.  Test programs should exit
+     with zero status when the test passes, and nonzero status when the
+     test indicates a bug in the library or error in building.
 
 `others'
      The names of "other" programs associated with this section of the
@@ -362,18 +397,24 @@ So the final list is `unix/bsd/vax unix/bsd unix/inet unix posix'.
    `sysdeps' has two "special" subdirectories, called `generic' and
 `stub'.  These two are always implicitly appended to the list of
 subdirectories (in that order), so you needn't put them in an `Implies'
-file, and you should not create any subdirectories under them.
-`generic' is for things that can be implemented in machine-independent
-C, using only other machine-independent functions in the C library.
-`stub' is for "stub" versions of functions which cannot be implemented
-on a particular machine or operating system.  The stub functions always
-return an error, and set `errno' to `ENOSYS' (Function not
-implemented).  *Note Error Reporting::.
+file, and you should not create any subdirectories under them intended
+to be new specific categories.  `generic' is for things that can be
+implemented in machine-independent C, using only other
+machine-independent functions in the C library.  `stub' is for "stub"
+versions of functions which cannot be implemented on a particular
+machine or operating system.  The stub functions always return an
+error, and set `errno' to `ENOSYS' (Function not implemented).  *Note
+Error Reporting::.
 
    A source file is known to be system-dependent by its having a
-version in `generic' or `stub'; every system-dependent function should
-have either a generic or stub implementation (there is no point in
-having both).
+version in `generic' or `stub'; every generally-available function whose
+implementation is system-dependent in should have either a generic or
+stub implementation (there is no point in having both).  Some rare
+functions are only useful on specific systems and aren't defined at all
+on others; these do not appear anywhere in the system-independent
+source code or makefiles (including the `generic' and `stub'
+directories), only in the system-dependent `Makefile' in the specific
+system's subdirectory.
 
    If you come across a file that is in one of the main source
 directories (`string', `stdio', etc.), and you want to write a machine-
@@ -629,18 +670,106 @@ generated are `ioctls.h', `errnos.h', `sys/param.h', and `errlist.c'
 Contributors to the GNU C Library
 =================================
 
-   The GNU C library was written almost entirely by Roland McGrath, who
-now maintains it.  Some parts of the library were contributed or worked
-on by other people.
+   The GNU C library was written originally by Roland McGrath.  Some
+parts of the library were contributed or worked on by other people.
 
    * The `getopt' function and related code were written by Richard
      Stallman, David J. MacKenzie, and Roland McGrath.
 
-   * Most of the math functions are taken from 4.4 BSD; they have been
-     modified only slightly to work with the GNU C library.  The
-     Internet-related code (most of the `inet' subdirectory) and several
-     other miscellaneous functions and header files have been included
-     with little or no modification.
+   * The merge sort function `qsort' was written by Michael J. Haertel.
+
+   * The quick sort function used as a fallback by `qsort' was written
+     by Douglas C. Schmidt.
+
+   * The memory allocation functions `malloc', `realloc' and `free' and
+     related code were written by Michael J. Haertel.
+
+   * Fast implementations of many of the string functions (`memcpy',
+     `strlen', etc.) were written by Torbjorn Granlund.
+
+   * The `tar.h' header file was written by David J. MacKenzie.
+
+   * The port to the MIPS DECStation running Ultrix 4
+     (`mips-dec-ultrix4') was contributed by Brendan Kehoe and Ian
+     Lance Taylor.
+
+   * The DES encryption function `crypt' and related functions were
+     contributed by Michael Glad.
+
+   * The `ftw' function was contributed by Ian Lance Taylor.
+
+   * The startup code to support SunOS shared libraries was contributed
+     by Tom Quinn.
+
+   * The `mktime' function was contributed by Paul Eggert.
+
+   * The port to the Sequent Symmetry running Dynix version 3
+     (`i386-sequent-bsd') was contributed by Jason Merrill.
+
+   * The timezone support code is derived from the public-domain
+     timezone package by Arthur David Olson and his many contributors.
+
+   * The port to the DEC Alpha running OSF/1 (`alpha-dec-osf1') was
+     contributed by Brendan Kehoe, using some code written by Roland
+     McGrath.
+
+   * The port to SGI machines running Irix 4 (`mips-sgi-irix4') was
+     contributed by Tom Quinn.
+
+   * The port of the Mach and Hurd code to the MIPS architecture
+     (`mips-ANYTHING-gnu') was contributed by Kazumoto Kojima.
+
+   * The floating-point printing function used by `printf' and friends
+     and the floating-point reading function used by `scanf', `strtod'
+     and friends were written by Ulrich Drepper.  The multi-precision
+     integer functions used in those functions are taken from GNU MP,
+     which was contributed by Torbjorn Granlund.
+
+   * The internationalization support in the library, and the support
+     programs `locale' and `localedef', were written by Ulrich Drepper.
+     Ulrich Drepper adapted the support code for message catalogs
+     (`libintl.h', etc.) from the GNU `gettext' package, which he also
+     wrote.  He also contributed the `catgets' support and the entire
+     suite of multi-byte and wide-character support functions
+     (`wctype.h', `wchar.h', etc.).
+
+   * The implementations of the `nsswitch.conf' mechanism and the files
+     and DNS backends for it were designed and written by Ulrich
+     Drepper and Roland McGrath, based on a backend interface defined
+     by Peter Eriksson.
+
+   * The port to Linux i386/ELF (`i386-ANYTHING-linux') was contributed
+     by Ulrich Drepper, based in large part on work done in Hongjiu
+     Lu's Linux version of the GNU C Library.
+
+   * The port to Linux/m68k (`m68k-ANYTHING-linux') was contributed by
+     Andreas Schwab.
+
+   * Richard Henderson contributed the ELF dynamic linking code and
+     other support for the Alpha processor.
+
+   * David Mosberger-Tang contributed the port to Linux/Alpha
+     (`alpha-ANYTHING-linux').
+
+   * Stephen R. van den Berg contributed a highly-optimized `strstr'
+     function.
+
+   * Ulrich Drepper contributed the `hsearch' and `drand48' families of
+     functions; reentrant `...`_r'' versions of the `random' family;
+     System V shared memory and IPC support code; and several
+     highly-optimized string functions for iX86 processors.
+
+   * The math functions are taken from `fdlibm-5.1' by Sun
+     Microsystems, as modified by J.T. Conklin, Ian Lance Taylor,
+     Ulrich Drepper, Andreas Schwab, and Roland McGrath.
+
+   * The `libio' library used to implement `stdio' functions on some
+     platforms was written by Per Bothner and modified by Ulrich
+     Drepper.
+
+   * The Internet-related code (most of the `inet' subdirectory) and
+     several other miscellaneous functions and header files have been
+     included from 4.4 BSD with little or no modification.
 
      All code incorporated from 4.4 BSD is under the following
      copyright:
@@ -694,70 +823,7 @@ on by other people.
      changes to fit into the GNU C library and to fit the ANSI C
      standard, but the functional code is Berkeley's.
 
-   * The merge sort function `qsort' was written by Michael J. Haertel.
-
-   * The quick sort function used as a fallback by `qsort' was written
-     by Douglas C. Schmidt.
-
-   * The memory allocation functions `malloc', `realloc' and `free' and
-     related code were written by Michael J. Haertel.
-
-   * Fast implementations of many of the string functions (`memcpy',
-     `strlen', etc.) were written by Torbjorn Granlund.
-
-   * Some of the support code for Mach is taken from Mach 3.0 by CMU,
-     and is under the following copyright terms:
-
-               Mach Operating System
-               Copyright (C) 1991,1990,1989 Carnegie Mellon University
-               All Rights Reserved.
-
-          Permission to use, copy, modify and distribute this software
-          and its documentation is hereby granted, provided that both
-          the copyright notice and this permission notice appear in all
-          copies of the software, derivative works or modified
-          versions, and any portions thereof, and that both notices
-          appear in supporting documentation.
-
-          CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS
-          IS" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF
-          ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF
-          THIS SOFTWARE.
-
-          Carnegie Mellon requests users of this software to return to
-
-                Software Distribution Coordinator
-                School of Computer Science
-                Carnegie Mellon University
-                Pittsburgh PA 15213-3890
-
-          or `Software.Distribution@CS.CMU.EDU' any improvements or
-          extensions that they make and grant Carnegie Mellon the
-          rights to redistribute these changes.
-
-   * The `tar.h' header file was written by David J. MacKenzie.
-
-   * The port to the MIPS DECStation running Ultrix 4
-     (`mips-dec-ultrix4') was contributed by Brendan Kehoe and Ian
-     Lance Taylor.
-
-   * The DES encryption function `crypt' and related functions were
-     contributed by Michael Glad.
-
-   * The `ftw' function was contributed by Ian Lance Taylor.
-
-   * The code to support SunOS shared libraries was contributed by Tom
-     Quinn.
-
-   * The `mktime' function was contributed by Noel Cragg.
-
-   * The port to the Sequent Symmetry running Dynix version 3
-     (`i386-sequent-bsd') was contributed by Jason Merrill.
-
-   * The timezone support code is derived from the public-domain
-     timezone package by Arthur David Olson.
-
-   * The Internet resolver code is taken directly from BIND 4.9.1,
+   * The Internet resolver code is taken directly from BIND 4.9.4,
      which is under both the Berkeley copyright above and also:
 
           Portions Copyright (C) 1993 by Digital Equipment Corporation.
@@ -780,15 +846,6 @@ on by other people.
           OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
           WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-   * The port to the DEC Alpha running OSF/1 (`alpha-dec-osf1') was
-     contributed by Brendan Kehoe, using some code written by Roland
-     McGrath.
-
-   * The floating-point printing function used by `printf' and friends
-     was written by Roland McGrath and Torbjorn Granlund.  The
-     multi-precision integer functions used in that function are taken
-     from GNU MP, which was contributed by Torbjorn Granlund.
-
    * The code to support Sun RPC is taken verbatim from Sun's
      RPCSRC-4.0 distribution, and is covered by this copyright:
 
@@ -824,9 +881,33 @@ on by other people.
                2550 Garcia Avenue
                Mountain View, California  94043
 
-   * The port to SGI machines running Irix 4 (`mips-sgi-irix4') was
-     contributed by Tom Quinn.
+   * Some of the support code for Mach is taken from Mach 3.0 by CMU,
+     and is under the following copyright terms:
 
-   * The port of the Mach and Hurd code to the MIPS architecture
-     (`mips-ANYTHING-gnu') was contribued by Kazumoto Kojima.
+               Mach Operating System
+               Copyright (C) 1991,1990,1989 Carnegie Mellon University
+               All Rights Reserved.
+
+          Permission to use, copy, modify and distribute this software
+          and its documentation is hereby granted, provided that both
+          the copyright notice and this permission notice appear in all
+          copies of the software, derivative works or modified
+          versions, and any portions thereof, and that both notices
+          appear in supporting documentation.
+
+          CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS
+          IS" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF
+          ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF
+          THIS SOFTWARE.
+
+          Carnegie Mellon requests users of this software to return to
+
+                Software Distribution Coordinator
+                School of Computer Science
+                Carnegie Mellon University
+                Pittsburgh PA 15213-3890
+
+          or `Software.Distribution@CS.CMU.EDU' any improvements or
+          extensions that they make and grant Carnegie Mellon the
+          rights to redistribute these changes.