ncurses 5.2
[ncurses.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 0e6a92cb5d8c74dd947cc44672ed5c125f93bebc..26d57374f47e23509e7c1ccda8e55ceb606f283e 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,8 @@
--- $Id: INSTALL,v 1.27 1997/04/26 23:48:19 tom Exp $
+-- $Id: INSTALL,v 1.46 2000/10/14 17:57:02 Johnny.C.Lam Exp $
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
+
     ************************************************************
     * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
     ************************************************************
     ************************************************************
     * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
     ************************************************************
@@ -27,12 +28,12 @@ read the USING NCURSES WITH EMACS section below.
 If you are trying to build applications using gpm with ncurses,
 read the USING NCURSES WITH GPM section below.
 
 If you are trying to build applications using gpm with ncurses,
 read the USING NCURSES WITH GPM section below.
 
-If you are trying to build Elvis using ncurses for terminal support,
-read the USING NCURSES WITH ELVIS section below.
-
 If you are running over the Andrew File System see the note below on
 USING NCURSES WITH AFS.
 
 If you are running over the Andrew File System see the note below on
 USING NCURSES WITH AFS.
 
+If you are cross-compiling, see the note below on BUILDING NCURSES WITH A
+CROSS-COMPILER.
+
 If you want to build the Ada95 binding, go to the Ada95 directory and
 follow the instructions there.  The Ada95 binding is not covered below.
 
 If you want to build the Ada95 binding, go to the Ada95 directory and
 follow the instructions there.  The Ada95 binding is not covered below.
 
@@ -40,7 +41,9 @@ If you are using anything but (a) Linux, or (b) one of the 4.4BSD-based
 i386 Unixes, go read the Portability section in the TO-DO file before you
 do anything else.
 
 i386 Unixes, go read the Portability section in the TO-DO file before you
 do anything else.
 
+
 REQUIREMENTS:
 REQUIREMENTS:
+------------
 
 You will need the following in order to build and install ncurses under UNIX:
 
 
 You will need the following in order to build and install ncurses under UNIX:
 
@@ -50,7 +53,11 @@ You will need the following in order to build and install ncurses under UNIX:
        * sed
        * BSD or System V style install (a script is enclosed)
 
        * sed
        * BSD or System V style install (a script is enclosed)
 
+Ncurses has been also built in the OS/2 EMX environment.
+
+
 INSTALLATION PROCEDURE:
 INSTALLATION PROCEDURE:
+----------------------
 
 1.  First, decide whether you want ncurses to replace your existing library (in
     which case you'll need super-user privileges) or be installed in parallel
 
 1.  First, decide whether you want ncurses to replace your existing library (in
     which case you'll need super-user privileges) or be installed in parallel
@@ -64,7 +71,7 @@ INSTALLATION PROCEDURE:
     The package gets installed beneath the --prefix directory as follows:
 
     In $(prefix)/bin:          tic, infocmp, captoinfo, tset,
     The package gets installed beneath the --prefix directory as follows:
 
     In $(prefix)/bin:          tic, infocmp, captoinfo, tset,
-                               reset, clear, tput, toe
+                               reset, clear, tput, toe
     In $(prefix)/lib:          libncurses*.* libcurses.a
     In $(prefix)/share/terminfo: compiled terminal descriptions
     In $(prefix)/include:      C header files
     In $(prefix)/lib:          libncurses*.* libcurses.a
     In $(prefix)/share/terminfo: compiled terminal descriptions
     In $(prefix)/include:      C header files
@@ -97,28 +104,37 @@ INSTALLATION PROCEDURE:
 
        libncurses_p.a (profile)
 
 
        libncurses_p.a (profile)
 
+       libncurses.la (libtool)
+
     If you do not specify any models, the normal and debug libraries will be
     configured.  Typing `configure' with no arguments is equivalent to:
 
     If you do not specify any models, the normal and debug libraries will be
     configured.  Typing `configure' with no arguments is equivalent to:
 
-       ./configure --with-normal --with-debug --enable-overwrite
+       ./configure --with-normal --with-debug --enable-overwrite
 
     Typing
 
 
     Typing
 
-       ./configure --with-shared
+       ./configure --with-shared
 
     makes the shared libraries the default, resulting in
 
 
     makes the shared libraries the default, resulting in
 
-       ./configure --with-shared --with-normal --with-debug --enable-overwrite
+       ./configure --with-shared --with-normal --with-debug --enable-overwrite
 
     If you want only shared libraries, type
 
 
     If you want only shared libraries, type
 
-       ./configure --with-shared --without-normal --without-debug
+       ./configure --with-shared --without-normal --without-debug
 
     Rules for generating shared libraries are highly dependent upon the choice
     of host system and compiler.  We've been testing shared libraries on Linux
     and SunOS with gcc, but more work needs to be done to make shared libraries
     work on other systems.
 
 
     Rules for generating shared libraries are highly dependent upon the choice
     of host system and compiler.  We've been testing shared libraries on Linux
     and SunOS with gcc, but more work needs to be done to make shared libraries
     work on other systems.
 
+    If you have libtool installed, you can type
+
+       ./configure --with-libtool
+
+    to generate the appropriate static and/or shared libraries for your
+    platform using libtool.
+
     You can make curses and terminfo fall back to an existing file of termcap
     definitions by configuring with --enable-termcap.  If you do this, the
     library will search /etc/termcap before the terminfo database, and will
     You can make curses and terminfo fall back to an existing file of termcap
     definitions by configuring with --enable-termcap.  If you do this, the
     library will search /etc/termcap before the terminfo database, and will
@@ -128,14 +144,14 @@ INSTALLATION PROCEDURE:
 3.  Type `make'.  Ignore any warnings, no error messages should be produced.
     This should compile the ncurses library, the terminfo compiler tic(1),
     captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1)
 3.  Type `make'.  Ignore any warnings, no error messages should be produced.
     This should compile the ncurses library, the terminfo compiler tic(1),
     captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1)
-    programs (see the man pages for explanation of what they do), some test
+    programs (see the manual pages for explanation of what they do), some test
     programs, and the panels, menus, and forms libraries.
 
 4.  Run ncurses and several other test programs in the test directory to
     verify that ncurses functions correctly before doing an install that
     may overwrite system files.  Read the file test/README for details on
     the test programs.
     programs, and the panels, menus, and forms libraries.
 
 4.  Run ncurses and several other test programs in the test directory to
     verify that ncurses functions correctly before doing an install that
     may overwrite system files.  Read the file test/README for details on
     the test programs.
-    
+
     NOTE: You must have installed the terminfo database, or set the
     environment variable $TERMINFO to point to a SVr4-compatible terminfo
     database before running the test programs.  Not all vendors' terminfo
     NOTE: You must have installed the terminfo database, or set the
     environment variable $TERMINFO to point to a SVr4-compatible terminfo
     database before running the test programs.  Not all vendors' terminfo
@@ -147,17 +163,17 @@ INSTALLATION PROCEDURE:
     cursor addressing and window scrolling works OK, etc.
 
 5.  Once you've tested, you can type `make install' to install libraries,
     cursor addressing and window scrolling works OK, etc.
 
 5.  Once you've tested, you can type `make install' to install libraries,
-    the programs, the terminfo database and the man pages.  Alternately, you
+    the programs, the terminfo database and the manual pages.  Alternately, you
     can type `make install' in each directory you want to install.  In the
     top-level directory, you can do a partial install using these commands:
 
        'make install.progs'    installs tic, infocmp, etc...
     can type `make install' in each directory you want to install.  In the
     top-level directory, you can do a partial install using these commands:
 
        'make install.progs'    installs tic, infocmp, etc...
-       'make install.includes' installs the headers.
-       'make install.libs'     installs the libraries (and the headers).
-       'make install.data'     installs the terminfo data. (Note: `tic' must
-                               be installed before the terminfo data can be
-                               compiled).
-       'make install.man'      installs the man pages.
+       'make install.includes' installs the headers.
+       'make install.libs'     installs the libraries (and the headers).
+       'make install.data'     installs the terminfo data. (Note: `tic' must
+                               be installed before the terminfo data can be
+                               compiled).
+       'make install.man'      installs the manual pages.
 
   ############################################################################
   #     CAVEAT EMPTOR: `install.data' run as root will NUKE any existing     #
 
   ############################################################################
   #     CAVEAT EMPTOR: `install.data' run as root will NUKE any existing     #
@@ -166,10 +182,11 @@ INSTALLATION PROCEDURE:
   #  this purpose.  Don't forget to run tic on the file once you're done.    #
   ############################################################################
 
   #  this purpose.  Don't forget to run tic on the file once you're done.    #
   ############################################################################
 
-    The terminfo(5) manual page wants to be preprocessed with tbl(1) before
+    The terminfo(5) manual page must be preprocessed with tbl(1) before
     being formatted by nroff(1).  Modern man(1) implementations tend to do
     being formatted by nroff(1).  Modern man(1) implementations tend to do
-    this by default, but you may want to look at your version's man page
-    to be sure.
+    this by default, but you may want to look at your version's manual page
+    to be sure.  You may also install the manual pages after preprocessing
+    with tbl(1) by specifying the configure option --with-manpage-tbl.
 
     If the system already has a curses library that you need to keep using
     for some bizarre binary-compatibility reason, you'll need to distinguish
 
     If the system already has a curses library that you need to keep using
     for some bizarre binary-compatibility reason, you'll need to distinguish
@@ -193,9 +210,17 @@ INSTALLATION PROCEDURE:
     See the BSD CONVERSION NOTES section below for a few more details.
 
 6.  The c++ directory has C++ classes that are built on top of ncurses and
     See the BSD CONVERSION NOTES section below for a few more details.
 
 6.  The c++ directory has C++ classes that are built on top of ncurses and
-    panels.  You need to have c++ (and its libraries) installed before you can
+    panels.  You must have c++ (and its libraries) installed before you can
     compile and run the demo.
 
     compile and run the demo.
 
+    Use --without-cxx-binding to tell configure to not build the C++ bindings
+    and demo.
+
+    If you do not have C++, you must use the --without-cxx option to tell
+    the configure script to not attempt to determine the type of 'bool'
+    which may be supported by C++.  IF YOU USE THIS OPTION, BE ADVISED THAT
+    YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++.
+
 7.  If you're running an older Linux, you must either (a) tell Linux that the
     console terminal type is `linux' or (b) make a link to or copy of the
     linux entry in the appropriate place under your terminfo directory, named
 7.  If you're running an older Linux, you must either (a) tell Linux that the
     console terminal type is `linux' or (b) make a link to or copy of the
     linux entry in the appropriate place under your terminfo directory, named
@@ -216,7 +241,567 @@ INSTALLATION PROCEDURE:
     and you'll have to redo it. There is no need to have entries for all
     possible screen sizes, ncurses will figure out the size automatically.
 
     and you'll have to redo it. There is no need to have entries for all
     possible screen sizes, ncurses will figure out the size automatically.
 
+
+SUMMARY OF CONFIGURE OPTIONS:
+----------------------------
+
+    The configure script provides a short list of its options when you type
+
+       ./configure --help
+
+    The --help and several options are common to all configure scripts that are
+    generated with autoconf.  Those are all listed before the line
+
+       --enable and --with options recognized:
+
+    The other options are specific to this package.  We list them in alphabetic
+    order.
+
+    --disable-assumed-color
+       With ncurses 5.1, we introduced a new function, assume_default_colors()
+       which allows applications to specify what the default foreground and
+       background color are assumed to be.  Most color applications use
+       full-screen color; but a few do not color the background.  While the
+       assumed values can be overridden by invoking assume_default_colors(),
+       you may find it useful to set the assumed values to the pre-5.1
+       convention, using this configure option.
+
+    --disable-big-core
+       Assume machine has little memory.  The configure script attempts to
+       determine if your machine has enough memory (about 6Mb) to compile the
+       terminfo database without writing portions to disk.  Some allocators
+       return deceptive results, so you may have to override the configure
+       script.  Or you may be building tic for a smaller machine.
+
+    --disable-database
+       Use only built-in data.  The ncurses libraries normally read terminfo
+       and termcap data from disk.  You can configure ncurses to have a
+       built-in database, aka "fallback" entries.  Embedded applications may
+       have no need for an external database.
+
+    --disable-ext-funcs
+       Disable function-extensions.  Configure ncurses without the functions
+       that are not specified by XSI.  See ncurses/modules for the exact
+       list of library modules that would be suppressed.
+
+    --disable-hashmap
+       Compile without hashmap scrolling-optimization code.  This algorithm is
+       the default.
+
+    --disable-leaks
+       For testing, compile-in code that frees memory that normally would not
+       be freed, to simplify analysis of memory-leaks.
+
+    --disable-macros
+       For testing, use functions rather than macros.  The program will run
+       more slowly, but it is simpler to debug.  This makes a header file
+       "nomacros.h".  See also the --enable-expanded option.
+
+    --disable-overwrite
+       If you are installing ncurses on a system which contains another
+       development version of curses, or which could be confused by the loader
+       for another version, we recommend that you leave out the link to
+       -lcurses.  The ncurses library is always available as -lncurses.
+       Disabling overwrite also causes the ncurses header files to be
+       installed into a subdirectory, e.g., /usr/local/include/ncurses,
+       rather than the include directory.  This makes it simpler to avoid
+       compile-time conflicts with other versions of curses.h
+
+    --disable-root-environ
+       Compile with environment restriction, so certain environment variables
+       are not available when running as root, or via a setuid/setgid
+       application.  These are (for example $TERMINFO) those that allow the
+       search path for the terminfo or termcap entry to be customized.
+
+    --disable-scroll-hints
+       Compile without scroll-hints code.  This option is ignored when
+       hashmap scrolling is configured, which is the default.
+
+    --enable-add-ons=DIR...
+       This is used to check if this package is a glibc add-on.  This is used
+       only by the glibc makefiles.
+
+    --enable-assertions
+       For testing, compile-in assertion code.  This is used only for a few
+       places where ncurses cannot easily recover by returning an error code.
+
+    --enable-broken_linker
+       A few platforms have what we consider a broken linker:  it cannot link
+       objects from an archive solely by referring to data objects in those
+       files, but requires a function reference.  This configure option
+       changes several data references to functions to work around this
+       problem.
+
+       NOTE:  With ncurses 5.1, this may not be necessary, since we are
+       told that some linkers interpret uninitialized global data as a
+       different type of reference which behaves as described above.  We have
+       explicitly initialized all of the global data to work around the
+       problem.
+
+    --enable-bsdpad
+       Recognize BSD-style prefix padding.  Some ancient BSD programs (such as
+       nethack) call tputs("50") to implement delays.
+
+    --enable-colorfgbg
+       Compile with experimental $COLORFGBG code.  That environment variable
+       is set by some terminal emulators as a hint to applications, by
+       advertising the default foreground and background colors.  During
+       initialization, ncurses sets color pair 0 to match this.
+
+    --enable-const
+       The curses interface as documented in XSI is rather old, in fact
+       including features that precede ANSI C.  The prototypes generally do
+       not make effective use of "const".  When using stricter compilers (or
+       gcc with appropriate warnings), you may see warnings about the mismatch
+       between const and non-const data.  We provide a configure option which
+       changes the interfaces to use const - quieting these warnings and
+       reflecting the actual use of the parameters more closely.  The ncurses
+       library uses the symbol NCURSES_CONST for these instances of const,
+       and if you have asked for compiler warnings, will add gcc's const-qual
+       warning.  There will still be warnings due to subtle inconsistencies
+       in the interface, but at a lower level.
+
+       NOTE:  configuring ncurses with this option may detract from the
+       portability of your applications by encouraging you to use const in
+       places where the XSI curses interface would not allow them.  Similar
+       issues arise when porting to SVr4 curses, which uses const in even
+       fewer places.
+
+    --enable-echo
+       Use the option --disable-echo to make the build-log less verbose by
+       suppressing the display of the compile and link commands.  This makes
+       it easier to see the compiler warnings.  (You can always use "make -n"
+       to see the options that are used).
+
+    --enable-expanded
+       For testing, generate functions for certain macros to make them visible
+       as such to the debugger.  See also the --disable-macros option.
+
+    --enable-getcap
+       Use the 4.4BSD getcap code if available, or a bundled version of it to
+       fetch termcap entries.  Entries read in this way cannot use (make
+       cross-references to) the terminfo tree, but it is faster than reading
+       /etc/termcap.
+
+    --enable-getcap-cache
+       Cache translated termcaps under the directory $HOME/.terminfo
+
+       NOTE:  this sounds good - it makes ncurses run faster the second time. 
+       But look where the data comes from - an /etc/termcap containing lots of
+       entries that are not up to date.  If you configure with this option and
+       forget to install the terminfo database before running an ncurses
+       application, you will end up with a hidden terminfo database that
+       generally does not support color and will miss some function keys.
+
+    --enable-hard-tabs
+       Compile-in cursor-optimization code that uses hard-tabs.  We would make
+       this a standard feature except for the concern that the terminfo entry
+       may not be accurate, or that your stty settings have disabled the use
+       of tabs.
+
+    --enable-no-padding
+       Compile-in support for the $NCURSES_NO_PADDING environment variable,
+       which allows you to suppress the effect of non-mandatory padding in
+       terminfo entries.  This is the default, unless you have disabled the
+       extended functions.
+
+    --enable-rpath
+       Use rpath option when generating shared libraries, and with some
+       restrictions when linking the corresponding programs.  This applies
+       mainly to systems using the GNU linker (read the manpage).
+
+    --enable-safe-sprintf
+       Compile with experimental safe-sprintf code.  You may consider using
+       this if you are building ncurses for a system that has neither
+       vsnprintf() or vsprintf().  It is slow, however.
+
+    --enable-sigwinch
+       Compile support for ncurses' SIGWINCH handler.  If your application has
+       its own SIGWINCH handler, ncurses will not use its own.  The ncurses
+       handler causes wgetch() to return KEY_RESIZE when the screen-size
+       changes.  This option is the default, unless you have disabled the
+       extended functions.
+
+    --enable-symlinks
+       If your system supports symbolic links, make tic use symbolic links
+       rather than hard links to save diskspace when writing aliases in the
+       terminfo database.
+
+    --enable-tcap-names
+       Compile-in support for user-definable terminal capabilities.  Use the
+       -x option of tic and infocmp to treat unrecognized terminal
+       capabilities as user-defined strings.  This option is the default,
+       unless you have disabled the extended functions.
+
+    --enable-termcap
+       Compile in support for reading terminal descriptions from termcap if no
+       match is found in the terminfo database.  See also the --enable-getcap
+       and --enable-getcap-cache options.
+
+    --enable-warnings
+       Turn on GCC compiler warnings.  There should be only a few.
+
+    --enable-widec
+       Compile with experimental wide-character code.  This makes a different
+       version of the libraries (e.g., libncursesw.so), which stores
+       characters in 16-bits.  We provide a simple UTF-8 driver and test
+       program to use this feature with terminals that can display UTF-8.
+
+       NOTE: applications compiled with this configuration are not compatible
+       with those built for 8-bit characters.  You cannot simply make a
+       symbolic link to equate libncurses.so with libncursesw.so
+
+    --enable-xmc-glitch
+       Compile-in support experimental xmc (magic cookie) code.
+
+    --with-ada-compiler=CMD
+       Specify the Ada95 compiler command (default "gnatmake")
+
+    --with-ada-include=DIR
+       Tell where to install the Ada includes (default: 
+       PREFIX/lib/ada/adainclude)
+
+    --with-ada-objects=DIR
+       Tell where to install the Ada objects (default:  PREFIX/lib/ada/adalib)
+
+    --with-database=XXX
+       Specify the terminfo source file to install.  Usually you will wish
+       to install ncurses' default (misc/terminfo.src).  Certain systems
+       have special requirements, e.g, OS/2 EMX has a customized terminfo
+       source file.
+
+    --with-dbmalloc
+       For testing, compile and link with Conor Cahill's dbmalloc library.
+
+    --with-debug
+       Generate debug-libraries (default).  These are named by adding "_g"
+       to the root, e.g., libncurses_g.a
+
+    --with-default-terminfo-dir=XXX
+       Specify the default terminfo database directory.  This is normally
+       DATADIR/terminfo, e.g., /usr/share/terminfo.
+
+    --with-develop
+       Enable experimental/development options.  This does not count those
+       that change the interface, such as --enable-widec.
+
+    --with-dmalloc
+       For testing, compile and link with Gray Watson's dmalloc library.
+
+    --with-fallbacks=XXX
+       Specify a list of fallback terminal descriptions which will be
+       compiled into the ncurses library.  See CONFIGURING FALLBACK ENTRIES.
+
+    --with-gpm
+       use Alessandro Rubini's GPM library to provide mouse support on the
+       Linux console.
+
+    --with-install-prefix=XXX
+       Allows you to specify an alternate location for installing ncurses
+       after building it.  The value you specify is prepended to the "real"
+       install location.  This simplifies making binary packages.
+
+       NOTE:  a few systems build shared libraries with fixed pathnames; this
+       option probably will not work for those configurations.
+
+     --with-libtool
+       Generate libraries with libtool.  If this option is selected, then
+       it overrides all other library model specifications.
+
+    --with-manpage-format=XXX
+       Tell the configure script how you would like to install man-pages.  The
+       option value must be one of these:  gzip, compress, BSDI, normal,
+       formatted.  If you do not give this option, the configure script
+       attempts to determine which is the case.
+
+    --with-manpage-renames=XXX
+       Tell the configure script that you wish to rename the manpages while
+       installing.  Currently the only distribution which does this is
+       the Linux Debian.  The option value specifies the name of a file
+       that lists the renamed files, e.g., $srcdir/man/man_db.renames
+
+    --with-manpage-symlinks
+       Tell the configure script that you wish to make symbolic links in the
+       man-directory for aliases to the man-pages.  This is the default, but
+       can be disabled for systems that provide this automatically.  Doing
+       this on systems that do not support symbolic links will result in
+       copying the man-page for each alias.
+
+    --with-manpage-tbl
+       Tell the configure script that you with to preprocess the manpages
+       by running them through tbl to generate tables understandable by
+       nroff.
+
+    --with-normal
+       Generate normal (i.e., static) libraries (default).
+
+    --with-profile
+       Generate profile-libraries These are named by adding "_p" to the root,
+       e.g., libncurses_p.a
+
+    --with-rcs-ids
+       Compile-in RCS identifiers.  Most of the C files have an identifier.
+
+    --with-shared
+       Generate shared-libraries.  The names given depend on the system for
+       which you are building, typically using a ".so" suffix, along with
+       symbolic links that refer to the release version.
+       
+       NOTE:  Unless you override the configure script by setting the $CFLAGS
+       environment variable, these will not be built with the -g debugging
+       option.
+
+    --with-shlib-version=XXX
+       Specify whether to use the release or ABI version for shared libraries.
+       This is normally chosen automatically based on the type of system
+       which you are building on.  We use it for testing the configure script.
+
+    --with-system-type=XXX
+       For testing, override the derived host system-type which is used to
+       decide things such as the linker commands used to build shared
+       libraries.  This is normally chosen automatically based on the type of
+       system which you are building on.  We use it for testing the configure
+       script.
+
+    --with-terminfo-dirs=XXX
+       Specify a search-list of terminfo directories which will be compiled
+       into the ncurses library (default: DATADIR/terminfo)
+
+    --with-termlib
+       When building the ncurses library, organize this as two parts:  the
+       curses library (libncurses) and the low-level terminfo library
+       (libtinfo).  This is done to accommodate applications that use only
+       the latter.  The terminfo library is about half the size of the total.
+
+    --without-ada
+       Suppress the configure script's check for Ada95, do not build the
+       Ada95 binding and related demo.
+
+    --without-curses-h
+       Don't install the ncurses header with the name "curses.h".  Rather,
+       install as "ncurses.h" and modify the installed headers and manpages
+       accordingly.
+
+    --without-cxx
+       XSI curses declares "bool" as part of the interface.  C++ also declares
+       "bool".  Neither specifies the size and type of booleans, but both
+       insist on the same name.  We chose to accommodate this by making the
+       configure script check for the size and type (e.g., unsigned or signed)
+       that your C++ compiler uses for booleans.  If you do not wish to use
+       ncurses with C++, use this option to tell the configure script to not
+       adjust ncurses bool to match C++.
+
+    --without-cxx-binding
+       Suppress the configure script's check for C++, do not build the
+       C++ binding and related demo.
+
+    --without-progs
+       Tell the configure script to suppress the build of ncurses' application
+       programs (e.g., tic).  The test applications will still be built if you
+       type "make", though not if you simply do "make install".
+
+
+COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
+--------------------------------------------
+
+    Because ncurses implements the X/Open Curses Specification, its interface
+    is fairly stable.  That does not mean the interface does not change.
+    Changes are made to the documented interfaces when we find differences
+    between ncurses and X/Open or implementations which they certify (such as
+    Solaris).  We add extensions to those interfaces to solve problems not
+    addressed by the original curses design, but those must not conflict with
+    the X/Open documentation.
+
+    Here are some of the major interface changes, and related problems which
+    you may encounter when building a system with different versions of
+    ncurses:
+
+    5.1 (July 8, 2000)
+       Interface changes:
+
+       + made the extended terminal capabilities
+         (configure --enable-tcap-names) a standard feature.  This should
+         be transparent to applications that do not require it.
+
+       + removed the trace() function and related trace support from the
+         production library.
+
+       + modified curses.h.in, undef'ing some symbols to avoid conflict
+         with C++ STL.
+
+       Added extensions:  assume_default_colors().
+
+    5.0 (October 23, 1999)
+       Interface changes:
+
+       + implemented the wcolor_set() and slk_color() functions.
+
+       + move macro winch to a function, to hide details of struct ldat
+
+       + corrected prototypes for slk_* functions, using chtype rather than
+         attr_t.
+
+       + the slk_attr_{set,off,on} functions need an additional void*
+         parameter according to XSI.
+
+       + modified several prototypes to correspond with 1997 version of X/Open
+         Curses:  [w]attr_get(), [w]attr_set(), border_set() have different
+         parameters.  Some functions were renamed or misspelled:
+         erase_wchar(), in_wchntr(), mvin_wchntr().  Some developers have used
+         attr_get().
+
+       Added extensions:  keybound(), curses_version().
+
+       Terminfo database changes:
+
+       + change translation for termcap 'rs' to terminfo 'rs2', which is
+         the documented equivalent, rather than 'rs1'.
+
+       The problems are subtler in recent releases.
+
+       a) This release provides users with the ability to define their own
+          terminal capability extensions, like termcap.  To accomplish this,
+          we redesigned the TERMTYPE struct (in term.h).  Very few
+          applications use this struct.  They must be recompiled to work with
+          the 5.0 library.
+
+       a) If you use the extended terminfo names (i.e., you used configure
+          --enable-tcap-names), the resulting terminfo database can have some
+          entries which are not readable by older versions of ncurses.  This
+          is a bug in the older versions:
+
+          + the terminfo database stores booleans, numbers and strings in
+            arrays.  The capabilities that are listed in the arrays are
+            specified by X/Open.  ncurses recognizes a number of obsolete and
+            extended names which are stored past the end of the specified
+            entries.
+
+          + a change to read_entry.c in 951001 made the library do an lseek()
+            call incorrectly skipping data which is already read from the
+            string array.  This happens when the number of strings in the
+            terminfo data file is greater than STRCOUNT, the number of
+            specified and obsolete or extended strings.
+
+          + as part of alignment with the X/Open final specification, in the
+            990109 patch we added two new terminfo capabilities:
+            set_a_attributes and set_pglen_inch).  This makes the indices for
+            the obsolete and extended capabilities shift up by 2.
+
+          + the last two capabilities in the obsolete/extended list are memu
+            and meml, which are found in most terminfo descriptions for xterm.
+
+            When trying to read this terminfo entry, the spurious lseek()
+            causes the library to attempt to read the final portion of the
+            terminfo data (the text of the string capabilities) 4 characters
+            past its starting point, and reads 4 characters too few.  The
+            library rejects the data, and applications are unable to
+            initialize that terminal type.
+
+          FIX: remove memu and meml from the xterm description.  They are
+          obsolete, not used by ncurses.  (It appears that the feature was
+          added to xterm to make it more like hpterm).
+
+          This is not a problem if you do not use the -x option of tic to
+          create a terminfo database with extended names.  Note that the
+          user-defined terminal capabilities are not affected by this bug,
+          since they are stored in a table after the older terminfo data ends,
+          and are invisible to the older libraries.
+
+       c) Some developers did not wish to use the C++ binding, and used the
+          configure --without-cxx option.  This causes problems if someone
+          uses the ncurses library from C++ because that configure test
+          determines the type for C++'s bool and makes ncurses match it, since
+          both C++ and curses are specified to declare bool.  Calling ncurses
+          functions with the incorrect type for bool will cause execution
+          errors.  In 5.0 we added a configure option "--without-cxx-binding"
+          which controls whether the binding itself is built and installed.
+
+    4.2 (March 2, 1998)
+       Interface changes:
+
+       + correct prototype for termattrs() as per XPG4 version 2.
+
+       + add placeholder prototypes for color_set(), erasewchar(),
+         term_attrs(), wcolor_set() as per XPG4 version 2.
+
+       + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in
+         SVr4 headers.
+
+       New extensions: keyok() and define_key().
+
+       Terminfo database changes:
+
+       + corrected definition in curses.h for ACS_LANTERN, which was 'I'
+         rather than 'i'.
+
+    4.1 (May 15, 1997)
+
+       We added these extensions:  use_default_colors().  Also added
+       configure option --enable-const, to support the use of const where
+       X/Open should have, but did not, specify.
+
+       The terminfo database content changed the representation of color for
+       most entries that use ANSI colors.  SVr4 curses treats the setaf/setab
+       and setf/setb capabilities differently, interchanging the red/blue
+       colors in the latter.
+
+    4.0 (December 24, 1996)
+
+       We bumped to version 4.0 because the newly released dynamic loader
+       (ld.so.1.8.5) on Linux did not load shared libraries whose ABI and REL
+       versions were inconsistent.  At that point, ncurses ABI was 3.4 and the
+       REL was 1.9.9g, so we made them consistent.
+
+    1.9.9g (December 1, 1996)
+
+       This fixed most of the problems with 1.9.9e, and made these interface
+       changes:
+
+       + remove tparam(), which had been provided for compatibility with
+         some termcap.  tparm() is standard, and does not conflict with
+         application's fallback for missing tparam().
+
+       + turn off hardware echo in initscr().  This changes the sense of the
+         echo() function, which was initialized to echoing rather than
+         nonechoing (the latter is specified).  There were several other
+         corrections to the terminal I/O settings which cause applications to
+         behave differently.
+
+       + implemented several functions (such as attr_on()) which were
+         available only as macros.
+
+       + corrected several typos in curses.h.in (i.e., the mvXXXX macros).
+
+       + corrected prototypes for delay_output(),
+         has_color, immedok() and idcok().
+
+       + corrected misspelled getbkgd().  Some applications used the
+         misspelled name.
+
+       + added _yoffset to WINDOW.  The size of WINDOW does not impact
+         applications, since they use only pointers to WINDOW structs.
+
+       These changes were made to the terminfo database:
+
+       + removed boolean 'getm' which was available as an extended name.
+
+       We added these extensions: wresize(), resizeterm(), has_key() and
+       mcprint().
+
+    1.9.9e (March 24, 1996)
+
+       not recommended (a last-minute/untested change left the forms and
+       menus libraries unusable since they do not repaint the screen).
+       Foreground/background colors are combined incorrectly, working properly
+       only on a black background.  When this was released, the X/Open
+       specification was available only in draft form.
+
+       Some applications (such as lxdialog) were "fixed" to work with the
+       incorrect color scheme.
+
+
 IF YOU ARE A SYSTEM INTEGRATOR:
 IF YOU ARE A SYSTEM INTEGRATOR:
+------------------------------
 
     Beginning with 1.9.9, the ncurses distribution includes both a tset
     utility and /usr/share/tabset directory.  If you are installing ncurses,
 
     Beginning with 1.9.9, the ncurses distribution includes both a tset
     utility and /usr/share/tabset directory.  If you are installing ncurses,
@@ -242,7 +827,12 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        wish to use the --enable-getcap option.  This option speeds up
        termcap-based startups, at the expense of not allowing personal
        termcap entries to reference the terminfo tree.  See the code in
        wish to use the --enable-getcap option.  This option speeds up
        termcap-based startups, at the expense of not allowing personal
        termcap entries to reference the terminfo tree.  See the code in
-       ncurses/read_termcap.c for details.
+       ncurses/tinfo/read_termcap.c for details.
+
+       Note that if you have $TERMCAP set, ncurses will use that value
+       to locate termcap data.  In particular, running from xterm will
+       set $TERMCAP to the contents of the xterm's termcap entry.
+       If ncurses sees that, it will not examine /etc/termcap.
 
     Keyboard Mapping:
 
 
     Keyboard Mapping:
 
@@ -250,7 +840,7 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        reverse-tabulation sequence) rather than ^I.  Here are the loadkeys -d
        mappings that will set this up:
 
        reverse-tabulation sequence) rather than ^I.  Here are the loadkeys -d
        mappings that will set this up:
 
