ncurses 6.2 - patch 20210213
[ncurses.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index c7dd3278c26717171a189f9e9dcac1cdbb911f1b..95f5a39316838b502ee6d3d90f32630b3a00c4ae 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,6 @@
 -------------------------------------------------------------------------------
--- Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.               --
+-- Copyright 2018-2019,2020 Thomas E. Dickey                                 --
+-- Copyright 1998-2017,2018 Free Software Foundation, Inc.                   --
 --                                                                           --
 -- Permission is hereby granted, free of charge, to any person obtaining a   --
 -- copy of this software and associated documentation files (the             --
@@ -25,7 +26,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: INSTALL,v 1.160 2011/10/15 23:32:49 tom Exp $
+-- $Id: INSTALL,v 1.226 2020/09/06 23:41:16 tom Exp $
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
@@ -40,7 +41,7 @@ including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs',
 and `test'.  See the README file for a roadmap to the package.
 
 If you are a distribution integrator or packager, please read and act on the
-section titled IF YOU ARE A SYSTEM INTEGRATOR below.
+section titled FOR SYSTEM INTEGRATORS below.
 
 If you are converting from BSD curses and do not have root access, be sure
 to read the BSD CONVERSION NOTES section below.
@@ -48,11 +49,7 @@ to read the BSD CONVERSION NOTES section below.
 If you are trying to build applications using gpm with ncurses,
 read the USING NCURSES WITH GPM 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 are cross-compiling, see the note below on BUILDING 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.
@@ -196,17 +193,16 @@ INSTALLATION PROCEDURE:
     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).
+    databases are SVr4-compatible, but most seem to be.
+
+    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).
 
     If you run the test programs WITHOUT installing terminfo, ncurses may
     read the termcap file and cache that in $HOME/.terminfo, which will
     thereafter be used instead of the terminfo database.  See the comments
     on "--enable-getcap-cache", to see why this is a Bad Thing.
 
-    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.
@@ -227,8 +223,7 @@ INSTALLATION PROCEDURE:
   ############################################################################
   #     CAVEAT EMPTOR: `install.data' run as root will NUKE any existing     #
   #  terminfo database. If you have any custom or unusual entries SAVE them  #
-  #  before you install ncurses.  I have a file called terminfo.custom for   #
-  #  this purpose.  Don't forget to run tic on the file once you're done.    #
+  #  before you install ncurses.                                             #
   ############################################################################
 
     The terminfo(5) manual page must be preprocessed with tbl(1) before
@@ -271,8 +266,8 @@ INSTALLATION PROCEDURE:
     YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++.
 
 
-SUMMARY OF CONFIGURE OPTIONS:
-----------------------------
+CONFIGURE OPTIONS:
+-----------------
 
     The configure script provides a short list of its options when you type
 
@@ -312,14 +307,27 @@ SUMMARY OF CONFIGURE OPTIONS:
        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
+       programs are useful in this configuration, e.g., tset and tput versus
        infocmp and tic.
 
+    --disable-db-install
+       Do not install the terminal database.  This is used to omit features
+       for packages, as done with --without-progs.
+
+    --disable-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).
+
     --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-gnat-projects
+       Disable GNAT projects even if usable, for testing old makefile rules.
+
     --disable-hashmap
        Compile without hashmap scrolling-optimization code.  This algorithm is
        the default.
@@ -333,6 +341,30 @@ SUMMARY OF CONFIGURE OPTIONS:
     --disable-largefile
        Disable compiler flags needed to use large-file interfaces.
 
+    --disable-leaks
+       For testing, compile-in code that frees memory that normally would not
+       be freed, to simplify analysis of memory-leaks.
+
+       Any implementation of curses must not free the memory associated with
+       a screen, since (even after calling endwin()), it must be available
+       for use in the next call to refresh().  There are also chunks of
+       memory held for performance reasons.  That makes it hard to analyze
+       curses applications for memory leaks.  To work around this, build a
+       debugging version of the ncurses library which frees those chunks
+       which it can, and provides the _nc_free_and_exit() function to free
+       the remainder and then exit.  The ncurses utility and test programs
+       use this feature, e.g., via the ExitProgram() macro.
+
+       Because this lies outside of the library's intended usage, it is not
+       normally considered part of the ABI.  If there were some (as yet
+       unplanned) extension which frees memory in a manner that would let the
+       library resume and reallocate memory, then that would not use a "_nc_"
+       prefix.
+
+    --disable-lib-suffixes
+       Suppress the "w", "t" or "tw" suffixes which normally would be added
+       to the library names for the --enable-widec and --with-pthread options.
+
     --disable-libtool-version
        when using --with-libtool, control how the major/minor version numbers
        are used for constructing the library name.
@@ -344,19 +376,9 @@ SUMMARY OF CONFIGURE OPTIONS:
        Use --disable-libtool-version to use the libtool -version-info feature.
        This corresponds to the setting used before patch 20100515.
 
-    --disable-leaks
-       For testing, compile-in code that frees memory that normally would not
-       be freed, to simplify analysis of memory-leaks.
-
-       Any implementation of curses must not free the memory associated with
-       a screen, since (even after calling endwin()), it must be available
-       for use in the next call to refresh().  There are also chunks of
-       memory held for performance reasons.  That makes it hard to analyze
-       curses applications for memory leaks.  To work around this, build
-       a debugging version of the ncurses library which frees those chunks
-       which it can, and provides the _nc_free_and_exit() function to free
-       the remainder on exit.  The ncurses utility and test programs use this
-       feature, e.g., via the ExitProgram() macro.
+       Starting with patch 20141115, using this option causes the configure
+       script to apply the top-level VERSION file to the ABI version used
+       for libtool.
 
     --disable-lp64
        The header files will ignore use of the _LP64 symbol to make chtype
@@ -382,12 +404,76 @@ SUMMARY OF CONFIGURE OPTIONS:
        rather than the include directory.  This makes it simpler to avoid
        compile-time conflicts with other versions of curses.h
 
+       Putting the header files into a subdirectory assumes that applications
+       will follow the (standard) practice of including the headers with
+       reference to the subdirectory name.  For instance, the normal ncurses
+       header would be included using
+
+               #include <ncurses/curses.h>
+               #include <ncurses/term.h>
+
+       while the ncursesw headers would be found this way:
+
+               #include <ncursesw/curses.h>
+               #include <ncursesw/term.h>
+
+       In either case (with or without the --disable-overwrite option),
+       almost all applications are designed to include a related set of
+       curses header files from the same directory.
+
+       Manipulating the --includedir configure option to put header files
+       directly in a subdirectory of the normal include-directory defeats
+       this, and breaks builds of portable applications.  Likewise, putting
+       some headers in /usr/include, and others in a subdirectory is a good
+       way to break builds.
+
+       When configured with --disable-overwrite, the installed header files'
+       embedded #include's are adjusted to use the same style of includes
+       noted above.  In particular, the unctrl.h header is included from
+       curses.h, which means that a makefile which tells the compiler to
+       include directly from the subdirectory will fail to compile correctly.
+       Without some special effort, it will either fail to compile at all,
+       or the compiler may find a different unctrl.h file.
+
+       In addition to the curses library, a system may provide its own
+       versions of the add-on libraries (form, menu, panel), which would
+       not be compatible with ncurses.  These options allow you to rename
+       ncurses' add-on libraries to avoid conflicts when linking:
+
+               --with-form-libname=XXX
+               --with-menu-libname=XXX
+               --with-panel-libname=XXX
+
+       Rather than renaming them abitrarily, a prefix or suffix is
+       recommended.  An "n" prefix provides consistency with ncurses versus
+       curses, i.e.,
+
+               --with-form-libname=nform
+               --with-menu-libname=nmenu
+               --with-panel-libname=npanel
+
+    --disable-pkg-ldflags
+       Omit options in $EXTRA_LDFLAGS from the pkg-config ".pc" and
+       corresponding ncurses*-config script which normally are listed via
+       the "--libs" option.  These options are normally used to facilitate
+       linking to ncurses when it was configured to use the rpath feature.
+
+       See also --enable-rpath and --disable-rpath-hack.
+
     --disable-relink
        If --enable-rpath is given, the generated makefiles normally will
-       rebuild the libraries during install.  Use this option to simply
-       copy whatever the linked produced.
+       rebuild shared libraries during install.  Use this option to simply
+       copy whatever the linker produced.
+
+       Static libraries cannot simply be copied because tools use timestamps
+       to determine if the library's symbol table is up to date.  If your
+       install program supports the "-p" (preserve timestamp) option, that
+       is used when --disable-relink is given, to avoid rebuilding the symbol
+       table.
 
-       This option is ignored if --enable-rpath is not given.
+       Finally, some tools ignore the subsecond timestamps supported by some
+       filesystems.  This option adds a 1-second sleep to help those tools
+       avoid unnecessary relinking during the install process.
 
     --disable-root-environ
        Compile with environment restriction, so certain environment variables
@@ -405,6 +491,9 @@ SUMMARY OF CONFIGURE OPTIONS:
        Compile without scroll-hints code.  This option is ignored when
        hashmap scrolling is configured, which is the default.
 
+    --disable-stripping
+       Do not strip installed executables.
+
     --disable-tic-depends
        When building shared libraries, normally the tic library is linked to
        depend upon the ncurses library (or equivalently, on the tinfo-library
@@ -423,6 +512,26 @@ SUMMARY OF CONFIGURE OPTIONS:
        list documented in X/Open.  ncurses provides varargs support for this
        function.  Use --disable-tparm-varargs to disable this support.
 
+    --disable-wattr-macros
+       The 6.0 ABI adds support for extended colors and for extended mouse.
+       The former is a noticeable problem when developers inadvertently
+       compile using the ncurses6 header files and link with an ncurses5
+       library, because the wattr* macros use a new field in the WINDOW
+       structure.  These macros are used in several applications.
+
+       Since ncurses provides an actual function for each of these macros,
+       suppressing them from the curses.h header allows the ncurses5 libraries
+       to be used in most applications.
+
+       NOTE: The extended colors also are used in the cchar_t structure, but
+       fewer applications use that.
+
+       NOTE: This workaround does not help with mismatches in the ncurses
+       mouse version.  The extended mouse feature uses one less fewer bit for
+       each button, so that only the first button will work as expected with
+       a mismatch between header and library.  Again, most applications will
+       work, since most use only the first button.
+
     --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.
@@ -469,16 +578,13 @@ SUMMARY OF CONFIGURE OPTIONS:
        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-exp-win32
+       When configuring for MinGW, use the experimental Windows 10 driver.
+
     --enable-ext-colors
        Extend the cchar_t structure to allow more than 16 colors to be
        encoded.  This applies only to the wide-character (--enable-widec)
@@ -497,6 +603,20 @@ SUMMARY OF CONFIGURE OPTIONS:
        compatible with libncursesw 5.4.  None of the interfaces change, but
        applications which have mouse mask mmask_t's must be recompiled.
 
+    --enable-ext-putwin
+       Modify the file-format written by putwin() to use printable text rather
+       than binary files, allowing getwin() to read screen dumps written by
+       differently-configured ncurses libraries.  The extended getwin() can
+       still read binary screen dumps from the "same" configuration of
+       ncurses.  This does not change the ABI (the binary interface seen by
+       calling applications).
+
+    --enable-fvisibility
+       Use the gcc "-fvisibility=hidden" option to make symbols which are not
+       explicitly exported, "hidden".  Doing this may reduce the number of
+       symbols exported in the C++ binding; it should have less effect on the
+       C libraries when symbol-versioning is used.
+
     --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
@@ -542,6 +662,14 @@ SUMMARY OF CONFIGURE OPTIONS:
        terminfo entries.  This is the default, unless you have disabled the
        extended functions.
 
+    --enable-opaque-curses
+    --enable-opaque-form
+    --enable-opaque-menu
+    --enable-opaque-panel
+       Define symbol in curses.h which controls whether some library
+       structures are treated as "opaque".  The --enable-opaque-curses option
+       is overridden by the --enable-reentrant option.
+
     --enable-pc-files
        If pkg-config is found (see --with-pkg-config), generate ".pc" files
        for each of the libraries, and install them in pkg-config's library
@@ -552,9 +680,12 @@ SUMMARY OF CONFIGURE OPTIONS:
        call can be interrupted for SIGWINCH.
 
     --enable-reentrant
-       Compile experimental configuration which improves reentrant use of the
-       library by reducing global and static variables.  This option is also
-       set if --with-pthread is used.
+       Compile configuration which improves reentrant use of the library by
+       reducing global and static variables.  This option is also set if
+       --with-pthread is used.
+
+       Enabling this option adds a "t" to the library names, except for the
+       special case when --enable-weak-symbols is also used.
 
     --enable-rpath
        Use rpath option when generating shared libraries, and (with some
@@ -575,14 +706,8 @@ SUMMARY OF CONFIGURE OPTIONS:
     --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.
+       vsnprintf() or vsprintf().  It is slow, however, and is used only on
+       very old systems which lack vsnprintf().
 
     --enable-signed-char
        The term.h header declares a Booleans[] array typed "char".  But it
@@ -591,11 +716,26 @@ SUMMARY OF CONFIGURE OPTIONS:
        is not strictly compatible.  This option allows one to implement this
        alteration without patching the source code.
 
+    --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-sp-funcs
        Compile-in support for extended functions which accept a SCREEN pointer,
        reducing the need for juggling the global SP value with set_term() and
        delscreen().
 
+    --enable-string-hacks
+       Controls whether strlcat and strlcpy may be used.  The same issue
+       applies to OpenBSD's warnings about snprintf, noting that this function
+       is weakly standardized.
+
+       Aside from stifling these warnings, there is no functional improvement
+       in ncurses.
+
     --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
@@ -669,6 +809,9 @@ SUMMARY OF CONFIGURE OPTIONS:
        Tell where to install the Ada includes (default:
        PREFIX/lib/ada/adainclude)
 
+    --with-ada-libname=NAME
+       Override the name of the Ada binding (default: "AdaCurses")
+
     --with-ada-objects=DIR
        Tell where to install the Ada objects (default:  PREFIX/lib/ada/adalib)
 
@@ -685,10 +828,6 @@ SUMMARY OF CONFIGURE OPTIONS:
        correspond with that in <stdbool.h>, or defaults to platform-specific
        sizes).
 
-    --with-build-cpp=XXX
-       This option is provided by the same macro used for $BUILD_CC, etc.,
-       but is not directly used by ncurses.
-
     --with-build-cc=XXX
        If cross-compiling, specify a host C compiler, which is needed to
        compile a few utilities which generate source modules for ncurses.
@@ -703,6 +842,10 @@ SUMMARY OF CONFIGURE OPTIONS:
        You can also set the environment variable $BUILD_CFLAGS rather than
        use this option.
 
+    --with-build-cpp=XXX
+       This option is provided by the same macro used for $BUILD_CC, etc.,
+       but is not directly used by ncurses.
+
     --with-build-cppflags=XXX
        If cross-compiling, specify the host C preprocessor-flags.  You might
        need to do this if the target compiler has unusual flags which confuse
@@ -747,6 +890,19 @@ SUMMARY OF CONFIGURE OPTIONS:
        executables, e.g., by setting "--with-chtype=long" (the configure
        script supplies "unsigned").
 
+    --with-config-suffix=XXX
+       Specify a suffix for the ncursesw6-config file, etc., used to work
+       around conflicts with packages.
+
+    --with-cxx-libname=NAME
+       Override the basename of the ncurses++ library (default: "ncurses++")
+
+    --with-cxx-shared
+       When --with-shared is set, build libncurses++ as a shared library.
+       This implicitly relies upon building with gcc/g++, since other
+       compiler suites may have differences in the way shared libraries are
+       built.  libtool by the way has similar limitations.
+
     --with-database=XXX
        Specify the terminfo source file to install.  Usually you will wish
        to install ncurses' default (misc/terminfo.src).  Certain systems
@@ -769,10 +925,26 @@ SUMMARY OF CONFIGURE OPTIONS:
        For testing, compile and link with Gray Watson's dmalloc library.
        This also sets the --disable-leaks option.
 
+    --with-export-syms[=XXX]
+       Limit exported symbols using libtool.  The configure script
+       automatically chooses an appropriate ".sym" file, which lists the
+       symbols which are part of the ABI.
+
+    --with-extra-suffix[=XXX]
+       Add the given suffix to header- and library-names to simplify
+       installing incompatible ncurses libraries, e.g., those using a
+       different ABI.  The renaming affects the name of the
+       include-subdirectory if --disable-overwrite is given.
+
     --with-fallbacks=XXX
        Specify a list of fallback terminal descriptions which will be
        compiled into the ncurses library.  See CONFIGURING FALLBACK ENTRIES.
 
+       See also "--with-tic-path" and "--with-infocmp-path".
+
+    --with-form-libname=NAME
+       Override the basename of the form library (default: "form")
+
     --with-gpm
        use Alessandro Rubini's GPM library to provide mouse support on the
        Linux console.  Prior to ncurses 5.5, this introduced a dependency on
@@ -812,13 +984,22 @@ SUMMARY OF CONFIGURE OPTIONS:
        filesystem-based terminfo entries.
 
        Use the parameter value to give the install-prefix used for the
-       datbase, e.g.,
+       database, e.g.,
                --with-hashed-db=/usr/local/BigBase
        to find the corresponding include- and lib-directories under the
-       given directory.
+       given directory.  Alternatively, you can specify a directory leaf
+       name, e.g.,
+               --with-hashed-db=db4
+       to make the configure script look for files in a subdirectory such as
+               /usr/include/db4/db.h
+               /usr/lib/db4/libdb.so
 
        See also the --enable-getcap option.
 
+    --with-infocmp-path[=XXX]
+       Use this option to override the automatic detection of tic in your
+       $PATH when building fallbacks (see "--with-fallbacks").
+
     --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"
@@ -831,7 +1012,17 @@ SUMMARY OF CONFIGURE OPTIONS:
        NOTE: a few systems build shared libraries with fixed pathnames; this
        option probably will not work for those configurations.
 
-     --with-libtool[=XXX]
+    --with-lib-prefix=XXX
+       OS/2 EMX used a different naming convention from most Unix-like
+       platforms.  It required that the "lib" part of a library name was
+       omitted.  Newer EMX as part of eComStation does not follow that
+       convention.  Use this option to override the configure script's
+       assumptions about the library-prefix.  If this option is omitted, it
+       uses the original OS/2 EMX convention for that platform.  Use
+       "--with-lib-prefix=lib" for the newer EMX in eComStation.  Use
+       "--without-lib-prefix" to suppress it for other odd platforms.
+
+    --with-libtool[=XXX]
        Generate libraries with libtool.  If this option is selected, then it
        overrides all other library model specifications.  Note that libtool
        must already be installed, uses makefile rules dependent on GNU make,
@@ -847,7 +1038,14 @@ SUMMARY OF CONFIGURE OPTIONS:
        macros for libtool, e.g., AC_PROG_LIBTOOL.  See the comments in
        aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure
        using the appropriate patch for autoconf from
-               http://invisible-island.net/autoconf/
+               https://invisible-island.net/autoconf/
+
+    --with-libtool-opts=XXX
+       Allow user to pass additional libtool options into the library creation
+       and link steps.  The main use for this is to do something like
+               ./configure --with-libtool-opts=-static
+       to get the same behavior as automake-flavored
+               ./configure --enable-static
 
     --with-manpage-aliases
        Tell the configure script you wish to create entries in the
@@ -877,10 +1075,13 @@ SUMMARY OF CONFIGURE OPTIONS:
        copying the man-page for each alias.
 
     --with-manpage-tbl
-       Tell the configure script that you with to preprocess the manpages
+       Tell the configure script that you wish to preprocess the manpages
        by running them through tbl to generate tables understandable by
        nroff.
 
+    --with-menu-libname=NAME
+       Override the basename of the menu library (default: "menu")
+
     --with-mmask-t=TYPE
        Override type of mmask_t, which stores the mouse mask.  Prior to
        ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it
@@ -908,6 +1109,23 @@ SUMMARY OF CONFIGURE OPTIONS:
        those using termcap, do not use the higher speeds.  Your application
        (or system, in general) may or may not.
 
+    --with-panel-libname=NAME
+       Override the basename of the panel library (default: "panel")
+
+    --with-pc-suffix=SUFFIX
+       If ".pc" files are installed, optionally add a suffix to the files
+       and corresponding package names to separate unusual configurations.
+       If no option value is given (or if it is "none"), no suffix is added.
+
+    --with-pcre2
+       Add PCRE2 (Perl-compatible regular expressions v2) to the build if it
+       is available and the user requests it.  Assume the application will
+       otherwise use the POSIX interface.
+
+       This is useful for MinGW builds because the usual POSIX interface is
+       not supplied by the development environment, while ncurses' form
+       library uses a regular expression feature for one of the field types.
+
     --with-pkg-config=[DIR]
        Check for pkg-config, optionally specifying its path.
 
@@ -947,11 +1165,23 @@ SUMMARY OF CONFIGURE OPTIONS:
        shared libraries, you may encounter problems with the linker.
        For example, it may prevent you from running  the build tree's
        copy of tic (for installing the terminfo database) because it
-       loads the system's copy of the ncurses shared libraries.  In that
-       case, using the misc/shlib script may be helpful, since it sets
-       $LD_LIBRARY_PATH to point to the build tree, e.g.,
+       loads the system's copy of the ncurses shared libraries.
+
+       In that case, using the misc/shlib script may be helpful, since it
+       sets $LD_LIBRARY_PATH to point to the build tree, e.g.,
+
                ./misc/shlib make install
 
+       Alternatively, for most platforms, the linker accepts a list of
+       directories which will be searched for libraries at run-time.  The
+       configure script allows you to modify this list using the
+       RPATH_LIST environment variable.  It is a colon-separated list of
+       directories (default:  the "libdir" set via the configure script).
+       If you set that to put "../lib" first in the list, the linker will
+       look first at the build-directory, and avoid conflict with libraries
+       already installed.  One drawback to this approach is that libraries
+       can be accidentally searched in any "../lib" directory.
+
        NOTE: If you use the --with-ada-sharedlib option, you should also
        set this option, to ensure that C-language modules needed for the
        Ada binding use appropriate compiler options.
@@ -975,6 +1205,9 @@ SUMMARY OF CONFIGURE OPTIONS:
        Specify a search-list of terminfo directories which will be compiled
        into the ncurses library (default: DATADIR/terminfo)
 
+       This is a colon-separated list, like the TERMINFO_DIRS environment
+       variable.
+
     --with-termlib[=XXX]
        When building the ncurses library, organize this as two parts:  the
        curses library (libncurses) and the low-level terminfo library
@@ -992,6 +1225,10 @@ SUMMARY OF CONFIGURE OPTIONS:
        Specify a search-list of termcap files which will be compiled into the
        ncurses library (default:  /etc/termcap:/usr/share/misc/termcap)
 
+    --with-tic-path[=XXX]
+       Use this option to override the automatic detection of tic in your
+       $PATH when building fallbacks (see "--with-fallbacks").
+
     --with-ticlib[=XXX]
        When building the ncurses library, build a separate library for
        the modules that are used only by the utility programs.  Normally
@@ -1007,6 +1244,15 @@ SUMMARY OF CONFIGURE OPTIONS:
        library dependencies for tic and other programs built with the tic
        library.
 
+    --with-tparm-arg[=XXX]
+       Override the type used for tparm() arguments, which normally is a
+       "long".  However the function must assume that its arguments can hold a
+       pointer to char's which is not always workable for 64-bit platforms.  A
+       better choice would be intptr_t, which was not available at the time
+       tparm's interface was defined.
+
+       If the option is not given, this defaults to "long".
+
     --with-trace
        Configure the trace() function as part of the all models of the ncurses
        library.  Normally it is part of the debug (libncurses_g) library only.
@@ -1015,6 +1261,37 @@ SUMMARY OF CONFIGURE OPTIONS:
        For testing, compile with debug option.
        This also sets the --disable-leaks option.
 
+    --with-versioned-syms[=XXX]
+       The Solaris, GNU and reportedly some other linkers (ld) accept a
+       "--version-script" option which tells the linker to annotate the
+       resulting objects with version identifiers.
+
+       Use "objdump -T" on a library to see the annotations.
+
+       The configure script attempts to automatically apply a suitable ".map"
+       file to provide this information for Linux.  Solaris mapfiles differ:
+
+       a) comments are not accepted
+       b) wildcards are not accepted, except for a special case of "_*".
+       c) each symbol listed in the map file must exist in the library
+
+       The Solaris limitations conflict with the development goal of providing
+       a small set of ".map" files as examples, which cover the most common
+       configurations.  Because that coverage is done by merging together
+       several builds, some symbols will be listed in the the ".map" files
+       that do not happen to be present in one configuration or another.
+
+       The sample ".map" (and ".sym") files are generated using a set of
+       scripts which build several configurations for each release version,
+       checking to see which of the "_nc_" symbols can be made local.  In
+       addition to the ncurses libraries and programs, the symbols used
+       by the "tack" program before version 1.08 are made global.
+
+       These sample ".map" files will not cover all possible combinations.
+       In some cases, e.g., when using the --with-weak-symbols option, you
+       may prefer to use a different ".map" file by setting this option's
+       value.
+
     --with-wrap-prefix=XXX
        When using the --enable-reentrant option, ncurses redefines variables
        that would be global in curses, e.g., LINES, as a macro that calls a
@@ -1026,6 +1303,19 @@ SUMMARY OF CONFIGURE OPTIONS:
        which applications should not call even via a macro.  This configure
        option lets you choose the prefix for these wrapped variables.
 
+    --with-x11-rgb=FILE
+       Provide a pathname for the X11 rgb file, used by the picsmap program.
+       This overrides a configure check which usually works, but is needed
+       due to the lack of standardization for X11's files.
+
+    --with-xterm-kbs=XXX
+       Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII
+       backspace) or DEL (^?, or 127).  XXX can be BS (or bs, 8) or DEL
+       (or del, 127).
+
+       During installation, the makefile and scripts modifies the "xterm+kbs"
+       terminfo entry to use this setting.
+
     --without-ada
        Suppress the configure script's check for Ada95, do not build the
        Ada95 binding and related demo.
@@ -1065,6 +1355,11 @@ SUMMARY OF CONFIGURE OPTIONS:
        programs (e.g., tic).  The test applications will still be built if you
        type "make", though not if you simply do "make install".
 
+    --without-tack
+       Suppress build/install with tack program, if it happens to be
+       in the same build-tree (tack was moved out of the ncurses source-tree
+       in 20070203).
+
     --without-tests
        Tell the configure script to suppress the build of ncurses' test
        programs.
@@ -1075,21 +1370,187 @@ SUMMARY OF CONFIGURE OPTIONS:
        X11R5 and X11R6 xterm.
 
 
-COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
---------------------------------------------
+COMPATIBILITY WITH OLDER RELEASES:
+---------------------------------
 
-    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.
+    Because ncurses implements X/Open Curses, 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 largely correspond to X/Open (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:
 
+    6.2 (Feb 12, 2020)
+       Interface changes:
+
+       + the terminal database must be compiled with ncurses 6.2 tic;
+         older versions of tic/infocmp will not work.  Aside from that,
+         the compiled database will work with older applications.
+
+       + "*.pc" and "ncurses*-config" files give the same information.
+
+       + vwprintw and vwscanw are deprecated.
+
+       Added extensions:
+
+       + These make it simpler to substitute a debug-configuration of the
+         library for non-debug:
+               curses_trace
+               exit_curses
+               exit_terminfo
+
+       Added internal functions (other than "_sp" variants):
+
+       + These provide fast-lookup of common user-defined capabilities:
+               _nc_find_user_entry
+               _nc_get_userdefs_table
+               _nc_get_hash_user
+
+       + This is added to work around compiler-warnings:
+               _nc_fmt_funcptr
+
+       Removed internal functions:
+
+       + _nc_import_termtype
+
+       Modified internal functions:
+
+       + _nc_reserve_pairs no longer returns a value
+
+    6.1 (Jan 27, 2018)
+       Interface changes:
+
+       + X/Open Curses specifies a "reserved" void* parameter in several
+         functions, saying that it must be NULL.  In this release, if the
+         parameter is non-NULL, it is interpreted as a point to an integer
+         containing a color pair.  In previous releases, a non-NULL parameter
+         caused an error return.  Portable applications are unaffected.  Here
+         are the functions which have been extended:
+               attr_get
+               attr_off
+               attr_on
+               attr_set
+               chgat
+               color_set
+               mvchgat
+               mvwchgat
+               slk_attr_off
+               slk_attr_on
+               slk_attr_set
+               wattr_get
+               wattr_on
+               wattr_off
+               wattr_set
+               wchgat
+               wcolor_set
+
+       + the TERMINAL structure declared in <term.h> has been made opaque,
+         and its size increased to handle the increased size of color pair
+         and color value, as well as other numeric capabilities.
+
+         A few applications required change, e.g., to use def_prog_mode;
+         only one application (tack) is known to have a valid reason for
+         accessing these internal details, and that was addressed by the
+         release of tack 1.08 in 2017.  Internal functions marked as used
+         by tack will be deprecated in future releases.
+
+       Added extensions:
+
+       + Several new functions were added to manipulate extended color pairs
+         and color values.  These include:
+               alloc_pair
+               extended_color_content
+               extended_pair_content
+               extended_slk_color
+               find_pair
+               free_pair
+               init_extended_color
+               init_extended_pair
+               reset_color_pairs
+
+         as well as corresponding sp-functions.
+
+       + A new terminfo capability "RGB" tells the ncurses library that the
+         color values are red/green/blue, to eliminate the need for palettes
+         in that special case for the color_content function.
+
+       Added internal functions (other than "_sp" variants):
+               _nc_copy_termtype2
+               _nc_export_termtype2
+               _nc_fallback2
+               _nc_find_prescr
+               _nc_forget_prescr
+               _nc_free_termtype2
+               _nc_read_entry2
+               _nc_write_object
+
+       Removed internal functions:
+               _nc_check_termtype
+               _nc_resolve_uses
+
+       Modified internal functions:
+
+       + symbols are used by tic/infocmp/toe:
+               _nc_align_termtype - change parameters to TERMTYPE2*
+               _nc_check_termtype2 - change parameter to TERMTYPE2*
+               _nc_read_file_entry - change parameter to TERMTYPE2*
+               _nc_read_termtype - change parameter to TERMTYPE2*
+               _nc_trim_sgr0 - change parameter to TERMTYPE2*
+               _nc_write_entry - change parameter to TERMTYPE2*
+
+       + symbols used only within the library:
+               _nc_fallback - change return type to TERMTYPE2*
+               _nc_init_termtype - change parameter to TERMTYPE2*
+
+    6.0 (Aug 08, 2015)
+       Interface changes:
+
+       + The 6.0 ABI modifies the defaults for these configure options:
+          --enable-const
+          --enable-ext-colors
+          --enable-ext-mouse
+          --enable-ext-putwin
+          --enable-interop
+          --enable-lp64
+          --enable-sp-funcs
+          --with-chtype=uint32_t
+          --with-mmask_t=uint32_t
+          --with-tparm-arg=intptr_t
+
+       + ncurses supports symbol versioning.  If you use this feature, about
+         half of the "_nc_" private symbols are changed to local symbols.
+
+       + a few applications may need to explicitly flush the standard output
+         when switching between printf's and (curses) printw.
+
+       Added extensions:
+
+       + use_tioctl is an improvement over use_env
+
+       + added wgetdelay to support the NCURSES_OPAQUE feature.
+
+       Added internal functions (other than "_sp" variants):
+               _nc_init_termtype
+               _nc_mvcur
+               _nc_putchar
+               _nc_setenv_num
+               _nc_trace_mmask_t
+
+       Removed internal functions:
+               none
+
+       Modified internal functions:
+               _nc_do_color - change parameters from short/bool to int
+               _nc_keypad - change parameter from bool to int
+               _nc_setupscreen - change parameter from bool to int
+               _nc_signal_handler - change parameter from bool to int
+
+    5.9 (Apr 04, 2011)
     5.8 (Feb 26, 2011)
        Interface changes:
 
@@ -1634,15 +2095,16 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
        incorrect color scheme.
 
 
-IF YOU ARE A SYSTEM INTEGRATOR:
-------------------------------
+FOR SYSTEM INTEGRATORS:
+----------------------
 
     Configuration and Installation:
 
        On platforms where ncurses is assumed to be installed in /usr/lib,
-       the configure script uses "/usr" as a default:
+       the configure script uses "/usr" as a default.  These include any
+       that use the Linux kernel, as well as these special cases:
 
-               GNU/Linux, FreeBSD, NetBSD, OpenBSD, Cygwin
+               FreeBSD, NetBSD, OpenBSD, Cygwin, MinGW
 
        For other platforms, the default is "/usr/local".  See the discussion
        of the "--disable-overwrite" option.
@@ -1710,7 +2172,7 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        that will make users' lives easier rather than harder.
 
 
-RECENT XTERM VERSIONS:
+MODERN XTERM VERSIONS:
 ---------------------
 
        The terminfo database file included with this distribution assumes you
@@ -1726,9 +2188,13 @@ 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
-       pre-fetched fallback entries.  This must be done on a machine which
-       has ncurses' infocmp and terminfo database installed (as well as
-       ncurses' tic and infocmp programs).
+       pre-fetched fallback entries.
+       
+       NOTE: This must be done on a machine which has ncurses' infocmp and
+       terminfo database installed (as well as ncurses' tic and infocmp
+       programs).  That is because the fallback sources are generated and
+       compiled into the library before the build-tree's copy of infocmp is
+       available.
 
        These entries are checked by setupterm() only when the conventional
        fetches from the terminfo tree and the termcap fallback (if configured)
@@ -1751,9 +2217,10 @@ CONFIGURING FALLBACK ENTRIES:
                        $TERMINFO \
                        ../misc/terminfo.src \
                        `which tic` \
+                       `which infocmp` \
                        linux vt100 xterm >fallback.c
 
-       The first three parameters of the script are normally supplied by
+       The first four parameters of the script are normally supplied by
        the configured makefiles via the "--with-fallbacks" option.  They
        are
 
@@ -1761,6 +2228,8 @@ CONFIGURING FALLBACK ENTRIES:
                2) the source for the terminfo entries
                3) the location of the tic program, used to create a terminfo
                   database.
+               4) the location of the infocmp program, used to print a terminfo
+                  description.
 
        Then just rebuild and reinstall the library as you would normally.
        You can restore the default empty fallback list with
@@ -1769,10 +2238,11 @@ CONFIGURING FALLBACK ENTRIES:
                        $TERMINFO \
                        ../misc/terminfo.src \
                        `which tic` \
+                       `which infocmp` \
                        >fallback.c
 
        The overhead for an empty fallback list is one trivial stub function.
-       Any non-empty fallback list is const-ed and therefore lives in sharable
+       Any non-empty fallback list is const'd and therefore lives in shareable
        text space.  You can look at the comment trailing each initializer in
        the generated ncurses/fallback.c file to see the core cost of the
        fallbacks.  A good rule of thumb for modern vt100-like entries is that
@@ -1803,11 +2273,10 @@ installation), there are a couple of details you need to be aware of.
 They have to do with the ncurses library, which uses terminfo rather
 than termcap for describing terminal characteristics.
 
-Though the ncurses library is terminfo-based, it will interpret your
+Though the ncurses library is terminfo-based, it can interpret your
 TERMCAP variable (if present), any local termcap files you reference
-through it, and the system termcap file.  However, in order to avoid
-slowing down your application startup, it will only do this once per
-terminal type!
+through it, and the system termcap file.  However, to avoid slowing
+down your application startup, it does this only once per terminal type!
 
 The first time you load a given terminal type from your termcap
 database, the library initialization code will automatically write it
@@ -1844,12 +2313,8 @@ terminfo directory directly.
 
 ------------------------------- CUT HERE --------------------------------
 
-USING NCURSES WITH AFS:
-       AFS treats each directory as a separate logical filesystem, you
-       can't hard-link across them.  The --enable-symlinks option copes
-       with this by making tic use symbolic links.
-
-USING NCURSES WITH GPM:
+USING GPM:
+---------
        Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse)
        which is used with Linux console.  Be aware that GPM is commonly
        installed as a shared library which contains a wrapper for the curses
@@ -1866,9 +2331,11 @@ USING NCURSES WITH GPM:
        but the linker may not cooperate, producing mysterious errors.
        See the FAQ, as well as the discussion under the --with-gpm option:
 
-       http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
+       https://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
+
 
-BUILDING NCURSES WITH A CROSS-COMPILER
+BUILDING 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
@@ -1893,14 +2360,26 @@ BUILDING NCURSES WITH A CROSS-COMPILER
        When ncurses has been successfully cross-compiled, you may want to use
        "make install" (with a suitable target directory) to construct an
        install tree.  Note that in this case (as with the --with-fallbacks
-       option), ncurses uses the development platform's tic to do the
-       "make install.data" portion.
+       option), ncurses uses the development platform's tic to do the "make
+       install.data" portion.
 
        The system's tic program is used to install the terminal database,
-       even for cross-compiles.  For best results, the tic program should
-       be from the most current version of ncurses.
-
-BUGS:
+       even for cross-compiles.  For best results, the tic program should be
+       from the most current version of ncurses.
+
+       NOTE:  the system's tic program may use a different terminfo database
+       format than the target system.  For instance, as described in term(5),
+       the conventional terminfo layout uses a directory hierarchy with one
+       letter names, while some platforms use two-letter names to work with
+       case-insensitive filesystems.  The configure script searches for a tic
+       program using the AC_CHECK_TOOL macro, which will prefer programs
+       using the canonical host prefix in their name.  You can use this fact
+       to provide a cross-compiler support utility tic, otherwise you can
+       override the configure script's choice using --with-tic-path
+
+
+BUG REPORTS:
+-----------
        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: