]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - INSTALL
ncurses 5.3
[ncurses.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 5033c44bab7e902d342bc21a9efaafbc17cc8e3d..a1c56ebbe0dbea634de9716b18d153bbedeccdc4 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,8 @@
--- $Id: INSTALL,v 1.33 1999/09/18 23:04:36 tom Exp $
+-- $Id: INSTALL,v 1.56 2002/09/01 22:42:11 tom Exp $
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
+
     ************************************************************
     * 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 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 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.
 
@@ -40,11 +41,13 @@ 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.
 
+
 REQUIREMENTS:
+------------
 
 You will need the following in order to build and install ncurses under UNIX:
 
-       * ANSI C compiler  (gcc is recommended)
+       * ANSI C compiler  (gcc, for instance)
        * sh               (bash will do)
        * awk              (mawk or gawk will do)
        * sed
@@ -52,7 +55,9 @@ You will need the following in order to build and install ncurses under UNIX:
 
 Ncurses has been also built in the OS/2 EMX environment.
 
+
 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
@@ -66,7 +71,7 @@ INSTALLATION PROCEDURE:
     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
@@ -99,28 +104,47 @@ INSTALLATION PROCEDURE:
 
        libncurses_p.a (profile)
 
+       libncurses.la (libtool)
+
+    If you configure using the --enable-widec option, a "w" is appended to the
+    library names (e.g., libncursesw.a), and the resulting libraries support
+    wide-characters, e.g., via a UTF-8 locale.  The corresponding header files
+    are compatible with the non-wide-character configuration; wide-character
+    features are provided by ifdef's in the header files.  The wide-character
+    library interfaces are not binary-compatible with the non-wide-character
+    version.  Building and running the wide-character code relies on a fairly
+    recent implementation of libiconv.  We have built this configuration on
+    Linux using libiconv, sometimes requiring libutf8.
+
     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
 
-       ./configure --with-shared
+       ./configure --with-shared
 
     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
 
-       ./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.
 
+    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
@@ -130,36 +154,39 @@ 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)
-    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.
-    
+
     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
     databases are SVr4-compatible, but most seem to be.  Exceptions include
     DEC's Digital Unix (formerly known as OSF/1).
 
+    It is possible to configure ncurses to use other terminfo database formats.
+    A few are provided as examples in the include-directory (see --with-caps).
+
     The ncurses program is designed specifically to test the ncurses library.
     You can use it to verify that the screen highlights work correctly, that
     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...
-       '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     #
@@ -168,20 +195,21 @@ INSTALLATION PROCEDURE:
   #  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
-    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
-    between it and ncurses. If ncurses is installed outside the standard
-    directories (/usr/include and /usr/lib) then all your users will need
-    to use the -I option to compile programs and -L to link them.
+    you'll need to distinguish between it and ncurses.  See the discussion of
+    --disable-overwrite.  If ncurses is installed outside the standard
+    directories (/usr/include and /usr/lib) then all your users will need to
+    use the -I option to compile programs and -L to link them.
 
-    If you have BSD curses installed in your system and you accidentally
+    If you have another curses installed in your system and you accidentally
     compile using its curses.h you'll end up with a large number of
-    undefined symbols at link time. _waddbytes is one of them.
+    undefined symbols at link time.
 
     IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory
     and run the `capconvert' script.  This script will deduce various things
@@ -205,28 +233,667 @@ INSTALLATION PROCEDURE:
     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
-    `console'.  All 1.3 and many 1.2 distributions (including Yggdrasil and
-    Red Hat) already have the console type set to `linux'.
-
-    The way to change the wired-in console type depends on the configuration
-    of your system. This may involve editing /etc/inittab, /etc/ttytype,
-    /etc/profile and other such files.
-
-    Warning: this is not for the fainthearted, if you mess up your console
-    getty entries you can make your system unusable!  However, if you are
-    a distribution maker, this is the right thing to do (see the note for
-    integrators near the end of this file).
-
-    The easier way is to link or copy l/linux to c/console under your terminfo
-    directory.  Note: this will go away next time you do `make install.data'
-    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.  Some, but not all of the
+       programs are useful in this configuration, e.g., reset and tput versus
+       infocmp and tic.
+
+    --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 as wide-characters,
+
+       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
+
+       NOTE: the Ada95 binding may be built against either version of the the
+       ncurses library, but you must decide which:  the binding installs the
+       same set of files for either version.  Currently (2002/6/22) it does
+       not use the extended features from the wide-character code, so it is
+       probably better to not install the binding for that configuration.
+
+    --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-bool=TYPE
+       If --without-cxx is specified, override the type used for the "bool"
+       declared in curses.h (normally the type is automatically chosen to
+       correspond with that in <stdbool.h>, or defaults to platform-specific
+       sizes).
+
+    --with-build-cc=XXX
+       If cross-compiling, specify a host C compiler, which is needed to
+       compile a few utilties which generate source modules for ncurses.
+       If you do not give this option, the configure script checks if the
+       $BUILD_CC variable is set, and otherwise defaults to gcc or cc.
+
+    --with-build-cflags=XXX
+       If cross-compiling, specify the host C compiler-flags.  You might need
+       to do this if the target compiler has unusual flags which confuse the
+       host compiler.
+
+    --with-build-cppflags=XXX
+       If cross-compiling, specify the host C preprocesor-flags.  You might
+       need to do this if the target compiler has unusual flags which confuse
+       the host compiler.
+
+    --with-build-ldflags=XXX
+       If cross-compiling, specify the host linker-flags.  You might need to
+       do this if the target linker has unusual flags which confuse the host
+       compiler.
+
+    --with-build-libs=XXX
+       If cross-compiling, the host libraries.  You might need to do this if
+       the target environment requires unusual libraries.
+
+    --with-caps=XXX
+       Specify an alternate terminfo capabilities file, which makes the
+       configure script look for "include/Caps.XXX".  A few systems, e.g.,
+       AIX 4.x use the same overall file-format as ncurses for terminfo
+       data, but use different alignments within the tables to support
+       legacy applications.  For those systems, you can configure ncurses
+       to use a terminfo database which is compatible with the native
+       applications.
+
+    --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-ospeed=TYPE
+       Override type of ospeed variable, which is part of the termcap
+       compatibility interface.  In termcap, this is a 'short', which works
+       for a wide range of baudrates because ospeed is not the actual speed
+       but the encoded value, e.g., B9600 would be a small number such as 13. 
+       However the encoding scheme originally allowed for values "only" up to
+       38400bd.  A newer set of definitions past 38400bd is not encoded as
+       compactly, and is not guaranteed to fit into a short (see the function
+       cfgetospeed(), which returns a speed_t for this reason).  In practice,
+       applications that required knowledge of the ospeed variable, i.e.,
+       those using termcap, do not use the higher speeds.  Your application
+       (or system, in general) may or may not.
+
+    --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.
+
+    --with-termpath=XXX
+       Specify a search-list of termcap files which will be compiled into the
+       ncurses library (default:  /etc/termcap:/usr/share/misc/termcap)
+
+    --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.3 (pre-release)
+       Interface changes:
+
+       + change type for bool used in headers to NCURSES_BOOL, which usually
+         is the same as the compiler's definition for 'bool'.
+
+       + add all but two functions for X/Open curses wide-character support.
+         These are only available if the library is configured using the
+         --enable-widec option.  Missing functions are
+               pecho_wchar()
+               slk_wset()
+
+       + add environment variable $NCURSES_ASSUMED_COLORS to modify the
+         assume_default_colors() extension.
+
+       Added extensions:
+               is_term_resized()
+               resize_term()
+       Added internal functions:
+               _nc_altcharset_name()   debug
+               _nc_rootname()
+               _nc_trace_ttymode()     debug
+               _nc_varargs()           debug
+               _nc_wgetch()
+       Removed internal functions:
+               _nc_background()
+       Modified internal functions:
+               _nc_freeall()           debug
+
+    5.2 (October 21, 2000)
+       Interface changes:
+
+       + revert termcap ospeed variable to 'short' (see discussion of the
+         --with-ospeed configure option).
+
+    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:
+------------------------------
 
     Beginning with 1.9.9, the ncurses distribution includes both a tset
     utility and /usr/share/tabset directory.  If you are installing ncurses,
@@ -265,7 +932,7 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        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"
@@ -297,7 +964,10 @@ 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.
 
-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.
@@ -311,7 +981,10 @@ RECENT XTERM VERSIONS
        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
@@ -348,7 +1021,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.
 
+
 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
@@ -359,7 +1035,7 @@ BSD CONVERSION NOTES:
        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 --------------------------------
@@ -432,55 +1108,44 @@ USING NCURSES WITH GPM:
        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:
+       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:
 
-               ftp.clark.net:/pub/dickey/ncurses/gpm-1.10-970125.tgz
+               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.
-
-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.
+       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
-       bug-ncurses@gnu.org. To subscribe send mail to 
-       bug-ncurses-request@gnu.org 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>
 
-       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.