-               keycode  15 = Tab             Tab
+               keycode  15 = Tab             Tab
                        alt     keycode  15 = Meta_Tab
                        shift   keycode  15 = F26
                string F26 ="\033[Z"
                        alt     keycode  15 = Meta_Tab
                        shift   keycode  15 = F26
                string F26 ="\033[Z"
@@ -270,8 +860,7 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        term(7) manual page included with this distribution for more on
        conventions for choosing type names.
 
        term(7) manual page included with this distribution for more on
        conventions for choosing type names.
 
-       Here are our recommended primary console names for the most important
-       freeware UNIX distributions:
+       Here are some recommended primary console names:
 
                linux   -- Linux console driver
                freebsd -- FreeBSD
 
                linux   -- Linux console driver
                freebsd -- FreeBSD
@@ -283,20 +872,27 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        to us explaining why you don't want to, so we can work out nomenclature
        that will make users' lives easier rather than harder.
 
        to us explaining why you don't want to, so we can work out nomenclature
        that will make users' lives easier rather than harder.
 
-RECENT XTERM VERSIONS
+
+RECENT XTERM VERSIONS:
+---------------------
+
        The terminfo database file included with this distribution assumes you
        are running an XFree86 xterm based on X11R6 (i.e., xterm-r6).  The
        earlier X11R5 entry (xterm-r5) is provided as well.
 
        If you are running XFree86 version 3.2 (actually 3.1.2F and up), you
        The terminfo database file included with this distribution assumes you
        are running an XFree86 xterm based on X11R6 (i.e., xterm-r6).  The
        earlier X11R5 entry (xterm-r5) is provided as well.
 
        If you are running XFree86 version 3.2 (actually 3.1.2F and up), you
-       should consider using the xterm-xf86-v32 entry, which adds ANSI color
+       should consider using the xterm-xf86-v32 (or later, the most recent
+       version is always named "xterm-xfree86") entry, which adds ANSI color
        and the VT220 capabilities which have been added in XFree86.  If you
        are running a mixed network, however, where this terminal description
        may be used on an older xterm, you may have problems, since
        applications that assume these capabilities will produce incorrect
        output on the older xterm (e.g., highlighting is not cleared).
 
        and the VT220 capabilities which have been added in XFree86.  If you
        are running a mixed network, however, where this terminal description
        may be used on an older xterm, you may have problems, since
        applications that assume these capabilities will produce incorrect
        output on the older xterm (e.g., highlighting is not cleared).
 
-CONFIGURING FALLBACK ENTRIES
+
+CONFIGURING FALLBACK ENTRIES:
+----------------------------
+
        In order to support operation of ncurses programs before the terminfo
        tree is accessible (that is, in single-user mode or at OS installation
        time) the ncurses library can be compiled to include an array of
        In order to support operation of ncurses programs before the terminfo
        tree is accessible (that is, in single-user mode or at OS installation
        time) the ncurses library can be compiled to include an array of
@@ -310,8 +906,10 @@ CONFIGURING FALLBACK ENTRIES
 
        By default, there are no entries on the fallback list.  After you
        have built the ncurses suite for the first time, you can change
 
        By default, there are no entries on the fallback list.  After you
        have built the ncurses suite for the first time, you can change
-       the list (the process needs infocmp(1)).  To do so, use the
-       script MKfallback.sh.
+       the list (the process needs infocmp(1)).  To do so, use the script
+       MKfallback.sh.  A configure script option --with-fallbacks does this
+       (it accepts a comma-separated list of the names you wish, and does
+       not require a rebuild).
 
        If you wanted (say) to have linux, vt100, and xterm fallbacks, you
        would use the commands
 
        If you wanted (say) to have linux, vt100, and xterm fallbacks, you
        would use the commands
@@ -331,7 +929,10 @@ CONFIGURING FALLBACK ENTRIES
        fallbacks.  A good rule of thumb for modern vt100-like entries is that
        each one will cost about 2.5K of text space.
 
        fallbacks.  A good rule of thumb for modern vt100-like entries is that
        each one will cost about 2.5K of text space.
 
+
 BSD CONVERSION NOTES:
 BSD CONVERSION NOTES:
+--------------------
+
        If you need to support really ancient BSD programs, you probably
        want to configure with the --enable-bsdpad option.  What this does
        is enable code in tputs() that recognizes a numeric prefix on a
        If you need to support really ancient BSD programs, you probably
        want to configure with the --enable-bsdpad option.  What this does
        is enable code in tputs() that recognizes a numeric prefix on a
@@ -342,7 +943,7 @@ BSD CONVERSION NOTES:
        an application you probably want to put the remainder of this section
        in the package README file.)
 
        an application you probably want to put the remainder of this section
        in the package README file.)
 
-        The following note applies only if you have configured ncurses with
+       The following note applies only if you have configured ncurses with
        --enable-termcap.
 
 ------------------------------- CUT HERE --------------------------------
        --enable-termcap.
 
 ------------------------------- CUT HERE --------------------------------
@@ -411,57 +1012,48 @@ USING NCURSES WITH EMACS:
        already be applied in your sources -- check for the #define TERMINFO.
 
 USING NCURSES WITH GPM:
        already be applied in your sources -- check for the #define TERMINFO.
 
 USING NCURSES WITH GPM:
-       Ncurses 4.1 can be configured to use GPM (General Purpose Mouse) which
-       is used on Linux console.  Be aware that GPM is commonly installed as a
-       shared library which contains a wrapper for the curses wgetch()
-       function (libcurses.o).  Some integrators have simplified linking
-       applications by combining all of libcurses.so (the BSD curses) into
-       the libgpm.so file, producing symbol conflicts with ncurses.  You may
-       be able to work around this problem by linking as follows:
+       Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse)
+       which is used on Linux console.  Be aware that GPM is commonly
+       installed as a shared library which contains a wrapper for the curses
+       wgetch() function (libcurses.o).  Some integrators have simplified
+       linking applications by combining all or part of libcurses.so (the BSD
+       curses) into the libgpm.so file, producing symbol conflicts with
+       ncurses (specifically the wgetch function).  You may be able to work
+       around this problem by linking as follows:
 
                cc -o foo foo.o -lncurses -lgpm -lncurses
 
        but the linker may not cooperate, producing mysterious errors.
        A patched version of gpm is available:
 
 
                cc -o foo foo.o -lncurses -lgpm -lncurses
 
        but the linker may not cooperate, producing mysterious errors.
        A patched version of gpm is available:
 
-               ftp.clark.net:/pub/dickey/ncurses/gpm-1.10-970125.tgz
-
-USING NCURSES WITH ELVIS:
-       To use ncurses as the screen-painting library for Elvis, apply the
-       following patch to the Elvis curses
-
-*** curses.c.orig       Sun Jun 26 05:48:23 1994
---- curses.c    Sun Feb 11 16:50:41 1996
-***************
-*** 986,992 ****
-  {
-        if (has_IM)
-                do_IM();
-!       do_IC();
-        qaddch(ch);
-        if (has_EI)
-                do_EI();
---- 986,995 ----
-  {
-        if (has_IM)
-                do_IM();
-!#ifdef NCURSES_VERSION
-!       else   /* ncurses does insertion in a slightly nonstandard way */
-!#endif
-!               do_IC();
-        qaddch(ch);
-        if (has_EI)
-                do_EI();
-
-This patch is for elvis-1.8pl4 but it can even be used for elvis-1.8pl3 with
-an offset of -11 lines.
+               dickey.his.com:/ncurses/gpm-1.10-970125.tar.gz
+
+       This patch is incorporated in gpm 1.12; however some integrators
+       are slow to update this library.  Current distributions of gpm can
+       be configured properly using the --without-curses option.
+
+BUILDING NCURSES WITH A CROSS-COMPILER
+       Ncurses can be built with a cross-compiler.  Some parts must be built
+       with the host's compiler since they are used for building programs
+       (e.g., ncurses/make_hash and ncurses/make_keys) that generate tables
+       that are compiled into the ncurses library.  You should set the
+       BUILD_CC environment variable to your host's compiler, and run the
+       configure script configuring for the cross-compiler.
+
+       Note that all of the generated source-files which are part of ncurses
+       will be made if you use
+
+               make sources
+
+       This would be useful in porting to an environment which has little
+       support for the tools used to generate the sources, e.g., sed, awk and
+       Bourne-shell.
 
 BUGS:
        Send any feedback to the ncurses mailing list at
 
 BUGS:
        Send any feedback to the ncurses mailing list at
-       ncurses@bsdi.com. To subscribe send mail to
-       ncurses-request@mailgate.bsdi.com with body that reads:
+       bug-ncurses@gnu.org. To subscribe send mail to
+       bug-ncurses-request@gnu.org with body that reads:
        subscribe ncurses <your-email-address-here>
 
        subscribe ncurses <your-email-address-here>
 
-       The Hacker's Guide in the misc directory includes some guidelines
+       The Hacker's Guide in the doc directory includes some guidelines
        on how to report bugs in ways that will get them fixed most quickly.
        on how to report bugs in ways that will get them fixed most quickly.
-