]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - INSTALL
ncurses 6.3 - patch 20211030
[ncurses.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 477446840241610420e7bb43ea2954db62c4ac7f..4600641f39f373088908c202ac93e7e5c7374093 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright 2018-2019,2020 Thomas E. Dickey                                 --
+-- Copyright 2018-2020,2021 Thomas E. Dickey                                 --
 -- Copyright 1998-2017,2018 Free Software Foundation, Inc.                   --
 --                                                                           --
 -- Permission is hereby granted, free of charge, to any person obtaining a   --
@@ -26,7 +26,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: INSTALL,v 1.222 2020/04/05 00:05:52 tom Exp $
+-- $Id: INSTALL,v 1.236 2021/10/26 07:55:02 tom Exp $
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
@@ -41,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.
@@ -49,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.
@@ -270,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
 
@@ -456,6 +452,14 @@ SUMMARY OF CONFIGURE OPTIONS:
                --with-menu-libname=nmenu
                --with-panel-libname=npanel
 
+    --disable-pkg-ldflags
+       Omit options in $LDFLAGS and $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
@@ -471,6 +475,10 @@ SUMMARY OF CONFIGURE OPTIONS:
        filesystems.  This option adds a 1-second sleep to help those tools
        avoid unnecessary relinking during the install process.
 
+    --disable-root-access
+       Compile with environment restriction, so most file-access is limited
+       when running via a setuid/setgid application.
+
     --disable-root-environ
        Compile with environment restriction, so certain environment variables
        are not available when running as root, or via a setuid/setgid
@@ -508,26 +516,6 @@ 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.
@@ -578,6 +566,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)
@@ -721,6 +712,14 @@ SUMMARY OF CONFIGURE OPTIONS:
        reducing the need for juggling the global SP value with set_term() and
        delscreen().
 
+    --enable-stdnoreturn
+       When enabled, check if the <stdnoreturn.h> header exists, and if found
+       define GCC_NORETURN to _Noreturn rather than either the gcc-specific
+       __attribute__((noreturn)) or an empty token.  Doing this may require
+       calling programs which use GCC_NORETURN in their own function
+       definitions to be modified, because _Noreturn is only accepted as
+       the first token in a declaration.
+
     --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
@@ -759,6 +758,26 @@ SUMMARY OF CONFIGURE OPTIONS:
     --enable-warnings
        Turn on GCC compiler warnings.  There should be only a few.
 
+    --enable-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-weak-symbols
        If the --with-pthread option is set, check if the compiler supports
        weak-symbols.  If it does, then name the thread-capable library without
@@ -1124,7 +1143,18 @@ SUMMARY OF CONFIGURE OPTIONS:
 
     --with-pkg-config-libdir=[DIR]
        If pkg-config was found, override the automatic check for its library
-       path.
+       path.  The configure script allows only a single directory, because
+       that is used as the directory in which to install ".pc" files.
+
+       The automatic check for the library path prefers the first directory
+       which currently exists.  If none of the directories listed by
+       pkg-config exist, the check prefers a pkgconfig directory under the
+       "libdir" set by the configure script (which may not be the system
+       default), or if pkg-config lists nothing suitable, the first one which
+       is listed by pkg-config is used.
+
+       Automatic selection is overridden by providing an option-value
+       beginning with "/".
 
     --with-profile
        Generate profile-libraries These are named by adding "_p" to the root,
@@ -1363,8 +1393,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
@@ -1378,6 +1408,38 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
     you may encounter when building a system with different versions of
     ncurses:
 
+    6.3 (Oct 21, 2021)
+       Interface changes:
+
+       + the definition of TERMTYPE2 is now internal, not visible in the ABI,
+         like the enclosing TERMINAL which was previously made opaque.  This
+         was done to provide SCREEN-specific "static" variables in terminfo.
+
+       Added extensions:
+
+       + add sp-funcs for erasewchar, killwchar.
+
+       Added internal functions (other than "_sp" variants):
+
+       + _nc_safe_fopen and _nc_safe_open3 limit privileges if possible when
+         opening a file; otherwise disallow access for updating files.
+
+       + _nc_tiparm is a variant of tiparm which is used when all of the
+         parameters are known to be numbers rather than possibly strings.
+
+       + _nc_reset_tparm improves tic's checks by resetting the terminfo
+         "static variables" before calling functions which may update them.
+
+       Removed internal functions:
+
+       + none
+
+       Modified internal functions:
+
+       + _nc_trace_ttymode passes pointer to const data
+
+       + _nc_tparm_analyze passes pointer to int*, not int[]
+
     6.2 (Feb 12, 2020)
        Interface changes:
 
@@ -2088,8 +2150,8 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
        incorrect color scheme.
 
 
-IF YOU ARE A SYSTEM INTEGRATOR:
-------------------------------
+FOR SYSTEM INTEGRATORS:
+----------------------
 
     Configuration and Installation:
 
@@ -2148,7 +2210,7 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        Please pick a name unique to your console driver and set that up
        in the /etc/inittab table or local equivalent.  Send the entry to the
        terminfo maintainer (listed in the misc/terminfo file) to be included
-       in the terminfo file, if it's not already there.  See the
+       in the terminfo file, if it is not already there.  See the
        term(7) manual page included with this distribution for more on
        conventions for choosing type names.
 
@@ -2165,7 +2227,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
@@ -2181,9 +2243,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)
@@ -2302,12 +2368,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
@@ -2326,7 +2388,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
@@ -2351,14 +2415,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: