ncurses 6.2 - patch 20210213
[ncurses.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index bf1fead62859e2372bccd5ae95dbb6cfb1a93473..95f5a39316838b502ee6d3d90f32630b3a00c4ae 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,6 @@
 -------------------------------------------------------------------------------
--- Copyright (c) 1998-2017,2018 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.211 2018/09/08 23:28:11 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.
@@ -269,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
 
@@ -310,7 +307,7 @@ 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
@@ -438,6 +435,31 @@ SUMMARY OF CONFIGURE OPTIONS:
        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 shared libraries during install.  Use this option to simply
@@ -492,7 +514,7 @@ SUMMARY OF CONFIGURE OPTIONS:
 
     --disable-wattr-macros
        The 6.0 ABI adds support for extended colors and for extended mouse.
-       The former is a noticeable problem when developers inadvertantly
+       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.
@@ -560,6 +582,9 @@ SUMMARY OF CONFIGURE OPTIONS:
        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)
@@ -586,6 +611,12 @@ SUMMARY OF CONFIGURE OPTIONS:
        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
@@ -778,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)
 
@@ -860,6 +894,9 @@ SUMMARY OF CONFIGURE OPTIONS:
        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
@@ -903,6 +940,11 @@ SUMMARY OF CONFIGURE OPTIONS:
        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
@@ -954,6 +996,10 @@ SUMMARY OF CONFIGURE OPTIONS:
 
        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"
@@ -1033,6 +1079,9 @@ SUMMARY OF CONFIGURE OPTIONS:
        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
@@ -1060,6 +1109,9 @@ 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.
@@ -1173,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
@@ -1314,8 +1370,8 @@ SUMMARY OF CONFIGURE OPTIONS:
        X11R5 and X11R6 xterm.
 
 
-COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
---------------------------------------------
+COMPATIBILITY WITH OLDER RELEASES:
+---------------------------------
 
     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
@@ -1329,6 +1385,43 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
     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:
 
@@ -2002,8 +2095,8 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
        incorrect color scheme.
 
 
-IF YOU ARE A SYSTEM INTEGRATOR:
-------------------------------
+FOR SYSTEM INTEGRATORS:
+----------------------
 
     Configuration and Installation:
 
@@ -2079,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
@@ -2095,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)
@@ -2120,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
 
@@ -2130,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
@@ -2138,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
@@ -2212,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
@@ -2236,7 +2333,9 @@ USING NCURSES WITH GPM:
 
        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
@@ -2261,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: