-------------------------------------------------------------------------------
--- Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. --
+-- Copyright 2018-2023,2024 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 --
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: INSTALL,v 1.194 2015/10/24 19:03:42 Tomas.Cech Exp $
+-- $Id: INSTALL,v 1.257 2024/08/10 17:43:39 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
* READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
************************************************************
-You should be reading the file INSTALL in a directory called ncurses-d.d, where
-d.d is the current version number. There should be several subdirectories,
-including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs',
-and `test'. See the README file for a roadmap to the package.
+You should be reading the file INSTALL in a directory called ncurses-d.d,
+where d.d is the current version number. There should be several
+subdirectories, including 'c++', 'form', 'man', 'menu', 'misc', 'ncurses',
+'panel', 'progs', and 'test'. See 'README' 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.
+read the USING 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.
INSTALLATION PROCEDURE:
----------------------
-1. First, decide whether you want ncurses to replace your existing library (in
- which case you'll need super-user privileges) or be installed in parallel
- with it.
+1. First, decide whether you want ncurses to replace your existing library
+ (in which case you'll need super-user privileges) or be installed in
+ parallel with it.
The --prefix option to configure changes the root directory for installing
ncurses. The default is normally in subdirectories of /usr/local, except
for systems where ncurses is normally installed as a system library (see
- "IF YOU ARE A SYSTEM INTEGRATOR"). Use --prefix=/usr to replace your
+ "FOR SYSTEM INTEGRATORS"). Use --prefix=/usr to replace your
default curses distribution.
The package gets installed beneath the --prefix directory as follows:
See also the discussion of --with-install-prefix.
-2. Type `./configure' in the top-level directory of the distribution to
+2. Type './configure' in the top-level directory of the distribution to
configure ncurses for your operating system and create the Makefiles.
Besides --prefix, various configuration options are available to customize
- the installation; use `./configure --help' to list the available options.
+ the installation; use './configure --help' to list the available options.
If your operating system is not supported, read the PORTABILITY section in
the file ncurses/README for information on how to create a configuration
file for your system.
- The `configure' script generates makefile rules for one or more object
+ The 'configure' script generates makefile rules for one or more object
models and their associated libraries:
libncurses.a (normal)
the library names (e.g., libncursest.a, libncursestw.a).
If you do not specify any models, the normal and debug libraries will be
- configured. Typing `configure' with no arguments is equivalent to:
+ configured. Typing 'configure' with no arguments is equivalent to:
./configure --with-normal --with-debug --enable-overwrite
You can make curses and terminfo fall back to an existing file of termcap
definitions by configuring with --enable-termcap. If you do this, the
library will search /etc/termcap before the terminfo database, and will
- also interpret the contents of the TERM environment variable. See the
+ also interpret the contents of the $TERM environment variable. See the
section BSD CONVERSION NOTES below.
-3. Type `make'. Ignore any warnings, no error messages should be produced.
+3. Type 'make'. Ignore any warnings; no error messages should be produced.
This should compile the ncurses library, the terminfo compiler tic(1),
captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1)
programs (see the manual pages for explanation of what they do), some test
database before running the test programs. Not all vendors' terminfo
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).
+ 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
You can use it to verify that the screen highlights work correctly, that
cursor addressing and window scrolling works OK, etc.
-5. Once you've tested, you can type `make install' to install libraries,
- the programs, the terminfo database and the manual pages. Alternately, you
- can type `make install' in each directory you want to install. In the
+5. Once you've tested, you can type 'make install' to install libraries,
+ the programs, the terminfo database and the manual pages. Alternately,
+ you can type 'make install' in each directory you want to install. In the
top-level directory, you can do a partial install using these commands:
'make install.progs' installs tic, infocmp, etc...
'make install.includes' installs the headers.
'make install.libs' installs the libraries (and the headers).
- 'make install.data' installs the terminfo data. (Note: `tic' must
+ 'make install.data' installs the terminfo data. (Note: 'tic' must
be installed before the terminfo data can be
compiled).
'make install.man' installs the manual pages.
############################################################################
- # CAVEAT EMPTOR: `install.data' run as root will NUKE any existing #
+ # 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. #
############################################################################
compile using its curses.h you'll end up with a large number of
undefined symbols at link time.
- IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory
- and run the `capconvert' script. This script will deduce various things
+ IF YOU DO NOT HAVE ROOT: Change directory to the 'progs' subdirectory
+ and run the 'capconvert' script. This script will deduce various things
about your environment and use them to build you a private terminfo tree,
so you can use ncurses applications.
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
./configure --help
- The --help and several options are common to all configure scripts that are
- generated with autoconf. Those are all listed before the line
+ The --help and several options are common to all configure scripts that
+ are generated with autoconf. Those are all listed before the line
--enable and --with options recognized:
- The other options are specific to this package. We list them in alphabetic
- order.
+ The other options are specific to this package. We list them in
+ alphabetic order.
--disable-assumed-color
With ncurses 5.1, we introduced a new function, assume_default_colors()
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.
--disable-largefile
Disable compiler flags needed to use large-file interfaces.
- --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.
-
- The default uses the -version-number feature of libtool, which makes
- the library names compatible (though not identical) with the standard
- build using --with-shared.
-
- Use --disable-libtool-version to use the libtool -version-info feature.
- This corresponds to the setting used before patch 20100515.
-
- 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-leaks
For testing, compile-in code that frees memory that normally would not
be freed, to simplify analysis of memory-leaks.
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.
+
+ The default uses the -version-number feature of libtool, which makes
+ the library names compatible (though not identical) with the standard
+ build using --with-shared.
+
+ Use --disable-libtool-version to use the libtool -version-info feature.
+ This corresponds to the setting used before patch 20100515.
+
+ 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
and mmask_t types 32 bits (they may be long on 64-bit hosts, for
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 arbitrarily, 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 $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 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.
+
+ 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.
- This option is ignored if --enable-rpath is not given.
+ --disable-root-access
+ Compile with environment restriction, so most file-access is limited
+ when running as root, or 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
- application. These are (for example $TERMINFO) those that allow the
- search path for the terminfo or termcap entry to be customized.
+ are not available when running as root. These are (for example
+ $TERMINFO) those that allow the search path for the terminfo or termcap
+ entry to be customized.
+
+ Disabling the root environment variables also disables the setuid
+ environment variables by default. Use the --disable-setuid-environ
+ option to modify this behavior.
--disable-rpath-hack
Normally the configure script helps link libraries found in unusual
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-setuid-environ
+ Compile with environment restriction, so certain environment variables
+ are not available when running via a setuid/setgid application. These
+ are (for example $TERMINFO) those that allow the search path for the
+ terminfo or termcap entry to be customized.
+
+ A setuid/setgid application inherits its environment variables from
+ the current user, in contrast to sudo which may limit the environment
+ variables that ncurses uses.
+
--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
problem.
--enable-bsdpad
- Recognize BSD-style prefix padding. Some ancient BSD programs (such as
- nethack) call tputs("50") to implement delays.
+ Recognize BSD-style prefix padding. Some programs written using
+ the BSD curses API use tputs("50") to implement delays.
+
+ --enable-check-size
+ Compile-in feature to detect screensize for terminals which do not
+ advertise their screensize, e.g., serial terminals.
--enable-colorfgbg
Compile with experimental $COLORFGBG code. That environment variable
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)
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
may not be accurate, or that your stty settings have disabled the use
of tabs.
+ --enable-install-prefix
+ Extend the --with-install-prefix feature to replace the prefix value
+ with $DESTDIR rather than simply prepending $DESTDIR to install
+ pathnames. This works with any "make" which supports AT&T style
+ variable substitution.
+
--enable-interop
Compile-in experimental interop bindings. These provide generic types
for the form-library.
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 controlling whether some library structures
+ are opaque, meaning that their members are accessible only via the
+ documented API. The --enable-opaque-curses option may be overridden
+ by the --enable-reentrant option.
+
+ Enabling opaque-curses enables opaque for the form, menu, and panel
+ libraries. Use their corresponding options to disable the feature
+ individually.
+
+ NOTE: beginning with ncurses 6.5 this option is enabled by default;
+ older versions disable it by default.
+
--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
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-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
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-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
symbolic link to equate libncurses.so with libncursesw.so
NOTE: the Ada95 binding may be built against either version of the the
- ncurses library, but you must decide which: the binding installs the
- same set of files for either version. Currently (2002/6/22) it does
+ ncurses library, but you must decide which: the binding installs the
+ same set of files for either version. Currently (2023/10/21) it does
not use the extended features from the wide-character code, so it is
probably better to not install the binding for that configuration.
+ NOTE: beginning with ncurses 6.5 this option is enabled by default;
+ older versions disable it by default.
+
--enable-xmc-glitch
Compile-in support experimental xmc (magic cookie) code.
+ --with-abi-altered=NUM
+ Override the displayed (rather than compiled-in) ABI. Only packagers
+ who have created configurations where the ABI differs from ncurses
+ should be interested in this option.
+
--with-abi-version=NUM
Override the ABI version, which is used in shared library filenames.
Normally this is the same as the release version; some ports have
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)
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.
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
executables, e.g., by setting "--with-chtype=long" (the configure
script supplies "unsigned").
+ --with-config-suffix=XXX
+ Specify an suffix for "ncurses*" in the ncurses*-config filename to
+ work around conflicts with packages. The suffix is placed before the
+ dash.
+
+ --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
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
See also the --enable-getcap option.
+ --with-infocmp-path[=XXX]
+ Use this option to override the automatic detection of infocmp 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"
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
- Specify additional libtool options.
+ 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
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
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.
+ If ".pc" files are installed (see --enable-pc-files), 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.
+ --with-pkg-config[=CMD]
+ Check for pkg-config, optionally specifying its pathname.
- --with-pkg-config-libdir=[DIR]
+ --with-pkg-config-libdir[=DIR]
If pkg-config was found, override the automatic check for its library
- path.
+ path. The optional DIR value can be
+
+ "auto", automatically use pkg-config's library directory, or
+
+ "libdir", use a ${libdir}/pkgconfig (based on the configuration), or
+
+ a directory path, i.e., beginning with "/".
+
+ 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.
--with-profile
Generate profile-libraries These are named by adding "_p" to the root,
This is normally chosen automatically based on the type of system
which you are building on. We use it for testing the configure script.
+ --with-strip-program=XXX
+ When stripping executables during install, use the specified program
+ rather than "strip".
+
--with-sysmouse
use FreeBSD sysmouse interface provide mouse support on the console.
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
+ This is a colon-separated list, like the $TERMINFO_DIRS environment
variable.
--with-termlib[=XXX]
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
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.
+ --with-valgrind
+ 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
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 are made global.
+ The sample ".map" (and ".sym") files were generated using a set of
+ scripts which built several configurations for each release version,
+ checking to see which of the "_nc_" symbols can be made local.
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-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.
-
- --with-valgrind
- For testing, compile with debug option.
- This also sets the --disable-leaks option.
-
--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
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). If XXX is "auto", the configure script chooses BS or
+ DEL according to platform defaults.
+
+ 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.
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.
+ 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).
+ 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.
you may encounter when building a system with different versions of
ncurses:
+ 6.5 (Apt 27, 2024)
+ Interface changes:
+
+ + the WINDOW structure and some related internal data types declared
+ in <curses.h> have been made opaque by default;
+ + the FORM, MENU, and PANEL structures and related internal data types
+ from their corresponding header files have been made opqaue by
+ default; and
+ + support for wide characters is now enabled by default.
+
+ Added extensions:
+
+ + is_cbreak, is_echo, is_nl, and is_raw, as well as "_sp" variants
+
+ + tiparm_s and tiscan_s
+
+ Added internal functions (other than "_sp" variants):
+
+ + _nc_env_access
+
+ Removed internal functions:
+
+ + none
+
+ Modified internal functions:
+
+ + These now pass a const parameter: _nc_delink_entry, _nc_str_copy,
+ and _nc_trans_string
+
+ 6.4 (Dec 31, 2022)
+ Interface changes:
+
+ + none
+
+ Added extensions:
+
+ + none
+
+ Added internal functions (other than "_sp" variants):
+
+ + add _nc_free_termtype1 and _nc_free_tparm, for memory-leaks
+
+ Removed internal functions:
+
+ + none
+
+ Modified internal functions:
+
+ + none
+
+ 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:
+
+ + 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:
incorrect color scheme.
-IF YOU ARE A SYSTEM INTEGRATOR:
-------------------------------
+FOR SYSTEM INTEGRATORS:
+----------------------
Configuration and Installation:
Naming the Console Terminal
In various systems there has been a practice of designating the system
- console driver type as `console'. Please do not do this! It
+ console driver type as 'console'. Please do not do this! It
complicates peoples' lives, because it can mean that several different
terminfo entries from different operating systems all logically want to
- be called `console'.
+ be called 'console'.
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)
$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
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
$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
------------------------------- 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
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
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:
The Hacker's Guide in the doc directory includes some guidelines
on how to report bugs in ways that will get them fixed most quickly.
--- vile:txtmode
+-- vile:txtmode fc=78