-------------------------------------------------------------------------------
--- 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 --
-- 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.237 2021/11/20 17:54:20 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
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.
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.
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
--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
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
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.
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)
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
--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
--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 "/".
+
+ If this option is omitted, the default directory for installing
+ ".pc" files is ${libdir}/pkgconfig
--with-profile
Generate profile-libraries These are named by adding "_p" to the root,
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
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:
incorrect color scheme.
-IF YOU ARE A SYSTEM INTEGRATOR:
-------------------------------
+FOR SYSTEM INTEGRATORS:
+----------------------
Configuration and Installation:
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.
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
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)
------------------------------- 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
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
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: