xref: /freebsd/contrib/ncurses/INSTALL (revision 5d08fb1f777aa988958a4f0c45887b0cbfaef9a0)
14a1a9510SRong-En Fan-------------------------------------------------------------------------------
25d08fb1fSRong-En Fan-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.               --
34a1a9510SRong-En Fan--                                                                           --
44a1a9510SRong-En Fan-- Permission is hereby granted, free of charge, to any person obtaining a   --
54a1a9510SRong-En Fan-- copy of this software and associated documentation files (the             --
64a1a9510SRong-En Fan-- "Software"), to deal in the Software without restriction, including       --
74a1a9510SRong-En Fan-- without limitation the rights to use, copy, modify, merge, publish,       --
84a1a9510SRong-En Fan-- distribute, distribute with modifications, sublicense, and/or sell copies --
94a1a9510SRong-En Fan-- of the Software, and to permit persons to whom the Software is furnished  --
104a1a9510SRong-En Fan-- to do so, subject to the following conditions:                            --
114a1a9510SRong-En Fan--                                                                           --
124a1a9510SRong-En Fan-- The above copyright notice and this permission notice shall be included   --
134a1a9510SRong-En Fan-- in all copies or substantial portions of the Software.                    --
144a1a9510SRong-En Fan--                                                                           --
154a1a9510SRong-En Fan-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS   --
164a1a9510SRong-En Fan-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF                --
174a1a9510SRong-En Fan-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --
184a1a9510SRong-En Fan-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,       --
194a1a9510SRong-En Fan-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR     --
204a1a9510SRong-En Fan-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --
214a1a9510SRong-En Fan-- USE OR OTHER DEALINGS IN THE SOFTWARE.                                    --
224a1a9510SRong-En Fan--                                                                           --
234a1a9510SRong-En Fan-- Except as contained in this notice, the name(s) of the above copyright    --
244a1a9510SRong-En Fan-- holders shall not be used in advertising or otherwise to promote the      --
254a1a9510SRong-En Fan-- sale, use or other dealings in this Software without prior written        --
264a1a9510SRong-En Fan-- authorization.                                                            --
274a1a9510SRong-En Fan-------------------------------------------------------------------------------
285d08fb1fSRong-En Fan-- $Id: INSTALL,v 1.135 2008/11/02 21:13:51 tom Exp $
290e3d5408SPeter Wemm---------------------------------------------------------------------
300e3d5408SPeter Wemm             How to install Ncurses/Terminfo on your system
310e3d5408SPeter Wemm---------------------------------------------------------------------
3215589c42SPeter Wemm
330e3d5408SPeter Wemm    ************************************************************
340e3d5408SPeter Wemm    * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
350e3d5408SPeter Wemm    ************************************************************
360e3d5408SPeter Wemm
370e3d5408SPeter WemmYou should be reading the file INSTALL in a directory called ncurses-d.d, where
380e3d5408SPeter Wemmd.d is the current version number.  There should be several subdirectories,
390e3d5408SPeter Wemmincluding `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs',
400e3d5408SPeter Wemmand `test'.  See the README file for a roadmap to the package.
410e3d5408SPeter Wemm
420e3d5408SPeter WemmIf you are a Linux or FreeBSD or NetBSD distribution integrator or packager,
430e3d5408SPeter Wemmplease read and act on the section titled IF YOU ARE A SYSTEM INTEGRATOR
440e3d5408SPeter Wemmbelow.
450e3d5408SPeter Wemm
460e3d5408SPeter WemmIf you are converting from BSD curses and do not have root access, be sure
470e3d5408SPeter Wemmto read the BSD CONVERSION NOTES section below.
480e3d5408SPeter Wemm
490e3d5408SPeter WemmIf you are trying to build applications using gpm with ncurses,
500e3d5408SPeter Wemmread the USING NCURSES WITH GPM section below.
510e3d5408SPeter Wemm
520e3d5408SPeter WemmIf you are running over the Andrew File System see the note below on
530e3d5408SPeter WemmUSING NCURSES WITH AFS.
540e3d5408SPeter Wemm
5518259542SPeter WemmIf you are cross-compiling, see the note below on BUILDING NCURSES WITH A
5618259542SPeter WemmCROSS-COMPILER.
5718259542SPeter Wemm
580e3d5408SPeter WemmIf you want to build the Ada95 binding, go to the Ada95 directory and
590e3d5408SPeter Wemmfollow the instructions there.  The Ada95 binding is not covered below.
600e3d5408SPeter Wemm
610e3d5408SPeter WemmIf you are using anything but (a) Linux, or (b) one of the 4.4BSD-based
620e3d5408SPeter Wemmi386 Unixes, go read the Portability section in the TO-DO file before you
630e3d5408SPeter Wemmdo anything else.
640e3d5408SPeter Wemm
6515589c42SPeter Wemm
660e3d5408SPeter WemmREQUIREMENTS:
6715589c42SPeter Wemm------------
680e3d5408SPeter Wemm
694a1a9510SRong-En FanYou will need the following to build and install ncurses under UNIX:
700e3d5408SPeter Wemm
714a1a9510SRong-En Fan	* ANSI C compiler  (gcc, for instance)
720e3d5408SPeter Wemm	* sh               (bash will do)
730e3d5408SPeter Wemm	* awk              (mawk or gawk will do)
740e3d5408SPeter Wemm	* sed
750e3d5408SPeter Wemm	* BSD or System V style install (a script is enclosed)
760e3d5408SPeter Wemm
770e3d5408SPeter WemmNcurses has been also built in the OS/2 EMX environment.
780e3d5408SPeter Wemm
7915589c42SPeter Wemm
800e3d5408SPeter WemmINSTALLATION PROCEDURE:
8115589c42SPeter Wemm----------------------
820e3d5408SPeter Wemm
830e3d5408SPeter Wemm1.  First, decide whether you want ncurses to replace your existing library (in
840e3d5408SPeter Wemm    which case you'll need super-user privileges) or be installed in parallel
850e3d5408SPeter Wemm    with it.
860e3d5408SPeter Wemm
870e3d5408SPeter Wemm    The --prefix option to configure changes the root directory for installing
884a1a9510SRong-En Fan    ncurses.  The default is normally in subdirectories of /usr/local, except
894a1a9510SRong-En Fan    for systems where ncurses is normally installed as a system library, e.g.,
904a1a9510SRong-En Fan    Linux, the various BSD systems and Cygwin.  Use --prefix=/usr to replace
914a1a9510SRong-En Fan    your default curses distribution.
920e3d5408SPeter Wemm
930e3d5408SPeter Wemm    The package gets installed beneath the --prefix directory as follows:
940e3d5408SPeter Wemm
950e3d5408SPeter Wemm    In $(prefix)/bin:          tic, infocmp, captoinfo, tset,
960e3d5408SPeter Wemm				reset, clear, tput, toe
970e3d5408SPeter Wemm    In $(prefix)/lib:          libncurses*.* libcurses.a
980e3d5408SPeter Wemm    In $(prefix)/share/terminfo: compiled terminal descriptions
990e3d5408SPeter Wemm    In $(prefix)/include:      C header files
1000e3d5408SPeter Wemm    Under $(prefix)/man:       the manual pages
1010e3d5408SPeter Wemm
1024a1a9510SRong-En Fan    Note that the configure script attempts to locate previous installation of
1034a1a9510SRong-En Fan    ncurses, and will set the default prefix according to where it finds the
1044a1a9510SRong-En Fan    ncurses headers.
1054a1a9510SRong-En Fan
1064a1a9510SRong-En Fan    Do not use commands such as
1074a1a9510SRong-En Fan
1084a1a9510SRong-En Fan    	make install prefix=XXX
1094a1a9510SRong-En Fan
1104a1a9510SRong-En Fan    to change the prefix after configuration, since the prefix value is used
1114a1a9510SRong-En Fan    for some absolute pathnames such as TERMINFO.  Instead do this
1124a1a9510SRong-En Fan
1134a1a9510SRong-En Fan    	make install DESTDIR=XXX
1144a1a9510SRong-En Fan
1154a1a9510SRong-En Fan    See also the discussion of --with-install-prefix.
1160e3d5408SPeter Wemm
1170e3d5408SPeter Wemm2.  Type `./configure' in the top-level directory of the distribution to
1180e3d5408SPeter Wemm    configure ncurses for your operating system and create the Makefiles.
1190e3d5408SPeter Wemm    Besides --prefix, various configuration options are available to customize
1200e3d5408SPeter Wemm    the installation; use `./configure --help' to list the available options.
1210e3d5408SPeter Wemm
1220e3d5408SPeter Wemm    If your operating system is not supported, read the PORTABILITY section in
1230e3d5408SPeter Wemm    the file ncurses/README for information on how to create a configuration
1240e3d5408SPeter Wemm    file for your system.
1250e3d5408SPeter Wemm
1260e3d5408SPeter Wemm    The `configure' script generates makefile rules for one or more object
1270e3d5408SPeter Wemm    models and their associated libraries:
1280e3d5408SPeter Wemm
1290e3d5408SPeter Wemm	libncurses.a (normal)
1300e3d5408SPeter Wemm
1310e3d5408SPeter Wemm	libcurses.a (normal, a link to libncurses.a)
1320e3d5408SPeter Wemm		This gets left out if you configure with --disable-overwrite.
1330e3d5408SPeter Wemm
1340e3d5408SPeter Wemm	libncurses.so (shared)
1350e3d5408SPeter Wemm
1360e3d5408SPeter Wemm	libncurses_g.a (debug)
1370e3d5408SPeter Wemm
1380e3d5408SPeter Wemm	libncurses_p.a (profile)
1390e3d5408SPeter Wemm
1407a69bbfbSPeter Wemm	libncurses.la (libtool)
1417a69bbfbSPeter Wemm
1424a1a9510SRong-En Fan    If you configure using the --enable-widec option, a "w" is appended to the
1434a1a9510SRong-En Fan    library names (e.g., libncursesw.a), and the resulting libraries support
1444a1a9510SRong-En Fan    wide-characters, e.g., via a UTF-8 locale.  The corresponding header files
1454a1a9510SRong-En Fan    are compatible with the non-wide-character configuration; wide-character
1464a1a9510SRong-En Fan    features are provided by ifdef's in the header files.  The wide-character
1474a1a9510SRong-En Fan    library interfaces are not binary-compatible with the non-wide-character
1484a1a9510SRong-En Fan    version.  Building and running the wide-character code relies on a fairly
1494a1a9510SRong-En Fan    recent implementation of libiconv.  We have built this configuration on
1504a1a9510SRong-En Fan    Linux using libiconv, sometimes requiring libutf8.
1514a1a9510SRong-En Fan
152aa59d4d4SRong-En Fan    If you configure using the --with-pthread option, a "t" is appended to
153aa59d4d4SRong-En Fan    the library names (e.g., libncursest.a, libncursestw.a).
154aa59d4d4SRong-En Fan
1550e3d5408SPeter Wemm    If you do not specify any models, the normal and debug libraries will be
1560e3d5408SPeter Wemm    configured.  Typing `configure' with no arguments is equivalent to:
1570e3d5408SPeter Wemm
1580e3d5408SPeter Wemm	./configure --with-normal --with-debug --enable-overwrite
1590e3d5408SPeter Wemm
1600e3d5408SPeter Wemm    Typing
1610e3d5408SPeter Wemm
1620e3d5408SPeter Wemm	./configure --with-shared
1630e3d5408SPeter Wemm
1640e3d5408SPeter Wemm    makes the shared libraries the default, resulting in
1650e3d5408SPeter Wemm
1660e3d5408SPeter Wemm	./configure --with-shared --with-normal --with-debug --enable-overwrite
1670e3d5408SPeter Wemm
1680e3d5408SPeter Wemm    If you want only shared libraries, type
1690e3d5408SPeter Wemm
1700e3d5408SPeter Wemm	./configure --with-shared --without-normal --without-debug
1710e3d5408SPeter Wemm
1720e3d5408SPeter Wemm    Rules for generating shared libraries are highly dependent upon the choice
1730e3d5408SPeter Wemm    of host system and compiler.  We've been testing shared libraries on Linux
1740e3d5408SPeter Wemm    and SunOS with gcc, but more work needs to be done to make shared libraries
1750e3d5408SPeter Wemm    work on other systems.
1760e3d5408SPeter Wemm
1777a69bbfbSPeter Wemm    If you have libtool installed, you can type
1787a69bbfbSPeter Wemm
1797a69bbfbSPeter Wemm	./configure --with-libtool
1807a69bbfbSPeter Wemm
1817a69bbfbSPeter Wemm    to generate the appropriate static and/or shared libraries for your
1827a69bbfbSPeter Wemm    platform using libtool.
1837a69bbfbSPeter Wemm
1840e3d5408SPeter Wemm    You can make curses and terminfo fall back to an existing file of termcap
1850e3d5408SPeter Wemm    definitions by configuring with --enable-termcap.  If you do this, the
1860e3d5408SPeter Wemm    library will search /etc/termcap before the terminfo database, and will
1870e3d5408SPeter Wemm    also interpret the contents of the TERM environment variable.  See the
1880e3d5408SPeter Wemm    section BSD CONVERSION NOTES below.
1890e3d5408SPeter Wemm
1900e3d5408SPeter Wemm3.  Type `make'.  Ignore any warnings, no error messages should be produced.
1910e3d5408SPeter Wemm    This should compile the ncurses library, the terminfo compiler tic(1),
1920e3d5408SPeter Wemm    captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1)
19318259542SPeter Wemm    programs (see the manual pages for explanation of what they do), some test
1940e3d5408SPeter Wemm    programs, and the panels, menus, and forms libraries.
1950e3d5408SPeter Wemm
1960e3d5408SPeter Wemm4.  Run ncurses and several other test programs in the test directory to
1970e3d5408SPeter Wemm    verify that ncurses functions correctly before doing an install that
1980e3d5408SPeter Wemm    may overwrite system files.  Read the file test/README for details on
1990e3d5408SPeter Wemm    the test programs.
2000e3d5408SPeter Wemm
2010e3d5408SPeter Wemm    NOTE: You must have installed the terminfo database, or set the
2020e3d5408SPeter Wemm    environment variable $TERMINFO to point to a SVr4-compatible terminfo
2030e3d5408SPeter Wemm    database before running the test programs.  Not all vendors' terminfo
2040e3d5408SPeter Wemm    databases are SVr4-compatible, but most seem to be.  Exceptions include
2050e3d5408SPeter Wemm    DEC's Digital Unix (formerly known as OSF/1).
2060e3d5408SPeter Wemm
2074a1a9510SRong-En Fan    If you run the test programs WITHOUT installing terminfo, ncurses may
2084a1a9510SRong-En Fan    read the termcap file and cache that in $HOME/.terminfo, which will
2094a1a9510SRong-En Fan    thereafter be used instead of the terminfo database.  See the comments
2104a1a9510SRong-En Fan    on "--enable-getcap-cache", to see why this is a Bad Thing.
2114a1a9510SRong-En Fan
2124a1a9510SRong-En Fan    It is possible to configure ncurses to use other terminfo database formats.
2134a1a9510SRong-En Fan    A few are provided as examples in the include-directory (see --with-caps).
2144a1a9510SRong-En Fan
2150e3d5408SPeter Wemm    The ncurses program is designed specifically to test the ncurses library.
2160e3d5408SPeter Wemm    You can use it to verify that the screen highlights work correctly, that
2170e3d5408SPeter Wemm    cursor addressing and window scrolling works OK, etc.
2180e3d5408SPeter Wemm
2190e3d5408SPeter Wemm5.  Once you've tested, you can type `make install' to install libraries,
22018259542SPeter Wemm    the programs, the terminfo database and the manual pages.  Alternately, you
2210e3d5408SPeter Wemm    can type `make install' in each directory you want to install.  In the
2220e3d5408SPeter Wemm    top-level directory, you can do a partial install using these commands:
2230e3d5408SPeter Wemm
2240e3d5408SPeter Wemm	'make install.progs'    installs tic, infocmp, etc...
2250e3d5408SPeter Wemm	'make install.includes' installs the headers.
2260e3d5408SPeter Wemm	'make install.libs'     installs the libraries (and the headers).
2270e3d5408SPeter Wemm	'make install.data'     installs the terminfo data. (Note: `tic' must
2280e3d5408SPeter Wemm				be installed before the terminfo data can be
2290e3d5408SPeter Wemm				compiled).
23018259542SPeter Wemm	'make install.man'      installs the manual pages.
2310e3d5408SPeter Wemm
2320e3d5408SPeter Wemm  ############################################################################
2330e3d5408SPeter Wemm  #     CAVEAT EMPTOR: `install.data' run as root will NUKE any existing     #
2340e3d5408SPeter Wemm  #  terminfo database. If you have any custom or unusual entries SAVE them  #
2350e3d5408SPeter Wemm  #  before you install ncurses.  I have a file called terminfo.custom for   #
2360e3d5408SPeter Wemm  #  this purpose.  Don't forget to run tic on the file once you're done.    #
2370e3d5408SPeter Wemm  ############################################################################
2380e3d5408SPeter Wemm
23918259542SPeter Wemm    The terminfo(5) manual page must be preprocessed with tbl(1) before
2400e3d5408SPeter Wemm    being formatted by nroff(1).  Modern man(1) implementations tend to do
24118259542SPeter Wemm    this by default, but you may want to look at your version's manual page
2427a69bbfbSPeter Wemm    to be sure.  You may also install the manual pages after preprocessing
2437a69bbfbSPeter Wemm    with tbl(1) by specifying the configure option --with-manpage-tbl.
2440e3d5408SPeter Wemm
2450e3d5408SPeter Wemm    If the system already has a curses library that you need to keep using
2464a1a9510SRong-En Fan    you'll need to distinguish between it and ncurses.  See the discussion of
2474a1a9510SRong-En Fan    --disable-overwrite.  If ncurses is installed outside the standard
2484a1a9510SRong-En Fan    directories (/usr/include and /usr/lib) then all your users will need to
2494a1a9510SRong-En Fan    use the -I option to compile programs and -L to link them.
2500e3d5408SPeter Wemm
2514a1a9510SRong-En Fan    If you have another curses installed in your system and you accidentally
2520e3d5408SPeter Wemm    compile using its curses.h you'll end up with a large number of
2534a1a9510SRong-En Fan    undefined symbols at link time.
2540e3d5408SPeter Wemm
2550e3d5408SPeter Wemm    IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory
2560e3d5408SPeter Wemm    and run the `capconvert' script.  This script will deduce various things
2570e3d5408SPeter Wemm    about your environment and use them to build you a private terminfo tree,
2580e3d5408SPeter Wemm    so you can use ncurses applications.
2590e3d5408SPeter Wemm
2600e3d5408SPeter Wemm    If more than one user at your site does this, the space for the duplicate
2610e3d5408SPeter Wemm    trees is wasted.  Try to get your site administrators to install a system-
2620e3d5408SPeter Wemm    wide terminfo tree instead.
2630e3d5408SPeter Wemm
2640e3d5408SPeter Wemm    See the BSD CONVERSION NOTES section below for a few more details.
2650e3d5408SPeter Wemm
2660e3d5408SPeter Wemm6.  The c++ directory has C++ classes that are built on top of ncurses and
2671759abf3SPeter Wemm    panels.  You must have c++ (and its libraries) installed before you can
2680e3d5408SPeter Wemm    compile and run the demo.
2690e3d5408SPeter Wemm
2701759abf3SPeter Wemm    Use --without-cxx-binding to tell configure to not build the C++ bindings
2711759abf3SPeter Wemm    and demo.
2721759abf3SPeter Wemm
2730e3d5408SPeter Wemm    If you do not have C++, you must use the --without-cxx option to tell
2741759abf3SPeter Wemm    the configure script to not attempt to determine the type of 'bool'
2751759abf3SPeter Wemm    which may be supported by C++.  IF YOU USE THIS OPTION, BE ADVISED THAT
2761759abf3SPeter Wemm    YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++.
2770e3d5408SPeter Wemm
27815589c42SPeter Wemm
27918259542SPeter WemmSUMMARY OF CONFIGURE OPTIONS:
28018259542SPeter Wemm----------------------------
28118259542SPeter Wemm
28218259542SPeter Wemm    The configure script provides a short list of its options when you type
28318259542SPeter Wemm
28418259542SPeter Wemm	./configure --help
28518259542SPeter Wemm
28618259542SPeter Wemm    The --help and several options are common to all configure scripts that are
28718259542SPeter Wemm    generated with autoconf.  Those are all listed before the line
28818259542SPeter Wemm
28918259542SPeter Wemm	--enable and --with options recognized:
29018259542SPeter Wemm
29118259542SPeter Wemm    The other options are specific to this package.  We list them in alphabetic
29218259542SPeter Wemm    order.
29318259542SPeter Wemm
29418259542SPeter Wemm    --disable-assumed-color
29518259542SPeter Wemm	With ncurses 5.1, we introduced a new function, assume_default_colors()
29618259542SPeter Wemm	which allows applications to specify what the default foreground and
29718259542SPeter Wemm	background color are assumed to be.  Most color applications use
29818259542SPeter Wemm	full-screen color; but a few do not color the background.  While the
29918259542SPeter Wemm	assumed values can be overridden by invoking assume_default_colors(),
30018259542SPeter Wemm	you may find it useful to set the assumed values to the pre-5.1
30118259542SPeter Wemm	convention, using this configure option.
30218259542SPeter Wemm
30318259542SPeter Wemm    --disable-big-core
30418259542SPeter Wemm	Assume machine has little memory.  The configure script attempts to
30518259542SPeter Wemm	determine if your machine has enough memory (about 6Mb) to compile the
30618259542SPeter Wemm	terminfo database without writing portions to disk.  Some allocators
30718259542SPeter Wemm	return deceptive results, so you may have to override the configure
30818259542SPeter Wemm	script.  Or you may be building tic for a smaller machine.
30918259542SPeter Wemm
3105ca44d1cSRong-En Fan    --disable-big-strings
3115ca44d1cSRong-En Fan	Disable compile-time optimization of predefined tables which puts
3125ca44d1cSRong-En Fan	all of their strings into a very long string, to reduce relocation
3135ca44d1cSRong-En Fan	overhead.
3145ca44d1cSRong-En Fan
31518259542SPeter Wemm    --disable-database
31618259542SPeter Wemm	Use only built-in data.  The ncurses libraries normally read terminfo
31718259542SPeter Wemm	and termcap data from disk.  You can configure ncurses to have a
31818259542SPeter Wemm	built-in database, aka "fallback" entries.  Embedded applications may
31939f2269fSPeter Wemm	have no need for an external database.  Some, but not all of the
32039f2269fSPeter Wemm	programs are useful in this configuration, e.g., reset and tput versus
32139f2269fSPeter Wemm	infocmp and tic.
32218259542SPeter Wemm
32318259542SPeter Wemm    --disable-ext-funcs
32418259542SPeter Wemm	Disable function-extensions.  Configure ncurses without the functions
32518259542SPeter Wemm	that are not specified by XSI.  See ncurses/modules for the exact
32618259542SPeter Wemm	list of library modules that would be suppressed.
32718259542SPeter Wemm
32818259542SPeter Wemm    --disable-hashmap
32918259542SPeter Wemm	Compile without hashmap scrolling-optimization code.  This algorithm is
33018259542SPeter Wemm	the default.
33118259542SPeter Wemm
3324a1a9510SRong-En Fan    --disable-home-terminfo
3334a1a9510SRong-En Fan	The $HOME/.terminfo directory is normally added to ncurses' search
3344a1a9510SRong-En Fan	list for reading/writing terminfo entries, since that directory is
3354a1a9510SRong-En Fan	more likely writable than the system terminfo database.  Use this
3364a1a9510SRong-En Fan	option to disable the feature altogether.
3374a1a9510SRong-En Fan
3384a1a9510SRong-En Fan    --disable-largefile
3394a1a9510SRong-En Fan	Disable compiler flags needed to use large-file interfaces.
3404a1a9510SRong-En Fan
34118259542SPeter Wemm    --disable-leaks
34218259542SPeter Wemm	For testing, compile-in code that frees memory that normally would not
34318259542SPeter Wemm	be freed, to simplify analysis of memory-leaks.
34418259542SPeter Wemm
3455ca44d1cSRong-En Fan	Any implementation of curses must not free the memory associated with
3465ca44d1cSRong-En Fan	a screen, since (even after calling endwin()), it must be available
3475ca44d1cSRong-En Fan	for use in the next call to refresh().  There are also chunks of
3485ca44d1cSRong-En Fan	memory held for performance reasons.  That makes it hard to analyze
3495ca44d1cSRong-En Fan	curses applications for memory leaks.  To work around this, build
3505ca44d1cSRong-En Fan	a debugging version of the ncurses library which frees those chunks
3515ca44d1cSRong-En Fan	which it can, and provides the _nc_free_and_exit() function to free
3525ca44d1cSRong-En Fan	the remainder on exit.  The ncurses utility and test programs use this
3535ca44d1cSRong-En Fan	feature, e.g., via the ExitProgram() macro.
3545ca44d1cSRong-En Fan
3554a1a9510SRong-En Fan    --disable-lp64
3564a1a9510SRong-En Fan	The header files will ignore use of the _LP64 symbol to make chtype
3574a1a9510SRong-En Fan	and mmask_t types 32 bits (they may be long on 64-bit hosts, for
3584a1a9510SRong-En Fan	compatibility with older releases).
3594a1a9510SRong-En Fan
3604a1a9510SRong-En Fan	NOTE: this is potentially an ABI change, depending on existing
3614a1a9510SRong-En Fan	packages.  The default for this option is "disabled" for ncurses
3624a1a9510SRong-En Fan	ABI 5, and "enabled" for ABI 6.
3634a1a9510SRong-En Fan
36418259542SPeter Wemm    --disable-macros
36518259542SPeter Wemm	For testing, use functions rather than macros.  The program will run
3664a1a9510SRong-En Fan	more slowly, but it is simpler to debug.  This defines NCURSES_NOMACROS
3674a1a9510SRong-En Fan	at build time.  See also the --enable-expanded option.
36818259542SPeter Wemm
36918259542SPeter Wemm    --disable-overwrite
37018259542SPeter Wemm	If you are installing ncurses on a system which contains another
37118259542SPeter Wemm	development version of curses, or which could be confused by the loader
37218259542SPeter Wemm	for another version, we recommend that you leave out the link to
37318259542SPeter Wemm	-lcurses.  The ncurses library is always available as -lncurses.
37418259542SPeter Wemm	Disabling overwrite also causes the ncurses header files to be
37518259542SPeter Wemm	installed into a subdirectory, e.g., /usr/local/include/ncurses,
37618259542SPeter Wemm	rather than the include directory.  This makes it simpler to avoid
37718259542SPeter Wemm	compile-time conflicts with other versions of curses.h
37818259542SPeter Wemm
3795ca44d1cSRong-En Fan    --disable-relink
3805ca44d1cSRong-En Fan	If --enable-rpath is given, the generated makefiles normally will
3815ca44d1cSRong-En Fan	rebuild the libraries during install.  Use this option to simply
3825ca44d1cSRong-En Fan	copy whatever the linked produced.
3835ca44d1cSRong-En Fan
3845ca44d1cSRong-En Fan	This option is ignored if --enable-rpath is not given.
3855ca44d1cSRong-En Fan
38618259542SPeter Wemm    --disable-root-environ
38718259542SPeter Wemm	Compile with environment restriction, so certain environment variables
38818259542SPeter Wemm	are not available when running as root, or via a setuid/setgid
38918259542SPeter Wemm	application.  These are (for example $TERMINFO) those that allow the
39018259542SPeter Wemm	search path for the terminfo or termcap entry to be customized.
39118259542SPeter Wemm
39218259542SPeter Wemm    --disable-scroll-hints
39318259542SPeter Wemm	Compile without scroll-hints code.  This option is ignored when
39418259542SPeter Wemm	hashmap scrolling is configured, which is the default.
39518259542SPeter Wemm
3965d08fb1fSRong-En Fan    --disable-tic-depends
3975d08fb1fSRong-En Fan	When building shared libraries, normally the tic library is linked to
3985d08fb1fSRong-En Fan	depend upon the ncurses library (and in turn, on the term-library if
3995d08fb1fSRong-En Fan	the --with-termlib option was given).  The tic- and term-libraries
4005d08fb1fSRong-En Fan	ABI does not depend on the --enable-widec option. Some packagers have
4015d08fb1fSRong-En Fan	used this to reduce the number of library files which are packaged
4025d08fb1fSRong-En Fan	by using only one copy of those libraries.  To make this work properly,
4035d08fb1fSRong-En Fan	the tic library must be built without an explicit dependency on the
4045d08fb1fSRong-En Fan	ncurses (or ncursesw) library.  Use this configure option to do that.
4055d08fb1fSRong-En Fan	For example
4065d08fb1fSRong-En Fan		configure --with-ticlib --with-shared --disable-tic-depends
4075d08fb1fSRong-En Fan
4084a1a9510SRong-En Fan    --disable-tparm-varargs
4094a1a9510SRong-En Fan	Portable programs should call tparm() using the fixed-length parameter
4104a1a9510SRong-En Fan	list documented in X/Open.  ncurses provides varargs support for this
4114a1a9510SRong-En Fan	function.  Use --disable-tparm-varargs to disable this support.
41218259542SPeter Wemm
41318259542SPeter Wemm    --enable-assertions
41418259542SPeter Wemm	For testing, compile-in assertion code.  This is used only for a few
41518259542SPeter Wemm	places where ncurses cannot easily recover by returning an error code.
41618259542SPeter Wemm
41718259542SPeter Wemm    --enable-broken_linker
41818259542SPeter Wemm	A few platforms have what we consider a broken linker:  it cannot link
41918259542SPeter Wemm	objects from an archive solely by referring to data objects in those
42018259542SPeter Wemm	files, but requires a function reference.  This configure option
42118259542SPeter Wemm	changes several data references to functions to work around this
42218259542SPeter Wemm	problem.
42318259542SPeter Wemm
42418259542SPeter Wemm	NOTE:  With ncurses 5.1, this may not be necessary, since we are
42518259542SPeter Wemm	told that some linkers interpret uninitialized global data as a
42618259542SPeter Wemm	different type of reference which behaves as described above.  We have
42718259542SPeter Wemm	explicitly initialized all of the global data to work around the
42818259542SPeter Wemm	problem.
42918259542SPeter Wemm
43018259542SPeter Wemm    --enable-bsdpad
43118259542SPeter Wemm	Recognize BSD-style prefix padding.  Some ancient BSD programs (such as
43218259542SPeter Wemm	nethack) call tputs("50") to implement delays.
43318259542SPeter Wemm
43418259542SPeter Wemm    --enable-colorfgbg
43518259542SPeter Wemm	Compile with experimental $COLORFGBG code.  That environment variable
43618259542SPeter Wemm	is set by some terminal emulators as a hint to applications, by
43718259542SPeter Wemm	advertising the default foreground and background colors.  During
43818259542SPeter Wemm	initialization, ncurses sets color pair 0 to match this.
43918259542SPeter Wemm
44018259542SPeter Wemm    --enable-const
44118259542SPeter Wemm	The curses interface as documented in XSI is rather old, in fact
44218259542SPeter Wemm	including features that precede ANSI C.  The prototypes generally do
44318259542SPeter Wemm	not make effective use of "const".  When using stricter compilers (or
44418259542SPeter Wemm	gcc with appropriate warnings), you may see warnings about the mismatch
44518259542SPeter Wemm	between const and non-const data.  We provide a configure option which
44618259542SPeter Wemm	changes the interfaces to use const - quieting these warnings and
44718259542SPeter Wemm	reflecting the actual use of the parameters more closely.  The ncurses
44818259542SPeter Wemm	library uses the symbol NCURSES_CONST for these instances of const,
44918259542SPeter Wemm	and if you have asked for compiler warnings, will add gcc's const-qual
45018259542SPeter Wemm	warning.  There will still be warnings due to subtle inconsistencies
45118259542SPeter Wemm	in the interface, but at a lower level.
45218259542SPeter Wemm
45318259542SPeter Wemm	NOTE:  configuring ncurses with this option may detract from the
45418259542SPeter Wemm	portability of your applications by encouraging you to use const in
45518259542SPeter Wemm	places where the XSI curses interface would not allow them.  Similar
45618259542SPeter Wemm	issues arise when porting to SVr4 curses, which uses const in even
45718259542SPeter Wemm	fewer places.
45818259542SPeter Wemm
45918259542SPeter Wemm    --enable-echo
46018259542SPeter Wemm	Use the option --disable-echo to make the build-log less verbose by
46118259542SPeter Wemm	suppressing the display of the compile and link commands.  This makes
46218259542SPeter Wemm	it easier to see the compiler warnings.  (You can always use "make -n"
46318259542SPeter Wemm	to see the options that are used).
46418259542SPeter Wemm
46518259542SPeter Wemm    --enable-expanded
46618259542SPeter Wemm	For testing, generate functions for certain macros to make them visible
46718259542SPeter Wemm	as such to the debugger.  See also the --disable-macros option.
46818259542SPeter Wemm
4694a1a9510SRong-En Fan    --enable-ext-colors
4704a1a9510SRong-En Fan	Extend the cchar_t structure to allow more than 16 colors to be
4714a1a9510SRong-En Fan	encoded.  This applies only to the wide-character (--enable-widec)
4724a1a9510SRong-En Fan	configuration.
4734a1a9510SRong-En Fan
4744a1a9510SRong-En Fan	NOTE:  using this option will make libraries which are not binary-
4754a1a9510SRong-En Fan	compatible with libncursesw 5.4.  None of the interfaces change, but
4764a1a9510SRong-En Fan	applications which have an array of cchar_t's must be recompiled.
4774a1a9510SRong-En Fan
4784a1a9510SRong-En Fan    --enable-ext-mouse
4794a1a9510SRong-En Fan	Modify the encoding of mouse state to make room for a 5th mouse button.
4804a1a9510SRong-En Fan	That allows one to use ncurses with a wheel mouse with xterm or
4814a1a9510SRong-En Fan	similar X terminal emulators.
4824a1a9510SRong-En Fan
4834a1a9510SRong-En Fan	NOTE:  using this option will make libraries which are not binary-
4844a1a9510SRong-En Fan	compatible with libncursesw 5.4.  None of the interfaces change, but
4854a1a9510SRong-En Fan	applications which have mouse mask mmask_t's must be recompiled.
4864a1a9510SRong-En Fan
48718259542SPeter Wemm    --enable-getcap
48818259542SPeter Wemm	Use the 4.4BSD getcap code if available, or a bundled version of it to
48918259542SPeter Wemm	fetch termcap entries.  Entries read in this way cannot use (make
49018259542SPeter Wemm	cross-references to) the terminfo tree, but it is faster than reading
49118259542SPeter Wemm	/etc/termcap.
49218259542SPeter Wemm
4934a1a9510SRong-En Fan	If configured for one of the *BSD systems, this automatically uses
4944a1a9510SRong-En Fan	the hashed database system produced using cap_mkdb or similar tools.
4954a1a9510SRong-En Fan	In that case, there is no advantage in using the --enable-getcap-cache
4964a1a9510SRong-En Fan	option.
4974a1a9510SRong-En Fan
4984a1a9510SRong-En Fan	See also the --with-hashed-db option.
4994a1a9510SRong-En Fan
50018259542SPeter Wemm    --enable-getcap-cache
50118259542SPeter Wemm	Cache translated termcaps under the directory $HOME/.terminfo
50218259542SPeter Wemm
50318259542SPeter Wemm	NOTE:  this sounds good - it makes ncurses run faster the second time.
50418259542SPeter Wemm	But look where the data comes from - an /etc/termcap containing lots of
50518259542SPeter Wemm	entries that are not up to date.  If you configure with this option and
50618259542SPeter Wemm	forget to install the terminfo database before running an ncurses
50718259542SPeter Wemm	application, you will end up with a hidden terminfo database that
50818259542SPeter Wemm	generally does not support color and will miss some function keys.
50918259542SPeter Wemm
51018259542SPeter Wemm    --enable-hard-tabs
51118259542SPeter Wemm	Compile-in cursor-optimization code that uses hard-tabs.  We would make
51218259542SPeter Wemm	this a standard feature except for the concern that the terminfo entry
51318259542SPeter Wemm	may not be accurate, or that your stty settings have disabled the use
51418259542SPeter Wemm	of tabs.
51518259542SPeter Wemm
5165ca44d1cSRong-En Fan    --enable-mixed-case
5175ca44d1cSRong-En Fan	Controls whether the filesystem on which the terminfo database resides
5185ca44d1cSRong-En Fan	supports mixed-case filenames (normal for UNIX, but not on other
5195ca44d1cSRong-En Fan	systems).  If you do not specify this option, the configure script
5205ca44d1cSRong-En Fan	checks the current filesystem.
5215ca44d1cSRong-En Fan
52218259542SPeter Wemm    --enable-no-padding
52318259542SPeter Wemm	Compile-in support for the $NCURSES_NO_PADDING environment variable,
52418259542SPeter Wemm	which allows you to suppress the effect of non-mandatory padding in
52518259542SPeter Wemm	terminfo entries.  This is the default, unless you have disabled the
52618259542SPeter Wemm	extended functions.
52718259542SPeter Wemm
5285ca44d1cSRong-En Fan    --enable-reentrant
5295ca44d1cSRong-En Fan	Compile experimental configuration which improves reentrant use of the
530aa59d4d4SRong-En Fan	library by reducing global and static variables.  This option is also
531aa59d4d4SRong-En Fan	set if --with-pthread is used.
5325ca44d1cSRong-En Fan
53318259542SPeter Wemm    --enable-rpath
5344a1a9510SRong-En Fan	Use rpath option when generating shared libraries, and (with some
5354a1a9510SRong-En Fan	restrictions) when linking the corresponding programs.  This originally
5364a1a9510SRong-En Fan	(in 1997) applied mainly to systems using the GNU linker (read the
5374a1a9510SRong-En Fan	manpage).
5384a1a9510SRong-En Fan
5394a1a9510SRong-En Fan	More recently it is useful for systems that require special treatment
5404a1a9510SRong-En Fan	shared libraries in "unusual" locations.  The "system" libraries reside
5414a1a9510SRong-En Fan	in directories which are on the loader's default search-path.  While
5424a1a9510SRong-En Fan	you may be able to use workarounds such as the $LD_LIBRARY_PATH
5434a1a9510SRong-En Fan	environment variable, they do not work with setuid applications since
5444a1a9510SRong-En Fan	the LD_LIBRARY_PATH variable would be unset in that situation.
54518259542SPeter Wemm
5465ca44d1cSRong-En Fan	This option does not apply to --with-libtool, since libtool makes
5475ca44d1cSRong-En Fan	extra assumptions about rpath.
5485ca44d1cSRong-En Fan
54918259542SPeter Wemm    --enable-safe-sprintf
55018259542SPeter Wemm	Compile with experimental safe-sprintf code.  You may consider using
55118259542SPeter Wemm	this if you are building ncurses for a system that has neither
55218259542SPeter Wemm	vsnprintf() or vsprintf().  It is slow, however.
55318259542SPeter Wemm
55418259542SPeter Wemm    --enable-sigwinch
55518259542SPeter Wemm	Compile support for ncurses' SIGWINCH handler.  If your application has
55618259542SPeter Wemm	its own SIGWINCH handler, ncurses will not use its own.  The ncurses
55718259542SPeter Wemm	handler causes wgetch() to return KEY_RESIZE when the screen-size
55818259542SPeter Wemm	changes.  This option is the default, unless you have disabled the
55918259542SPeter Wemm	extended functions.
56018259542SPeter Wemm
5614a1a9510SRong-En Fan    --enable-signed-char
5624a1a9510SRong-En Fan	The term.h header declares a Booleans[] array typed "char".  But it
5634a1a9510SRong-En Fan	stores signed values there and "char" is not necessarily signed.
5644a1a9510SRong-En Fan	Some packagers choose to alter the type of Booleans[] though this
5654a1a9510SRong-En Fan	is not strictly compatible.  This option allows one to implement this
5664a1a9510SRong-En Fan	alteration without patching the source code.
5674a1a9510SRong-En Fan
56818259542SPeter Wemm    --enable-symlinks
56918259542SPeter Wemm	If your system supports symbolic links, make tic use symbolic links
57018259542SPeter Wemm	rather than hard links to save diskspace when writing aliases in the
57118259542SPeter Wemm	terminfo database.
57218259542SPeter Wemm
57318259542SPeter Wemm    --enable-tcap-names
57418259542SPeter Wemm	Compile-in support for user-definable terminal capabilities.  Use the
57518259542SPeter Wemm	-x option of tic and infocmp to treat unrecognized terminal
57618259542SPeter Wemm	capabilities as user-defined strings.  This option is the default,
57718259542SPeter Wemm	unless you have disabled the extended functions.
57818259542SPeter Wemm
57918259542SPeter Wemm    --enable-termcap
58018259542SPeter Wemm	Compile in support for reading terminal descriptions from termcap if no
58118259542SPeter Wemm	match is found in the terminfo database.  See also the --enable-getcap
58218259542SPeter Wemm	and --enable-getcap-cache options.
58318259542SPeter Wemm
58418259542SPeter Wemm    --enable-warnings
58518259542SPeter Wemm	Turn on GCC compiler warnings.  There should be only a few.
58618259542SPeter Wemm
5875d08fb1fSRong-En Fan    --enable-weak-symbols
5885d08fb1fSRong-En Fan	If the --with-pthread option is set, check if the compiler supports
5895d08fb1fSRong-En Fan	weak-symbols.  If it does, then name the thread-capable library without
5905d08fb1fSRong-En Fan	the "t" (libncurses rather than libncursest), and provide for
5915d08fb1fSRong-En Fan	dynamically loading the pthreads entrypoints at runtime.  This allows
5925d08fb1fSRong-En Fan	one to reduce the number of library files for ncurses.
5935d08fb1fSRong-En Fan
5944a1a9510SRong-En Fan    --enable-wgetch-events
5954a1a9510SRong-En Fan	Compile with experimental wgetch-events code.  See ncurses/README.IZ
5964a1a9510SRong-En Fan
59718259542SPeter Wemm    --enable-widec
5984a1a9510SRong-En Fan	Compile with wide-character code.  This makes a different version of
5994a1a9510SRong-En Fan	the libraries (e.g., libncursesw.so), which stores characters as
6004a1a9510SRong-En Fan	wide-characters,
60118259542SPeter Wemm
60218259542SPeter Wemm	NOTE: applications compiled with this configuration are not compatible
60318259542SPeter Wemm	with those built for 8-bit characters.  You cannot simply make a
60418259542SPeter Wemm	symbolic link to equate libncurses.so with libncursesw.so
60518259542SPeter Wemm
6064a1a9510SRong-En Fan	NOTE: the Ada95 binding may be built against either version of the the
6074a1a9510SRong-En Fan	ncurses library, but you must decide which:  the binding installs the
6084a1a9510SRong-En Fan	same set of files for either version.  Currently (2002/6/22) it does
6094a1a9510SRong-En Fan	not use the extended features from the wide-character code, so it is
6104a1a9510SRong-En Fan	probably better to not install the binding for that configuration.
6114a1a9510SRong-En Fan
61218259542SPeter Wemm    --enable-xmc-glitch
61318259542SPeter Wemm	Compile-in support experimental xmc (magic cookie) code.
61418259542SPeter Wemm
6154a1a9510SRong-En Fan    --with-abi-version=NUM
6164a1a9510SRong-En Fan	Override the ABI version, which is used in shared library filenames.
6174a1a9510SRong-En Fan	Normally this is the same as the release version; some ports have
6184a1a9510SRong-En Fan	special requirements for compatibility.
6194a1a9510SRong-En Fan
6205d08fb1fSRong-En Fan	This option does not affect linking with libtool, which uses the
6215d08fb1fSRong-En Fan	release major/minor numbers.
6225d08fb1fSRong-En Fan
62318259542SPeter Wemm    --with-ada-compiler=CMD
62418259542SPeter Wemm	Specify the Ada95 compiler command (default "gnatmake")
62518259542SPeter Wemm
62618259542SPeter Wemm    --with-ada-include=DIR
62718259542SPeter Wemm	Tell where to install the Ada includes (default:
62818259542SPeter Wemm	PREFIX/lib/ada/adainclude)
62918259542SPeter Wemm
63018259542SPeter Wemm    --with-ada-objects=DIR
63118259542SPeter Wemm	Tell where to install the Ada objects (default:  PREFIX/lib/ada/adalib)
63218259542SPeter Wemm
63339f2269fSPeter Wemm    --with-bool=TYPE
63439f2269fSPeter Wemm	If --without-cxx is specified, override the type used for the "bool"
63539f2269fSPeter Wemm	declared in curses.h (normally the type is automatically chosen to
63639f2269fSPeter Wemm	correspond with that in <stdbool.h>, or defaults to platform-specific
63739f2269fSPeter Wemm	sizes).
63839f2269fSPeter Wemm
63939f2269fSPeter Wemm    --with-build-cc=XXX
64039f2269fSPeter Wemm	If cross-compiling, specify a host C compiler, which is needed to
6414a1a9510SRong-En Fan	compile a few utilities which generate source modules for ncurses.
64239f2269fSPeter Wemm	If you do not give this option, the configure script checks if the
64339f2269fSPeter Wemm	$BUILD_CC variable is set, and otherwise defaults to gcc or cc.
64439f2269fSPeter Wemm
64539f2269fSPeter Wemm    --with-build-cflags=XXX
64639f2269fSPeter Wemm	If cross-compiling, specify the host C compiler-flags.  You might need
64739f2269fSPeter Wemm	to do this if the target compiler has unusual flags which confuse the
64839f2269fSPeter Wemm	host compiler.
64939f2269fSPeter Wemm
6505d08fb1fSRong-En Fan	You can also set the environment variable $BUILD_CFLAGS rather than
6515d08fb1fSRong-En Fan	use this option.
6525d08fb1fSRong-En Fan
6534a1a9510SRong-En Fan    --with-build-cppflags=XXX
6544a1a9510SRong-En Fan	If cross-compiling, specify the host C preprocessor-flags.  You might
6554a1a9510SRong-En Fan	need to do this if the target compiler has unusual flags which confuse
6564a1a9510SRong-En Fan	the host compiler.
6574a1a9510SRong-En Fan
6585d08fb1fSRong-En Fan	You can also set the environment variable $BUILD_CPPFLAGS rather than
6595d08fb1fSRong-En Fan	use this option.
6605d08fb1fSRong-En Fan
66139f2269fSPeter Wemm    --with-build-ldflags=XXX
66239f2269fSPeter Wemm	If cross-compiling, specify the host linker-flags.  You might need to
66339f2269fSPeter Wemm	do this if the target linker has unusual flags which confuse the host
66439f2269fSPeter Wemm	compiler.
66539f2269fSPeter Wemm
6665d08fb1fSRong-En Fan	You can also set the environment variable $BUILD_LDFLAGS rather than
6675d08fb1fSRong-En Fan	use this option.
6685d08fb1fSRong-En Fan
66939f2269fSPeter Wemm    --with-build-libs=XXX
67039f2269fSPeter Wemm	If cross-compiling, the host libraries.  You might need to do this if
67139f2269fSPeter Wemm	the target environment requires unusual libraries.
67239f2269fSPeter Wemm
6735d08fb1fSRong-En Fan	You can also set the environment variable $BUILD_LIBS rather than
6745d08fb1fSRong-En Fan	use this option.
6755d08fb1fSRong-En Fan
67639f2269fSPeter Wemm    --with-caps=XXX
67739f2269fSPeter Wemm	Specify an alternate terminfo capabilities file, which makes the
67839f2269fSPeter Wemm	configure script look for "include/Caps.XXX".  A few systems, e.g.,
67939f2269fSPeter Wemm	AIX 4.x use the same overall file-format as ncurses for terminfo
68039f2269fSPeter Wemm	data, but use different alignments within the tables to support
68139f2269fSPeter Wemm	legacy applications.  For those systems, you can configure ncurses
68239f2269fSPeter Wemm	to use a terminfo database which is compatible with the native
68339f2269fSPeter Wemm	applications.
68439f2269fSPeter Wemm
6854a1a9510SRong-En Fan    --with-chtype=TYPE
6864a1a9510SRong-En Fan	Override type of chtype, which stores the video attributes and (if
6874a1a9510SRong-En Fan	--enable-widec is not given) a character.  Prior to ncurses 5.5, this
6884a1a9510SRong-En Fan	was always unsigned long, but with ncurses 5.5, it may be unsigned.
6894a1a9510SRong-En Fan	Use this option if you need to preserve compatibility with 64-bit
6904a1a9510SRong-En Fan	executables.
6914a1a9510SRong-En Fan
69218259542SPeter Wemm    --with-database=XXX
69318259542SPeter Wemm	Specify the terminfo source file to install.  Usually you will wish
69418259542SPeter Wemm	to install ncurses' default (misc/terminfo.src).  Certain systems
69518259542SPeter Wemm	have special requirements, e.g, OS/2 EMX has a customized terminfo
69618259542SPeter Wemm	source file.
69718259542SPeter Wemm
69818259542SPeter Wemm    --with-dbmalloc
69918259542SPeter Wemm	For testing, compile and link with Conor Cahill's dbmalloc library.
7004a1a9510SRong-En Fan	This also sets the --disable-leaks option.
70118259542SPeter Wemm
70218259542SPeter Wemm    --with-debug
70318259542SPeter Wemm	Generate debug-libraries (default).  These are named by adding "_g"
70418259542SPeter Wemm	to the root, e.g., libncurses_g.a
70518259542SPeter Wemm
70618259542SPeter Wemm    --with-default-terminfo-dir=XXX
70718259542SPeter Wemm	Specify the default terminfo database directory.  This is normally
70818259542SPeter Wemm	DATADIR/terminfo, e.g., /usr/share/terminfo.
70918259542SPeter Wemm
71018259542SPeter Wemm    --with-dmalloc
71118259542SPeter Wemm	For testing, compile and link with Gray Watson's dmalloc library.
7124a1a9510SRong-En Fan	This also sets the --disable-leaks option.
71318259542SPeter Wemm
71418259542SPeter Wemm    --with-fallbacks=XXX
71518259542SPeter Wemm	Specify a list of fallback terminal descriptions which will be
71618259542SPeter Wemm	compiled into the ncurses library.  See CONFIGURING FALLBACK ENTRIES.
71718259542SPeter Wemm
71818259542SPeter Wemm    --with-gpm
71918259542SPeter Wemm	use Alessandro Rubini's GPM library to provide mouse support on the
7204a1a9510SRong-En Fan	Linux console.  Prior to ncurses 5.5, this introduced a dependency on
7214a1a9510SRong-En Fan	the GPM library.
7224a1a9510SRong-En Fan
7234a1a9510SRong-En Fan	Currently ncurses uses the dlsym() function to bind to the library at
7244a1a9510SRong-En Fan	runtime, so it is only necessary that the library be present when
7254a1a9510SRong-En Fan	ncurses is built, to obtain the filename (or soname) used in the
7264a1a9510SRong-En Fan	corresponding dlopen() call.  If you give a value for this option,
7274a1a9510SRong-En Fan	e.g.,
7284a1a9510SRong-En Fan
7294a1a9510SRong-En Fan		--with-gpm=$HOME/tmp/test-gpm.so
7304a1a9510SRong-En Fan
7314a1a9510SRong-En Fan	that overrides the configure check for the soname.
7324a1a9510SRong-En Fan
7334a1a9510SRong-En Fan	See also --without-dlsym
7344a1a9510SRong-En Fan
7355ca44d1cSRong-En Fan    --with-hashed-db[=XXX]
7364a1a9510SRong-En Fan	Use a hashed database for storing terminfo data rather than storing
7374a1a9510SRong-En Fan	each compiled entry in a separate binary file within a directory
7384a1a9510SRong-En Fan	tree.
7394a1a9510SRong-En Fan
7405ca44d1cSRong-En Fan	In particular, this uses the Berkeley database 1.8.5 interface, as
7415ca44d1cSRong-En Fan	provided by that and its successors db 2, 3, and 4.  The actual
7425ca44d1cSRong-En Fan	interface is slightly different in the successor versions of the
7435ca44d1cSRong-En Fan	Berkeley database.  The database should have been configured using
7445ca44d1cSRong-En Fan	"--enable-compat185".
7455ca44d1cSRong-En Fan
7464a1a9510SRong-En Fan	If you use this option for configuring ncurses, tic will only be able
7474a1a9510SRong-En Fan	to write entries in the hashed database.  infocmp can still read
7484a1a9510SRong-En Fan	entries from a directory tree as well as reading entries from the
7494a1a9510SRong-En Fan	hashed database.  To do this, infocmp determines whether the $TERMINFO
7504a1a9510SRong-En Fan	variable points to a directory or a file, and reads the directory-tree
7514a1a9510SRong-En Fan	or hashed database respectively.
7524a1a9510SRong-En Fan
7534a1a9510SRong-En Fan	You cannot have a directory containing both hashed-database and
7544a1a9510SRong-En Fan	filesystem-based terminfo entries.
7554a1a9510SRong-En Fan
7565ca44d1cSRong-En Fan	Use the parameter value to give the install-prefix used for the
7575ca44d1cSRong-En Fan	datbase, e.g.,
7585ca44d1cSRong-En Fan		--with-hashed-db=/usr/local/BigBase
7595ca44d1cSRong-En Fan	to find the corresponding include- and lib-directories under the
7605ca44d1cSRong-En Fan	given directory.
7615ca44d1cSRong-En Fan
7624a1a9510SRong-En Fan	See also the --enable-getcap option.
76318259542SPeter Wemm
76418259542SPeter Wemm    --with-install-prefix=XXX
76518259542SPeter Wemm	Allows you to specify an alternate location for installing ncurses
76618259542SPeter Wemm	after building it.  The value you specify is prepended to the "real"
7674a1a9510SRong-En Fan	install location.  This simplifies making binary packages.  The
7684a1a9510SRong-En Fan	makefile variable DESTDIR is set by this option.  It is also possible
7694a1a9510SRong-En Fan	to use
7704a1a9510SRong-En Fan		make install DESTDIR=XXX
7714a1a9510SRong-En Fan	since the makefiles pass that variable to subordinate makes.
77218259542SPeter Wemm
77318259542SPeter Wemm	NOTE:  a few systems build shared libraries with fixed pathnames; this
77418259542SPeter Wemm	option probably will not work for those configurations.
77518259542SPeter Wemm
7764a1a9510SRong-En Fan     --with-libtool[=XXX]
7774a1a9510SRong-En Fan	Generate libraries with libtool.  If this option is selected, then it
7784a1a9510SRong-En Fan	overrides all other library model specifications.  Note that libtool
7794a1a9510SRong-En Fan	must already be installed, uses makefile rules dependent on GNU make,
7804a1a9510SRong-En Fan	and does not promise to follow the version numbering convention of
7814a1a9510SRong-En Fan	other shared libraries on your system.  However, if the --with-shared
7824a1a9510SRong-En Fan	option does not succeed, you may get better results with this option.
7834a1a9510SRong-En Fan
7844a1a9510SRong-En Fan	If a parameter value is given, it must be the full pathname of the
7854a1a9510SRong-En Fan	particular version of libtool, e.g.,
7864a1a9510SRong-En Fan		/usr/bin/libtool-1.2.3
7874a1a9510SRong-En Fan
7884a1a9510SRong-En Fan	It is possible to rebuild the configure script to use the automake
7894a1a9510SRong-En Fan	macros for libtool, e.g., AC_PROG_LIBTOOL.  See the comments in
7904a1a9510SRong-En Fan	aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure
7914a1a9510SRong-En Fan	using the appropriate patch for autoconf from
7924a1a9510SRong-En Fan		http://invisible-island.net/autoconf/
7934a1a9510SRong-En Fan
7944a1a9510SRong-En Fan    --with-manpage-aliases
7954a1a9510SRong-En Fan	Tell the configure script you wish to create entries in the
7964a1a9510SRong-En Fan	man-directory for aliases to manpages which list them, e.g., the
7974a1a9510SRong-En Fan	functions in the panel manpage.  This is the default.  You can disable
7984a1a9510SRong-En Fan	it if your man program does this.  You can also disable
7994a1a9510SRong-En Fan	--with-manpage-symlinks to install files containing a ".so" command
8004a1a9510SRong-En Fan	rather than symbolic links.
8017a69bbfbSPeter Wemm
80218259542SPeter Wemm    --with-manpage-format=XXX
80318259542SPeter Wemm	Tell the configure script how you would like to install man-pages.  The
80418259542SPeter Wemm	option value must be one of these:  gzip, compress, BSDI, normal,
80518259542SPeter Wemm	formatted.  If you do not give this option, the configure script
80618259542SPeter Wemm	attempts to determine which is the case.
80718259542SPeter Wemm
80818259542SPeter Wemm    --with-manpage-renames=XXX
80918259542SPeter Wemm	Tell the configure script that you wish to rename the manpages while
81018259542SPeter Wemm	installing.  Currently the only distribution which does this is
81118259542SPeter Wemm	the Linux Debian.  The option value specifies the name of a file
81218259542SPeter Wemm	that lists the renamed files, e.g., $srcdir/man/man_db.renames
81318259542SPeter Wemm
81418259542SPeter Wemm    --with-manpage-symlinks
81518259542SPeter Wemm	Tell the configure script that you wish to make symbolic links in the
81618259542SPeter Wemm	man-directory for aliases to the man-pages.  This is the default, but
81718259542SPeter Wemm	can be disabled for systems that provide this automatically.  Doing
81818259542SPeter Wemm	this on systems that do not support symbolic links will result in
81918259542SPeter Wemm	copying the man-page for each alias.
82018259542SPeter Wemm
8217a69bbfbSPeter Wemm    --with-manpage-tbl
8227a69bbfbSPeter Wemm	Tell the configure script that you with to preprocess the manpages
8237a69bbfbSPeter Wemm	by running them through tbl to generate tables understandable by
8247a69bbfbSPeter Wemm	nroff.
8257a69bbfbSPeter Wemm
8264a1a9510SRong-En Fan    --with-mmask-t=TYPE
8274a1a9510SRong-En Fan	Override type of mmask_t, which stores the mouse mask.  Prior to
8284a1a9510SRong-En Fan	ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it
8294a1a9510SRong-En Fan	may be unsigned.  Use this option if you need to preserve compatibility
8304a1a9510SRong-En Fan	with 64-bit executables.
8314a1a9510SRong-En Fan
8325d08fb1fSRong-En Fan    --with-normal
8335d08fb1fSRong-En Fan	Generate normal (i.e., static) libraries (default).
8345d08fb1fSRong-En Fan
8355d08fb1fSRong-En Fan	Note:  on Linux, the configure script will attempt to use the GPM
8365d08fb1fSRong-En Fan	library via the dlsym() function call.  Use --without-dlsym to disable
8375d08fb1fSRong-En Fan	this feature, or --without-gpm, depending on whether you wish to use
8385d08fb1fSRong-En Fan	GPM.
8395d08fb1fSRong-En Fan
8407a69bbfbSPeter Wemm    --with-ospeed=TYPE
8417a69bbfbSPeter Wemm	Override type of ospeed variable, which is part of the termcap
8427a69bbfbSPeter Wemm	compatibility interface.  In termcap, this is a 'short', which works
8437a69bbfbSPeter Wemm	for a wide range of baudrates because ospeed is not the actual speed
8447a69bbfbSPeter Wemm	but the encoded value, e.g., B9600 would be a small number such as 13.
8457a69bbfbSPeter Wemm	However the encoding scheme originally allowed for values "only" up to
8467a69bbfbSPeter Wemm	38400bd.  A newer set of definitions past 38400bd is not encoded as
8477a69bbfbSPeter Wemm	compactly, and is not guaranteed to fit into a short (see the function
8487a69bbfbSPeter Wemm	cfgetospeed(), which returns a speed_t for this reason).  In practice,
8497a69bbfbSPeter Wemm	applications that required knowledge of the ospeed variable, i.e.,
8507a69bbfbSPeter Wemm	those using termcap, do not use the higher speeds.  Your application
8517a69bbfbSPeter Wemm	(or system, in general) may or may not.
8527a69bbfbSPeter Wemm
85318259542SPeter Wemm    --with-profile
85418259542SPeter Wemm	Generate profile-libraries These are named by adding "_p" to the root,
85518259542SPeter Wemm	e.g., libncurses_p.a
85618259542SPeter Wemm
857aa59d4d4SRong-En Fan    --with-pthread
858aa59d4d4SRong-En Fan	Link with POSIX threads, set --enable-reentrant.  The use_window() and
859aa59d4d4SRong-En Fan	use_screen() functions will use mutex's, allowing rudimentary support
860aa59d4d4SRong-En Fan	for multithreaded applications.
861aa59d4d4SRong-En Fan
86218259542SPeter Wemm    --with-rcs-ids
86318259542SPeter Wemm	Compile-in RCS identifiers.  Most of the C files have an identifier.
86418259542SPeter Wemm
8654a1a9510SRong-En Fan    --with-rel-version=NUM
8664a1a9510SRong-En Fan	Override the release version, which may be used in shared library
8674a1a9510SRong-En Fan	filenames.  This consists of a major and minor version number separated
8684a1a9510SRong-En Fan	by ".".  Normally the major version number is the same as the ABI
8694a1a9510SRong-En Fan	version; some ports have special requirements for compatibility.
8704a1a9510SRong-En Fan
87118259542SPeter Wemm    --with-shared
87218259542SPeter Wemm	Generate shared-libraries.  The names given depend on the system for
87318259542SPeter Wemm	which you are building, typically using a ".so" suffix, along with
87418259542SPeter Wemm	symbolic links that refer to the release version.
87518259542SPeter Wemm
87618259542SPeter Wemm	NOTE:  Unless you override the configure script by setting the $CFLAGS
87718259542SPeter Wemm	environment variable, these will not be built with the -g debugging
87818259542SPeter Wemm	option.
87918259542SPeter Wemm
8804a1a9510SRong-En Fan	NOTE: For some configurations, e.g., installing a new version of
8814a1a9510SRong-En Fan	ncurses shared libraries on a machine which already has ncurses
8824a1a9510SRong-En Fan	shared libraries, you may encounter problems with the linker.
8834a1a9510SRong-En Fan	For example, it may prevent you from running  the build tree's
8844a1a9510SRong-En Fan	copy of tic (for installing the terminfo database) because it
8854a1a9510SRong-En Fan	loads the system's copy of the ncurses shared libraries.  In that
8864a1a9510SRong-En Fan	case, using the misc/shlib script may be helpful, since it sets
8874a1a9510SRong-En Fan	$LD_LIBRARY_PATH to point to the build tree, e.g.,
8884a1a9510SRong-En Fan		./misc/shlib make install
8894a1a9510SRong-En Fan
89018259542SPeter Wemm    --with-shlib-version=XXX
89118259542SPeter Wemm	Specify whether to use the release or ABI version for shared libraries.
89218259542SPeter Wemm	This is normally chosen automatically based on the type of system
89318259542SPeter Wemm	which you are building on.  We use it for testing the configure script.
89418259542SPeter Wemm
8954a1a9510SRong-En Fan    --with-sysmouse
8964a1a9510SRong-En Fan	use FreeBSD sysmouse interface provide mouse support on the console.
8974a1a9510SRong-En Fan
89818259542SPeter Wemm    --with-system-type=XXX
89918259542SPeter Wemm	For testing, override the derived host system-type which is used to
90018259542SPeter Wemm	decide things such as the linker commands used to build shared
90118259542SPeter Wemm	libraries.  This is normally chosen automatically based on the type of
90218259542SPeter Wemm	system which you are building on.  We use it for testing the configure
90318259542SPeter Wemm	script.
90418259542SPeter Wemm
90518259542SPeter Wemm    --with-terminfo-dirs=XXX
90618259542SPeter Wemm	Specify a search-list of terminfo directories which will be compiled
90718259542SPeter Wemm	into the ncurses library (default: DATADIR/terminfo)
90818259542SPeter Wemm
9094a1a9510SRong-En Fan    --with-termlib[=XXX]
91018259542SPeter Wemm	When building the ncurses library, organize this as two parts:  the
91118259542SPeter Wemm	curses library (libncurses) and the low-level terminfo library
91218259542SPeter Wemm	(libtinfo).  This is done to accommodate applications that use only
91318259542SPeter Wemm	the latter.  The terminfo library is about half the size of the total.
91418259542SPeter Wemm
9154a1a9510SRong-En Fan	If an option value is given, that overrides the name of the terminfo
9164a1a9510SRong-En Fan	library.  For instance, if the wide-character version is built, the
9174a1a9510SRong-En Fan	terminfo library would be named libtinfow.  But the libtinfow interface
9184a1a9510SRong-En Fan	is upward compatible from libtinfo, so it would be possible to overlay
9194a1a9510SRong-En Fan	libtinfo.so with a "wide" version of libtinfow.so by renaming it with
9204a1a9510SRong-En Fan	this option.
9214a1a9510SRong-En Fan
92239f2269fSPeter Wemm    --with-termpath=XXX
92339f2269fSPeter Wemm	Specify a search-list of termcap files which will be compiled into the
92439f2269fSPeter Wemm	ncurses library (default:  /etc/termcap:/usr/share/misc/termcap)
92539f2269fSPeter Wemm
9265ca44d1cSRong-En Fan    --with-ticlib[=XXX]
9275ca44d1cSRong-En Fan	When building the ncurses library, build a separate library for
9285ca44d1cSRong-En Fan	the modules that are used only by the utility programs.  Normally
9295ca44d1cSRong-En Fan	those would be bundled with the termlib or ncurses libraries.
9305ca44d1cSRong-En Fan
9315ca44d1cSRong-En Fan	If an option value is given, that overrides the name of the tic
9325ca44d1cSRong-En Fan	library.  As in termlib, there is no ABI difference between the
9335ca44d1cSRong-En Fan	"wide" libticw.so and libtic.so
9345ca44d1cSRong-En Fan
9355d08fb1fSRong-En Fan	NOTE: Overriding the name of the tic library may be useful if you are
9365d08fb1fSRong-En Fan	also using the --with-termlib option to rename libtinfo.  If you are
9375d08fb1fSRong-En Fan	not doing that, renaming the tic library can result in conflicting
9385d08fb1fSRong-En Fan	library dependencies for tic and other programs built with the tic
9395d08fb1fSRong-En Fan	library.
9405d08fb1fSRong-En Fan
9414a1a9510SRong-En Fan    --with-trace
9424a1a9510SRong-En Fan	Configure the trace() function as part of the all models of the ncurses
9434a1a9510SRong-En Fan	library.  Normally it is part of the debug (libncurses_g) library only.
9444a1a9510SRong-En Fan
9454a1a9510SRong-En Fan    --with-valgrind
9464a1a9510SRong-En Fan	For testing, compile with debug option.
9474a1a9510SRong-En Fan	This also sets the --disable-leaks option.
9484a1a9510SRong-En Fan
94918259542SPeter Wemm    --without-ada
95018259542SPeter Wemm	Suppress the configure script's check for Ada95, do not build the
95118259542SPeter Wemm	Ada95 binding and related demo.
95218259542SPeter Wemm
9537a69bbfbSPeter Wemm    --without-curses-h
9547a69bbfbSPeter Wemm	Don't install the ncurses header with the name "curses.h".  Rather,
9557a69bbfbSPeter Wemm	install as "ncurses.h" and modify the installed headers and manpages
9567a69bbfbSPeter Wemm	accordingly.
9577a69bbfbSPeter Wemm
95818259542SPeter Wemm    --without-cxx
95918259542SPeter Wemm	XSI curses declares "bool" as part of the interface.  C++ also declares
96018259542SPeter Wemm	"bool".  Neither specifies the size and type of booleans, but both
96118259542SPeter Wemm	insist on the same name.  We chose to accommodate this by making the
96218259542SPeter Wemm	configure script check for the size and type (e.g., unsigned or signed)
96318259542SPeter Wemm	that your C++ compiler uses for booleans.  If you do not wish to use
96418259542SPeter Wemm	ncurses with C++, use this option to tell the configure script to not
96518259542SPeter Wemm	adjust ncurses bool to match C++.
96618259542SPeter Wemm
96718259542SPeter Wemm    --without-cxx-binding
96818259542SPeter Wemm	Suppress the configure script's check for C++, do not build the
96918259542SPeter Wemm	C++ binding and related demo.
97018259542SPeter Wemm
9714a1a9510SRong-En Fan    --without-develop
9724a1a9510SRong-En Fan	Disable development options.  This does not include those that change
9734a1a9510SRong-En Fan	the interface, such as --enable-widec.
9744a1a9510SRong-En Fan
9754a1a9510SRong-En Fan    --without-dlsym
9764a1a9510SRong-En Fan	Do not use dlsym() to load GPM dynamically.
9774a1a9510SRong-En Fan
97818259542SPeter Wemm    --without-progs
97918259542SPeter Wemm	Tell the configure script to suppress the build of ncurses' application
98018259542SPeter Wemm	programs (e.g., tic).  The test applications will still be built if you
98118259542SPeter Wemm	type "make", though not if you simply do "make install".
98218259542SPeter Wemm
9834a1a9510SRong-En Fan    --without-xterm-new
9844a1a9510SRong-En Fan	Tell the configure script to use "xterm-old" for the entry used in
9854a1a9510SRong-En Fan	the terminfo database.  This will work with variations such as
9864a1a9510SRong-En Fan	X11R5 and X11R6 xterm.
9874a1a9510SRong-En Fan
98818259542SPeter Wemm
98915589c42SPeter WemmCOMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
99015589c42SPeter Wemm--------------------------------------------
99115589c42SPeter Wemm
99215589c42SPeter Wemm    Because ncurses implements the X/Open Curses Specification, its interface
99315589c42SPeter Wemm    is fairly stable.  That does not mean the interface does not change.
99415589c42SPeter Wemm    Changes are made to the documented interfaces when we find differences
99515589c42SPeter Wemm    between ncurses and X/Open or implementations which they certify (such as
99615589c42SPeter Wemm    Solaris).  We add extensions to those interfaces to solve problems not
99715589c42SPeter Wemm    addressed by the original curses design, but those must not conflict with
99815589c42SPeter Wemm    the X/Open documentation.
99915589c42SPeter Wemm
100015589c42SPeter Wemm    Here are some of the major interface changes, and related problems which
100115589c42SPeter Wemm    you may encounter when building a system with different versions of
100215589c42SPeter Wemm    ncurses:
100315589c42SPeter Wemm
10045d08fb1fSRong-En Fan    5.7 (November 2, 2008)
10055d08fb1fSRong-En Fan	Interface changes:
10065d08fb1fSRong-En Fan
10075d08fb1fSRong-En Fan	+ generate linkable stubs for some macros:
10085d08fb1fSRong-En Fan		getattrs
10095d08fb1fSRong-En Fan
10105d08fb1fSRong-En Fan	+ Add new library configuration for tic-library (the non-curses portion
10115d08fb1fSRong-En Fan	  of the ncurses library used for the tic program as well as some
10125d08fb1fSRong-En Fan	  others such as tack.  There is no API change, but makefiles would be
10135d08fb1fSRong-En Fan	  changed to use the tic-library built separately.
10145d08fb1fSRong-En Fan
10155d08fb1fSRong-En Fan	  tack, distributed separately from ncurses, uses some of the internal
10165d08fb1fSRong-En Fan	  _nc_XXX functions, which are declared in the tic.h header file.
10175d08fb1fSRong-En Fan
10185d08fb1fSRong-En Fan	  The reason for providing this separate library is that none of the
10195d08fb1fSRong-En Fan	  functions in it are suitable for threaded applications.
10205d08fb1fSRong-En Fan
10215d08fb1fSRong-En Fan	+ Add new library configuration (ncursest, ncurseswt) which provides
10225d08fb1fSRong-En Fan	  rudimentary support for POSIX threads.  This introduces opaque
10235d08fb1fSRong-En Fan	  access functions to the WINDOW structure and adds a parameter to
10245d08fb1fSRong-En Fan	  several internal functions.
10255d08fb1fSRong-En Fan
10265d08fb1fSRong-En Fan	+ move most internal variables (except tic-library) into data blocks
10275d08fb1fSRong-En Fan	  _nc_globals and _nc_prescreen to simplify analysis.  Those were
10285d08fb1fSRong-En Fan	  globally accessible, but since they were not part of the documented
10295d08fb1fSRong-En Fan	  API, there is no ABI change.
10305d08fb1fSRong-En Fan
10315d08fb1fSRong-En Fan	+ changed static tables of strings to be indices into long strings, to
10325d08fb1fSRong-En Fan	  improve startup performance.  This changes parameter lists for some
10335d08fb1fSRong-En Fan	  of the internal functions.
10345d08fb1fSRong-En Fan
10355d08fb1fSRong-En Fan	Added extensions:
10365d08fb1fSRong-En Fan
10375d08fb1fSRong-En Fan	+ add NCURSES_OPAQUE definition in curses.h to control whether internal
10385d08fb1fSRong-En Fan	  details of the WINDOW structure are visible to an application.  This
10395d08fb1fSRong-En Fan	  is always defined when the threaded library is built, and is optional
10405d08fb1fSRong-En Fan	  otherwise.  New functions for this:  is_cleared, is_idcok, is_idlok,
10415d08fb1fSRong-En Fan	  is_immedok, is_keypad, is_leaveok, is_nodelay, is_notimeout,
10425d08fb1fSRong-En Fan	  is_scrollok, is_syncok, wgetparent and wgetscrreg.
10435d08fb1fSRong-En Fan
10445d08fb1fSRong-En Fan	+ the threaded library (ncursest) also disallows direct updating of
10455d08fb1fSRong-En Fan	  global curses-level variables, providing functions (via macros) for
10465d08fb1fSRong-En Fan	  obtaining their value.  A few of those variables can be modified by
10475d08fb1fSRong-En Fan	  the application, using new functions:  set_escdelay, set_tabsize
10485d08fb1fSRong-En Fan
10495d08fb1fSRong-En Fan	+ added functions use_window() and use_screen() which wrap a mutex
10505d08fb1fSRong-En Fan	  (if threading is configured) around a call to a user-supplied
10515d08fb1fSRong-En Fan	  function.
10525d08fb1fSRong-En Fan
10535d08fb1fSRong-En Fan	Added internal functions:
10545d08fb1fSRong-En Fan		_nc_get_alias_table
10555d08fb1fSRong-En Fan		_nc_get_screensize
10565d08fb1fSRong-En Fan		_nc_keyname
10575d08fb1fSRong-En Fan		_nc_screen_of
10585d08fb1fSRong-En Fan		_nc_set_no_padding
10595d08fb1fSRong-En Fan		_nc_tracechar
10605d08fb1fSRong-En Fan		_nc_tracemouse
10615d08fb1fSRong-En Fan		_nc_unctrl
10625d08fb1fSRong-En Fan		_nc_ungetch
10635d08fb1fSRong-En Fan
10645d08fb1fSRong-En Fan		These are used for leak-testing, and are stubs for
10655d08fb1fSRong-En Fan		ABI compatibility when ncurses is not configured for that
10665d08fb1fSRong-En Fan		using the --disable-leaks configure script option:
10675d08fb1fSRong-En Fan
10685d08fb1fSRong-En Fan		_nc_free_and_exit
10695d08fb1fSRong-En Fan		_nc_leaks_tinfo
10705d08fb1fSRong-En Fan
10715d08fb1fSRong-En Fan	Removed internal functions:
10725d08fb1fSRong-En Fan		none
10735d08fb1fSRong-En Fan
10745d08fb1fSRong-En Fan	Modified internal functions:
10755d08fb1fSRong-En Fan		_nc_fifo_dump
10765d08fb1fSRong-En Fan		_nc_find_entry
10775d08fb1fSRong-En Fan		_nc_handle_sigwinch
10785d08fb1fSRong-En Fan		_nc_init_keytry
10795d08fb1fSRong-En Fan		_nc_keypad
10805d08fb1fSRong-En Fan		_nc_locale_breaks_acs
10815d08fb1fSRong-En Fan		_nc_timed_wait
10825d08fb1fSRong-En Fan		_nc_update_screensize
10835d08fb1fSRong-En Fan
10845d08fb1fSRong-En Fan		Use new typedef TRIES to replace "struct tries":
10855d08fb1fSRong-En Fan
10865d08fb1fSRong-En Fan		_nc_add_to_try
10875d08fb1fSRong-En Fan		_nc_expand_try
10885d08fb1fSRong-En Fan		_nc_remove_key
10895d08fb1fSRong-En Fan		_nc_remove_string
10905d08fb1fSRong-En Fan		_nc_trace_tries
10915d08fb1fSRong-En Fan
10924a1a9510SRong-En Fan    5.6 (December 17, 2006)
10934a1a9510SRong-En Fan	Interface changes:
10944a1a9510SRong-En Fan
10954a1a9510SRong-En Fan	+ generate linkable stubs for some macros:
10964a1a9510SRong-En Fan
10974a1a9510SRong-En Fan	  getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx,
10984a1a9510SRong-En Fan	  getpary, getpary,
10994a1a9510SRong-En Fan
11004a1a9510SRong-En Fan	  and (for libncursesw)
11014a1a9510SRong-En Fan
11024a1a9510SRong-En Fan	  wgetbkgrnd
11034a1a9510SRong-En Fan
11044a1a9510SRong-En Fan	Added extensions:
11054a1a9510SRong-En Fan		nofilter()
11064a1a9510SRong-En Fan		use_legacy_coding()
11074a1a9510SRong-En Fan
11084a1a9510SRong-En Fan	Added internal functions:
11094a1a9510SRong-En Fan		_nc_first_db
11104a1a9510SRong-En Fan		_nc_get_source
11114a1a9510SRong-En Fan		_nc_handle_sigwinch
11124a1a9510SRong-En Fan		_nc_is_abs_path
11134a1a9510SRong-En Fan		_nc_is_dir_path
11144a1a9510SRong-En Fan		_nc_is_file_path
11154a1a9510SRong-En Fan		_nc_keep_tic_dir
11164a1a9510SRong-En Fan		_nc_keep_tic_dir
11174a1a9510SRong-En Fan		_nc_last_db
11184a1a9510SRong-En Fan		_nc_next_db
11194a1a9510SRong-En Fan		_nc_read_termtype
11204a1a9510SRong-En Fan		_nc_tic_dir
11214a1a9510SRong-En Fan
11224a1a9510SRong-En Fan		Also (if using the hashed database configuration):
11234a1a9510SRong-En Fan
11244a1a9510SRong-En Fan		_nc_db_close
11254a1a9510SRong-En Fan		_nc_db_first
11264a1a9510SRong-En Fan		_nc_db_get
11274a1a9510SRong-En Fan		_nc_db_have_data
11284a1a9510SRong-En Fan		_nc_db_have_index
11294a1a9510SRong-En Fan		_nc_db_next
11304a1a9510SRong-En Fan		_nc_db_open
11314a1a9510SRong-En Fan		_nc_db_put
11324a1a9510SRong-En Fan
11334a1a9510SRong-En Fan		otherwise
11344a1a9510SRong-En Fan
11354a1a9510SRong-En Fan		_nc_hashed_db
11364a1a9510SRong-En Fan
11374a1a9510SRong-En Fan	Removed internal functions:
11384a1a9510SRong-En Fan		none
11394a1a9510SRong-En Fan
11404a1a9510SRong-En Fan	Modified internal functions:
11414a1a9510SRong-En Fan		_nc_add_to_try
11424a1a9510SRong-En Fan		_nc_do_color
11434a1a9510SRong-En Fan		_nc_expand_try
11444a1a9510SRong-En Fan		_nc_remove_key
11454a1a9510SRong-En Fan		_nc_setupscreen
11464a1a9510SRong-En Fan
11474a1a9510SRong-En Fan    5.5 (October 10, 2005)
11484a1a9510SRong-En Fan	Interface changes:
11494a1a9510SRong-En Fan
11504a1a9510SRong-En Fan	+ terminfo installs "xterm-new" as "xterm" entry rather than
11514a1a9510SRong-En Fan	  "xterm-old" (aka xterm-r6).
11524a1a9510SRong-En Fan
11534a1a9510SRong-En Fan	+ terminfo data is installed using the tic -x option (few systems
11544a1a9510SRong-En Fan	  still use ncurses 4.2).
11554a1a9510SRong-En Fan
11564a1a9510SRong-En Fan	+ modify C++ binding to work with newer C++ compilers by providing
11574a1a9510SRong-En Fan	  initializers and using modern casts.  Old-style header names are
11584a1a9510SRong-En Fan	  still used in this release to allow compiling with not-so-old
11594a1a9510SRong-En Fan	  compilers.
11604a1a9510SRong-En Fan
11614a1a9510SRong-En Fan	+ form and menu libraries now work with wide-character data.
11624a1a9510SRong-En Fan	  Applications which bypassed the form library and manipulated the
11634a1a9510SRong-En Fan	  FIELD.buf data directly will not work properly with libformw, since
11644a1a9510SRong-En Fan	  that no longer points to an array of char.  The set_field_buffer()
11654a1a9510SRong-En Fan	  and field_buffer() functions translate to/from the actual field
11664a1a9510SRong-En Fan	  data.
11674a1a9510SRong-En Fan
11684a1a9510SRong-En Fan	+ change SP->_current_attr to a pointer, adjust ifdef's to ensure that
11694a1a9510SRong-En Fan	  libtinfo.so and libtinfow.so have the same ABI.  The reason for this
11704a1a9510SRong-En Fan	  is that the corresponding data which belongs to the upper-level
11714a1a9510SRong-En Fan	  ncurses library has a different size in each model.
11724a1a9510SRong-En Fan
11734a1a9510SRong-En Fan	+ winnstr() now returns multibyte character strings for the
11744a1a9510SRong-En Fan	  wide-character configuration.
11754a1a9510SRong-En Fan
11764a1a9510SRong-En Fan	+ assume_default_colors() no longer requires that use_default_colors()
11774a1a9510SRong-En Fan	  be called first.
11784a1a9510SRong-En Fan
11794a1a9510SRong-En Fan	+ data_ahead() now works with wide-characters.
11804a1a9510SRong-En Fan
11814a1a9510SRong-En Fan	+ slk_set() and slk_wset() now accept and store multibyte or
11824a1a9510SRong-En Fan	  multicolumn characters.
11834a1a9510SRong-En Fan
11844a1a9510SRong-En Fan	+ start_color() now returns OK if colors have already been started.
11854a1a9510SRong-En Fan	  start_color() also returns ERR if it cannot allocate memory.
11864a1a9510SRong-En Fan
11874a1a9510SRong-En Fan	+ pair_content() now returns -1 for consistency with init_pair() if it
11884a1a9510SRong-En Fan	  corresponds to the default-color.
11894a1a9510SRong-En Fan
11904a1a9510SRong-En Fan	+ unctrl() now returns null if its parameter does not correspond
11914a1a9510SRong-En Fan	  to an unsigned char.
11924a1a9510SRong-En Fan
11934a1a9510SRong-En Fan	Added extensions:
11944a1a9510SRong-En Fan		Experimental mouse version 2 supports wheel mice with buttons
11954a1a9510SRong-En Fan		4 and 5.  This requires ABI 6 because it modifies the encoding
11964a1a9510SRong-En Fan		of mouse events.
11974a1a9510SRong-En Fan
11984a1a9510SRong-En Fan		Experimental extended colors allows encoding of 256 foreground
11994a1a9510SRong-En Fan		and background colors, e.g., with the xterm-256color or
12004a1a9510SRong-En Fan		xterm-88color terminfo entries.  This requires ABI 6 because
12014a1a9510SRong-En Fan		it changes the size of cchar_t.
12024a1a9510SRong-En Fan
12034a1a9510SRong-En Fan	Added internal functions:
12044a1a9510SRong-En Fan		_nc_check_termtype2
12054a1a9510SRong-En Fan		_nc_resolve_uses2
12064a1a9510SRong-En Fan		_nc_retrace_cptr
12074a1a9510SRong-En Fan		_nc_retrace_cvoid_ptr
12084a1a9510SRong-En Fan		_nc_retrace_void_ptr
12094a1a9510SRong-En Fan		_nc_setup_term
12104a1a9510SRong-En Fan
12114a1a9510SRong-En Fan	Removed internal functions:
12124a1a9510SRong-En Fan		none
12134a1a9510SRong-En Fan
12144a1a9510SRong-En Fan	Modified internal functions:
12154a1a9510SRong-En Fan		_nc_insert_ch
12164a1a9510SRong-En Fan		_nc_save_str
12174a1a9510SRong-En Fan		_nc_trans_string
12184a1a9510SRong-En Fan
12194a1a9510SRong-En Fan    5.4 (February 8, 2004)
12204a1a9510SRong-En Fan	Interface changes:
12214a1a9510SRong-En Fan
12224a1a9510SRong-En Fan	+ add the remaining functions for X/Open curses wide-character support.
12234a1a9510SRong-En Fan	  These are only available if the library is configured using the
12244a1a9510SRong-En Fan	  --enable-widec option.
12254a1a9510SRong-En Fan		pecho_wchar()
12264a1a9510SRong-En Fan		slk_wset()
12274a1a9510SRong-En Fan
12284a1a9510SRong-En Fan	+ write getyx() and related 2-return macros in terms of getcury(),
12294a1a9510SRong-En Fan	  getcurx(), etc.
12304a1a9510SRong-En Fan
12314a1a9510SRong-En Fan	+ simplify ifdef for bool declaration in curses.h
12324a1a9510SRong-En Fan
12334a1a9510SRong-En Fan	+ modify ifdef's in curses.h that disabled use of __attribute__() for
12344a1a9510SRong-En Fan	  g++, since recent versions implement the cases which ncurses uses.
12354a1a9510SRong-En Fan
12364a1a9510SRong-En Fan	+ change some interfaces to use const:
12374a1a9510SRong-En Fan		define_key()
12384a1a9510SRong-En Fan		mvprintw()
12394a1a9510SRong-En Fan		mvwprintw()
12404a1a9510SRong-En Fan		printw()
12414a1a9510SRong-En Fan		vw_printw()
12424a1a9510SRong-En Fan		winsnstr()
12434a1a9510SRong-En Fan		wprintw()
12444a1a9510SRong-En Fan
12454a1a9510SRong-En Fan	Added extensions:
12464a1a9510SRong-En Fan		key_defined()
12474a1a9510SRong-En Fan
12484a1a9510SRong-En Fan	Added internal functions:
12494a1a9510SRong-En Fan		_nc_get_locale()
12504a1a9510SRong-En Fan		_nc_insert_ch()
12514a1a9510SRong-En Fan		_nc_is_charable()	wide
12524a1a9510SRong-En Fan		_nc_locale_breaks_acs()
12534a1a9510SRong-En Fan		_nc_pathlast()
12544a1a9510SRong-En Fan		_nc_to_char()		wide
12554a1a9510SRong-En Fan		_nc_to_widechar()	wide
12564a1a9510SRong-En Fan		_nc_tparm_analyze()
12574a1a9510SRong-En Fan		_nc_trace_bufcat()	debug
12584a1a9510SRong-En Fan		_nc_unicode_locale()
12594a1a9510SRong-En Fan
12604a1a9510SRong-En Fan	Removed internal functions:
12614a1a9510SRong-En Fan		_nc_outstr()
12624a1a9510SRong-En Fan		_nc_sigaction()
12634a1a9510SRong-En Fan
12644a1a9510SRong-En Fan	Modified internal functions:
12654a1a9510SRong-En Fan		_nc_remove_string()
12664a1a9510SRong-En Fan		_nc_retrace_chtype()
12674a1a9510SRong-En Fan
12684a1a9510SRong-En Fan    5.3 (October 12, 2002)
12694a1a9510SRong-En Fan	Interface changes:
12704a1a9510SRong-En Fan
12714a1a9510SRong-En Fan	+ change type for bool used in headers to NCURSES_BOOL, which usually
12724a1a9510SRong-En Fan	  is the same as the compiler's definition for 'bool'.
12734a1a9510SRong-En Fan
12744a1a9510SRong-En Fan	+ add all but two functions for X/Open curses wide-character support.
12754a1a9510SRong-En Fan	  These are only available if the library is configured using the
12764a1a9510SRong-En Fan	  --enable-widec option.  Missing functions are
12774a1a9510SRong-En Fan		pecho_wchar()
12784a1a9510SRong-En Fan		slk_wset()
12794a1a9510SRong-En Fan
12804a1a9510SRong-En Fan	+ add environment variable $NCURSES_ASSUMED_COLORS to modify the
12814a1a9510SRong-En Fan	  assume_default_colors() extension.
12824a1a9510SRong-En Fan
12834a1a9510SRong-En Fan	Added extensions:
12844a1a9510SRong-En Fan		is_term_resized()
12854a1a9510SRong-En Fan		resize_term()
12864a1a9510SRong-En Fan
12874a1a9510SRong-En Fan	Added internal functions:
12884a1a9510SRong-En Fan		_nc_altcharset_name()	debug
12894a1a9510SRong-En Fan		_nc_reset_colors()
12904a1a9510SRong-En Fan		_nc_retrace_bool()	debug
12914a1a9510SRong-En Fan		_nc_retrace_unsigned()	debug
12924a1a9510SRong-En Fan		_nc_rootname()
12934a1a9510SRong-En Fan		_nc_trace_ttymode()	debug
12944a1a9510SRong-En Fan		_nc_varargs()		debug
12954a1a9510SRong-En Fan		_nc_visbufn()		debug
12964a1a9510SRong-En Fan		_nc_wgetch()
12974a1a9510SRong-En Fan
12984a1a9510SRong-En Fan	Removed internal functions:
12994a1a9510SRong-En Fan		_nc_background()
13004a1a9510SRong-En Fan
13014a1a9510SRong-En Fan	Modified internal functions:
13024a1a9510SRong-En Fan		_nc_freeall()		debug
13034a1a9510SRong-En Fan
13047a69bbfbSPeter Wemm    5.2 (October 21, 2000)
13057a69bbfbSPeter Wemm	Interface changes:
13067a69bbfbSPeter Wemm
13077a69bbfbSPeter Wemm	+ revert termcap ospeed variable to 'short' (see discussion of the
13087a69bbfbSPeter Wemm	  --with-ospeed configure option).
13097a69bbfbSPeter Wemm
131018259542SPeter Wemm    5.1 (July 8, 2000)
131118259542SPeter Wemm	Interface changes:
131218259542SPeter Wemm
131318259542SPeter Wemm	+ made the extended terminal capabilities
131418259542SPeter Wemm	  (configure --enable-tcap-names) a standard feature.  This should
131518259542SPeter Wemm	  be transparent to applications that do not require it.
131618259542SPeter Wemm
131718259542SPeter Wemm	+ removed the trace() function and related trace support from the
131818259542SPeter Wemm	  production library.
131918259542SPeter Wemm
132018259542SPeter Wemm	+ modified curses.h.in, undef'ing some symbols to avoid conflict
132118259542SPeter Wemm	  with C++ STL.
132218259542SPeter Wemm
132318259542SPeter Wemm	Added extensions:  assume_default_colors().
132418259542SPeter Wemm
132518259542SPeter Wemm    5.0 (October 23, 1999)
132615589c42SPeter Wemm	Interface changes:
132715589c42SPeter Wemm
132815589c42SPeter Wemm	+ implemented the wcolor_set() and slk_color() functions.
132915589c42SPeter Wemm
133015589c42SPeter Wemm	+ move macro winch to a function, to hide details of struct ldat
133115589c42SPeter Wemm
133215589c42SPeter Wemm	+ corrected prototypes for slk_* functions, using chtype rather than
133315589c42SPeter Wemm	  attr_t.
133415589c42SPeter Wemm
133515589c42SPeter Wemm	+ the slk_attr_{set,off,on} functions need an additional void*
133615589c42SPeter Wemm	  parameter according to XSI.
133715589c42SPeter Wemm
133815589c42SPeter Wemm	+ modified several prototypes to correspond with 1997 version of X/Open
133915589c42SPeter Wemm	  Curses:  [w]attr_get(), [w]attr_set(), border_set() have different
134015589c42SPeter Wemm	  parameters.  Some functions were renamed or misspelled:
134115589c42SPeter Wemm	  erase_wchar(), in_wchntr(), mvin_wchntr().  Some developers have used
134215589c42SPeter Wemm	  attr_get().
134315589c42SPeter Wemm
134415589c42SPeter Wemm	Added extensions:  keybound(), curses_version().
134515589c42SPeter Wemm
134615589c42SPeter Wemm	Terminfo database changes:
134715589c42SPeter Wemm
134815589c42SPeter Wemm	+ change translation for termcap 'rs' to terminfo 'rs2', which is
134915589c42SPeter Wemm	  the documented equivalent, rather than 'rs1'.
135015589c42SPeter Wemm
135115589c42SPeter Wemm	The problems are subtler in recent releases.
135215589c42SPeter Wemm
135315589c42SPeter Wemm	a) This release provides users with the ability to define their own
135415589c42SPeter Wemm	   terminal capability extensions, like termcap.  To accomplish this,
135515589c42SPeter Wemm	   we redesigned the TERMTYPE struct (in term.h).  Very few
135615589c42SPeter Wemm	   applications use this struct.  They must be recompiled to work with
135715589c42SPeter Wemm	   the 5.0 library.
135815589c42SPeter Wemm
135915589c42SPeter Wemm	a) If you use the extended terminfo names (i.e., you used configure
136015589c42SPeter Wemm	   --enable-tcap-names), the resulting terminfo database can have some
136115589c42SPeter Wemm	   entries which are not readable by older versions of ncurses.  This
136215589c42SPeter Wemm	   is a bug in the older versions:
136315589c42SPeter Wemm
136415589c42SPeter Wemm	   + the terminfo database stores booleans, numbers and strings in
136515589c42SPeter Wemm	     arrays.  The capabilities that are listed in the arrays are
136615589c42SPeter Wemm	     specified by X/Open.  ncurses recognizes a number of obsolete and
136715589c42SPeter Wemm	     extended names which are stored past the end of the specified
136815589c42SPeter Wemm	     entries.
136915589c42SPeter Wemm
137015589c42SPeter Wemm	   + a change to read_entry.c in 951001 made the library do an lseek()
137115589c42SPeter Wemm	     call incorrectly skipping data which is already read from the
137215589c42SPeter Wemm	     string array.  This happens when the number of strings in the
137315589c42SPeter Wemm	     terminfo data file is greater than STRCOUNT, the number of
137415589c42SPeter Wemm	     specified and obsolete or extended strings.
137515589c42SPeter Wemm
137615589c42SPeter Wemm	   + as part of alignment with the X/Open final specification, in the
137715589c42SPeter Wemm	     990109 patch we added two new terminfo capabilities:
137815589c42SPeter Wemm	     set_a_attributes and set_pglen_inch).  This makes the indices for
137915589c42SPeter Wemm	     the obsolete and extended capabilities shift up by 2.
138015589c42SPeter Wemm
138115589c42SPeter Wemm	   + the last two capabilities in the obsolete/extended list are memu
138215589c42SPeter Wemm	     and meml, which are found in most terminfo descriptions for xterm.
138315589c42SPeter Wemm
138415589c42SPeter Wemm	     When trying to read this terminfo entry, the spurious lseek()
138515589c42SPeter Wemm	     causes the library to attempt to read the final portion of the
138615589c42SPeter Wemm	     terminfo data (the text of the string capabilities) 4 characters
138715589c42SPeter Wemm	     past its starting point, and reads 4 characters too few.  The
138815589c42SPeter Wemm	     library rejects the data, and applications are unable to
138915589c42SPeter Wemm	     initialize that terminal type.
139015589c42SPeter Wemm
139115589c42SPeter Wemm	   FIX: remove memu and meml from the xterm description.  They are
139215589c42SPeter Wemm	   obsolete, not used by ncurses.  (It appears that the feature was
139315589c42SPeter Wemm	   added to xterm to make it more like hpterm).
139415589c42SPeter Wemm
139515589c42SPeter Wemm	   This is not a problem if you do not use the -x option of tic to
139615589c42SPeter Wemm	   create a terminfo database with extended names.  Note that the
139715589c42SPeter Wemm	   user-defined terminal capabilities are not affected by this bug,
139815589c42SPeter Wemm	   since they are stored in a table after the older terminfo data ends,
139915589c42SPeter Wemm	   and are invisible to the older libraries.
140015589c42SPeter Wemm
140115589c42SPeter Wemm	c) Some developers did not wish to use the C++ binding, and used the
140215589c42SPeter Wemm	   configure --without-cxx option.  This causes problems if someone
140315589c42SPeter Wemm	   uses the ncurses library from C++ because that configure test
140415589c42SPeter Wemm	   determines the type for C++'s bool and makes ncurses match it, since
140515589c42SPeter Wemm	   both C++ and curses are specified to declare bool.  Calling ncurses
140615589c42SPeter Wemm	   functions with the incorrect type for bool will cause execution
140715589c42SPeter Wemm	   errors.  In 5.0 we added a configure option "--without-cxx-binding"
140815589c42SPeter Wemm	   which controls whether the binding itself is built and installed.
140915589c42SPeter Wemm
141018259542SPeter Wemm    4.2 (March 2, 1998)
141115589c42SPeter Wemm	Interface changes:
141215589c42SPeter Wemm
141315589c42SPeter Wemm	+ correct prototype for termattrs() as per XPG4 version 2.
141415589c42SPeter Wemm
141515589c42SPeter Wemm	+ add placeholder prototypes for color_set(), erasewchar(),
141615589c42SPeter Wemm	  term_attrs(), wcolor_set() as per XPG4 version 2.
141715589c42SPeter Wemm
141815589c42SPeter Wemm	+ add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in
141915589c42SPeter Wemm	  SVr4 headers.
142015589c42SPeter Wemm
142115589c42SPeter Wemm	New extensions: keyok() and define_key().
142215589c42SPeter Wemm
142315589c42SPeter Wemm	Terminfo database changes:
142415589c42SPeter Wemm
142515589c42SPeter Wemm	+ corrected definition in curses.h for ACS_LANTERN, which was 'I'
142615589c42SPeter Wemm	  rather than 'i'.
142715589c42SPeter Wemm
142815589c42SPeter Wemm    4.1 (May 15, 1997)
142915589c42SPeter Wemm
143015589c42SPeter Wemm	We added these extensions:  use_default_colors().  Also added
143115589c42SPeter Wemm	configure option --enable-const, to support the use of const where
143215589c42SPeter Wemm	X/Open should have, but did not, specify.
143315589c42SPeter Wemm
143415589c42SPeter Wemm	The terminfo database content changed the representation of color for
143515589c42SPeter Wemm	most entries that use ANSI colors.  SVr4 curses treats the setaf/setab
143615589c42SPeter Wemm	and setf/setb capabilities differently, interchanging the red/blue
143715589c42SPeter Wemm	colors in the latter.
143815589c42SPeter Wemm
143915589c42SPeter Wemm    4.0 (December 24, 1996)
144015589c42SPeter Wemm
144115589c42SPeter Wemm	We bumped to version 4.0 because the newly released dynamic loader
144215589c42SPeter Wemm	(ld.so.1.8.5) on Linux did not load shared libraries whose ABI and REL
144315589c42SPeter Wemm	versions were inconsistent.  At that point, ncurses ABI was 3.4 and the
144415589c42SPeter Wemm	REL was 1.9.9g, so we made them consistent.
144515589c42SPeter Wemm
144615589c42SPeter Wemm    1.9.9g (December 1, 1996)
144715589c42SPeter Wemm
144815589c42SPeter Wemm	This fixed most of the problems with 1.9.9e, and made these interface
144915589c42SPeter Wemm	changes:
145015589c42SPeter Wemm
145115589c42SPeter Wemm	+ remove tparam(), which had been provided for compatibility with
145215589c42SPeter Wemm	  some termcap.  tparm() is standard, and does not conflict with
145315589c42SPeter Wemm	  application's fallback for missing tparam().
145415589c42SPeter Wemm
145515589c42SPeter Wemm	+ turn off hardware echo in initscr().  This changes the sense of the
145615589c42SPeter Wemm	  echo() function, which was initialized to echoing rather than
145715589c42SPeter Wemm	  nonechoing (the latter is specified).  There were several other
145815589c42SPeter Wemm	  corrections to the terminal I/O settings which cause applications to
145915589c42SPeter Wemm	  behave differently.
146015589c42SPeter Wemm
146115589c42SPeter Wemm	+ implemented several functions (such as attr_on()) which were
146215589c42SPeter Wemm	  available only as macros.
146315589c42SPeter Wemm
146415589c42SPeter Wemm	+ corrected several typos in curses.h.in (i.e., the mvXXXX macros).
146515589c42SPeter Wemm
146615589c42SPeter Wemm	+ corrected prototypes for delay_output(),
146715589c42SPeter Wemm	  has_color, immedok() and idcok().
146815589c42SPeter Wemm
146915589c42SPeter Wemm	+ corrected misspelled getbkgd().  Some applications used the
147015589c42SPeter Wemm	  misspelled name.
147115589c42SPeter Wemm
147215589c42SPeter Wemm	+ added _yoffset to WINDOW.  The size of WINDOW does not impact
147315589c42SPeter Wemm	  applications, since they use only pointers to WINDOW structs.
147415589c42SPeter Wemm
147515589c42SPeter Wemm	These changes were made to the terminfo database:
147615589c42SPeter Wemm
147715589c42SPeter Wemm	+ removed boolean 'getm' which was available as an extended name.
147815589c42SPeter Wemm
147915589c42SPeter Wemm	We added these extensions: wresize(), resizeterm(), has_key() and
148015589c42SPeter Wemm	mcprint().
148115589c42SPeter Wemm
148215589c42SPeter Wemm    1.9.9e (March 24, 1996)
148315589c42SPeter Wemm
148415589c42SPeter Wemm	not recommended (a last-minute/untested change left the forms and
148515589c42SPeter Wemm	menus libraries unusable since they do not repaint the screen).
148615589c42SPeter Wemm	Foreground/background colors are combined incorrectly, working properly
148715589c42SPeter Wemm	only on a black background.  When this was released, the X/Open
148815589c42SPeter Wemm	specification was available only in draft form.
148915589c42SPeter Wemm
149015589c42SPeter Wemm	Some applications (such as lxdialog) were "fixed" to work with the
149115589c42SPeter Wemm	incorrect color scheme.
149215589c42SPeter Wemm
149315589c42SPeter Wemm
14940e3d5408SPeter WemmIF YOU ARE A SYSTEM INTEGRATOR:
149515589c42SPeter Wemm------------------------------
14960e3d5408SPeter Wemm
14970e3d5408SPeter Wemm    Configuration and Installation:
14980e3d5408SPeter Wemm
14994a1a9510SRong-En Fan    	On platforms where ncurses is assumed to be installed in /usr/lib,
15004a1a9510SRong-En Fan	the configure script uses "/usr" as a default:
15010e3d5408SPeter Wemm
15024a1a9510SRong-En Fan		Linux, FreeBSD, NetBSD, OpenBSD, Cygwin
15034a1a9510SRong-En Fan
15044a1a9510SRong-En Fan	For other platforms, the default is "/usr/local".  See the discussion
15054a1a9510SRong-En Fan	of the "--disable-overwrite" option.
15064a1a9510SRong-En Fan
15074a1a9510SRong-En Fan	The location of the terminfo is set indirectly by the "--datadir"
15084a1a9510SRong-En Fan	configure option, e.g., /usr/share/terminfo, given a datadir of
15094a1a9510SRong-En Fan	/usr/share.  You may want to override this if you are installing
15104a1a9510SRong-En Fan	ncurses libraries in nonstandard locations, but wish to share the
15114a1a9510SRong-En Fan	terminfo database.
15124a1a9510SRong-En Fan
15134a1a9510SRong-En Fan	Normally the ncurses library is configured in a pure-terminfo mode;
15144a1a9510SRong-En Fan	that is, with the --disable-termcap option.  This makes the ncurses
15150e3d5408SPeter Wemm	library smaller and faster.  The ncurses library includes a termcap
15164a1a9510SRong-En Fan	emulation that queries the terminfo database, so even applications that
15174a1a9510SRong-En Fan	use raw termcap to query terminal characteristics will win (providing
15184a1a9510SRong-En Fan	you recompile and relink them!).
15190e3d5408SPeter Wemm
15204a1a9510SRong-En Fan	If you must configure with termcap fallback enabled, you may also wish
15214a1a9510SRong-En Fan	to use the --enable-getcap option.  This speeds up termcap-based
15224a1a9510SRong-En Fan	startups, at the expense of not allowing personal termcap entries to
15234a1a9510SRong-En Fan	reference the terminfo tree.  See comments in
15244a1a9510SRong-En Fan	ncurses/tinfo/read_termcap.c for further details.
15250e3d5408SPeter Wemm
15260e3d5408SPeter Wemm	Note that if you have $TERMCAP set, ncurses will use that value
15270e3d5408SPeter Wemm	to locate termcap data.  In particular, running from xterm will
15280e3d5408SPeter Wemm	set $TERMCAP to the contents of the xterm's termcap entry.
15290e3d5408SPeter Wemm	If ncurses sees that, it will not examine /etc/termcap.
15300e3d5408SPeter Wemm
15310e3d5408SPeter Wemm    Keyboard Mapping:
15320e3d5408SPeter Wemm
15330e3d5408SPeter Wemm	The terminfo file assumes that Shift-Tab generates \E[Z (the ECMA-48
15340e3d5408SPeter Wemm	reverse-tabulation sequence) rather than ^I.  Here are the loadkeys -d
15350e3d5408SPeter Wemm	mappings that will set this up:
15360e3d5408SPeter Wemm
15370e3d5408SPeter Wemm		keycode	 15 = Tab	      Tab
15380e3d5408SPeter Wemm			alt     keycode  15 = Meta_Tab
15390e3d5408SPeter Wemm			shift	keycode  15 = F26
15400e3d5408SPeter Wemm		string F26 ="\033[Z"
15410e3d5408SPeter Wemm
15420e3d5408SPeter Wemm    Naming the Console Terminal
15430e3d5408SPeter Wemm
15444a1a9510SRong-En Fan	In various systems there has been a practice of designating the system
15454a1a9510SRong-En Fan	console driver type as `console'.  Please do not do this!  It
15464a1a9510SRong-En Fan	complicates peoples' lives, because it can mean that several different
15474a1a9510SRong-En Fan	terminfo entries from different operating systems all logically want to
15484a1a9510SRong-En Fan	be called `console'.
15490e3d5408SPeter Wemm
15500e3d5408SPeter Wemm	Please pick a name unique to your console driver and set that up
15510e3d5408SPeter Wemm	in the /etc/inittab table or local equivalent.  Send the entry to the
15520e3d5408SPeter Wemm	terminfo maintainer (listed in the misc/terminfo file) to be included
15530e3d5408SPeter Wemm	in the terminfo file, if it's not already there.  See the
15540e3d5408SPeter Wemm	term(7) manual page included with this distribution for more on
15550e3d5408SPeter Wemm	conventions for choosing type names.
15560e3d5408SPeter Wemm
15570e3d5408SPeter Wemm	Here are some recommended primary console names:
15580e3d5408SPeter Wemm
15590e3d5408SPeter Wemm		linux	-- Linux console driver
15600e3d5408SPeter Wemm		freebsd	-- FreeBSD
15610e3d5408SPeter Wemm		netbsd	-- NetBSD
15620e3d5408SPeter Wemm		bsdos	-- BSD/OS
15630e3d5408SPeter Wemm
15640e3d5408SPeter Wemm	If you are responsible for integrating ncurses for one of these
15650e3d5408SPeter Wemm	distribution, please either use the recommended name or get back
15660e3d5408SPeter Wemm	to us explaining why you don't want to, so we can work out nomenclature
15670e3d5408SPeter Wemm	that will make users' lives easier rather than harder.
15680e3d5408SPeter Wemm
156915589c42SPeter Wemm
157015589c42SPeter WemmRECENT XTERM VERSIONS:
157115589c42SPeter Wemm---------------------
157215589c42SPeter Wemm
15730e3d5408SPeter Wemm	The terminfo database file included with this distribution assumes you
15744a1a9510SRong-En Fan	are running a modern xterm based on XFree86 (i.e., xterm-new).  The
15754a1a9510SRong-En Fan	earlier X11R6 entry (xterm-r6) and X11R5 entry (xterm-r5) is provided
15764a1a9510SRong-En Fan	as well.  See the --without-xterm-new configure script option if you
15774a1a9510SRong-En Fan	are unable to update your system.
15780e3d5408SPeter Wemm
157915589c42SPeter Wemm
158015589c42SPeter WemmCONFIGURING FALLBACK ENTRIES:
158115589c42SPeter Wemm----------------------------
158215589c42SPeter Wemm
15830e3d5408SPeter Wemm	In order to support operation of ncurses programs before the terminfo
15840e3d5408SPeter Wemm	tree is accessible (that is, in single-user mode or at OS installation
15850e3d5408SPeter Wemm	time) the ncurses library can be compiled to include an array of
15864a1a9510SRong-En Fan	pre-fetched fallback entries.  This must be done on a machine which
15874a1a9510SRong-En Fan	has ncurses' infocmp and terminfo database installed.
15880e3d5408SPeter Wemm
15890e3d5408SPeter Wemm	These entries are checked by setupterm() only when the conventional
15900e3d5408SPeter Wemm	fetches from the terminfo tree and the termcap fallback (if configured)
15910e3d5408SPeter Wemm	have been tried and failed.  Thus, the presence of a fallback will not
15920e3d5408SPeter Wemm	shadow modifications to the on-disk entry for the same type, when that
15930e3d5408SPeter Wemm	entry is accessible.
15940e3d5408SPeter Wemm
15954a1a9510SRong-En Fan	By default, there are no entries on the fallback list.  After you have
15964a1a9510SRong-En Fan	built the ncurses suite for the first time, you can change the list
15974a1a9510SRong-En Fan	(the process needs infocmp(1)).  To do so, use the script
15984a1a9510SRong-En Fan	ncurses/tinfo/MKfallback.sh.  A configure script option
15994a1a9510SRong-En Fan	--with-fallbacks does this (it accepts a comma-separated list of the
16004a1a9510SRong-En Fan	names you wish, and does not require a rebuild).
16010e3d5408SPeter Wemm
16020e3d5408SPeter Wemm	If you wanted (say) to have linux, vt100, and xterm fallbacks, you
16030e3d5408SPeter Wemm	would use the commands
16040e3d5408SPeter Wemm
16050e3d5408SPeter Wemm		cd ncurses;
16064a1a9510SRong-En Fan		tinfo/MKfallback.sh linux vt100 xterm >fallback.c
16070e3d5408SPeter Wemm
16080e3d5408SPeter Wemm	Then just rebuild and reinstall the library as you would normally.
16090e3d5408SPeter Wemm	You can restore the default empty fallback list with
16100e3d5408SPeter Wemm
16114a1a9510SRong-En Fan		tinfo/MKfallback.sh >fallback.c
16120e3d5408SPeter Wemm
16130e3d5408SPeter Wemm	The overhead for an empty fallback list is one trivial stub function.
16140e3d5408SPeter Wemm	Any non-empty fallback list is const-ed and therefore lives in sharable
16150e3d5408SPeter Wemm	text space.  You can look at the comment trailing each initializer in
16160e3d5408SPeter Wemm	the generated ncurses/fallback.c file to see the core cost of the
16170e3d5408SPeter Wemm	fallbacks.  A good rule of thumb for modern vt100-like entries is that
16180e3d5408SPeter Wemm	each one will cost about 2.5K of text space.
16190e3d5408SPeter Wemm
162015589c42SPeter Wemm
16210e3d5408SPeter WemmBSD CONVERSION NOTES:
162215589c42SPeter Wemm--------------------
162315589c42SPeter Wemm
16240e3d5408SPeter Wemm	If you need to support really ancient BSD programs, you probably
16250e3d5408SPeter Wemm	want to configure with the --enable-bsdpad option.  What this does
16260e3d5408SPeter Wemm	is enable code in tputs() that recognizes a numeric prefix on a
16270e3d5408SPeter Wemm	capability as a request for that much trailing padding in milliseconds.
16280e3d5408SPeter Wemm	There are old BSD programs that do things like tputs("50").
16290e3d5408SPeter Wemm
16300e3d5408SPeter Wemm	(If you are distributing ncurses as a support-library component of
16310e3d5408SPeter Wemm	an application you probably want to put the remainder of this section
16320e3d5408SPeter Wemm	in the package README file.)
16330e3d5408SPeter Wemm
16340e3d5408SPeter Wemm	The following note applies only if you have configured ncurses with
16350e3d5408SPeter Wemm	--enable-termcap.
16360e3d5408SPeter Wemm
16370e3d5408SPeter Wemm------------------------------- CUT HERE --------------------------------
16380e3d5408SPeter Wemm
16390e3d5408SPeter WemmIf you are installing this application privately (either because you
16400e3d5408SPeter Wemmhave no root access or want to experiment with it before doing a root
16410e3d5408SPeter Wemminstallation), there are a couple of details you need to be aware of.
16420e3d5408SPeter WemmThey have to do with the ncurses library, which uses terminfo rather
16430e3d5408SPeter Wemmthan termcap for describing terminal characteristics.
16440e3d5408SPeter Wemm
16450e3d5408SPeter WemmThough the ncurses library is terminfo-based, it will interpret your
16460e3d5408SPeter WemmTERMCAP variable (if present), any local termcap files you reference
16470e3d5408SPeter Wemmthrough it, and the system termcap file.  However, in order to avoid
16480e3d5408SPeter Wemmslowing down your application startup, it will only do this once per
16490e3d5408SPeter Wemmterminal type!
16500e3d5408SPeter Wemm
16510e3d5408SPeter WemmThe first time you load a given terminal type from your termcap
16520e3d5408SPeter Wemmdatabase, the library initialization code will automatically write it
16530e3d5408SPeter Wemmin terminfo format to a subdirectory under $HOME/.terminfo.  After
16540e3d5408SPeter Wemmthat, the initialization code will find it there and do a (much
16550e3d5408SPeter Wemmfaster) terminfo fetch.
16560e3d5408SPeter Wemm
16570e3d5408SPeter WemmUsually, all this means is that your home directory will silently grow
16580e3d5408SPeter Wemman invisible .terminfo subdirectory which will get filled in with
16590e3d5408SPeter Wemmterminfo descriptions of terminal types as you invoke them.  If anyone
16600e3d5408SPeter Wemmever installs a global terminfo tree on your system, this will quietly
16610e3d5408SPeter Wemmstop happening and your $HOME/.terminfo will become redundant.
16620e3d5408SPeter Wemm
16630e3d5408SPeter WemmThe objective of all this logic is to make converting from BSD termcap
16640e3d5408SPeter Wemmas painless as possible without slowing down your application (termcap
16650e3d5408SPeter Wemmcompilation is expensive).
16660e3d5408SPeter Wemm
16670e3d5408SPeter WemmIf you don't have a TERMCAP variable or custom personal termcap file,
16680e3d5408SPeter Wemmyou can skip the rest of this dissertation.
16690e3d5408SPeter Wemm
16700e3d5408SPeter WemmIf you *do* have a TERMCAP variable and/or a custom personal termcap file
16710e3d5408SPeter Wemmthat defines a terminal type, that definition will stop being visible
16720e3d5408SPeter Wemmto this application after the first time you run it, because it will
16730e3d5408SPeter Wemminstead see the terminfo entry that it wrote to $HOME/terminfo the
16740e3d5408SPeter Wemmfirst time around.
16750e3d5408SPeter Wemm
16760e3d5408SPeter WemmSubsequently, editing the TERMCAP variable or personal TERMCAP file
16770e3d5408SPeter Wemmwill have no effect unless you explicitly remove the terminfo entry
16780e3d5408SPeter Wemmunder $HOME/terminfo.  If you do that, the entry will be recompiled
16790e3d5408SPeter Wemmfrom your termcap resources the next time it is invoked.
16800e3d5408SPeter Wemm
16810e3d5408SPeter WemmTo avoid these complications, use infocmp(1) and tic(1) to edit the
16820e3d5408SPeter Wemmterminfo directory directly.
16830e3d5408SPeter Wemm
16840e3d5408SPeter Wemm------------------------------- CUT HERE --------------------------------
16850e3d5408SPeter Wemm
16860e3d5408SPeter WemmUSING NCURSES WITH AFS:
16870e3d5408SPeter Wemm	AFS treats each directory as a separate logical filesystem, you
16880e3d5408SPeter Wemm	can't hard-link across them.  The --enable-symlinks option copes
16890e3d5408SPeter Wemm	with this by making tic use symbolic links.
16900e3d5408SPeter Wemm
16910e3d5408SPeter WemmUSING NCURSES WITH GPM:
16924a1a9510SRong-En Fan	Ncurses 4.1 and up can be configured to use GPM (General Purpose
16934a1a9510SRong-En Fan	Mouse) which is used on Linux console.  Be aware that GPM is commonly
16940e3d5408SPeter Wemm	installed as a shared library which contains a wrapper for the curses
16950e3d5408SPeter Wemm	wgetch() function (libcurses.o).  Some integrators have simplified
16964a1a9510SRong-En Fan	linking applications by combining all or part of libcurses.so into the
16974a1a9510SRong-En Fan	libgpm.so file, producing symbol conflicts with ncurses (specifically
16984a1a9510SRong-En Fan	the wgetch function).  This was originally the BSD curses, but
16994a1a9510SRong-En Fan	generally whatever curses library exists on the system.
17004a1a9510SRong-En Fan
17014a1a9510SRong-En Fan	You may be able to work around this problem by linking as follows:
17020e3d5408SPeter Wemm
17030e3d5408SPeter Wemm		cc -o foo foo.o -lncurses -lgpm -lncurses
17040e3d5408SPeter Wemm
17050e3d5408SPeter Wemm	but the linker may not cooperate, producing mysterious errors.
17064a1a9510SRong-En Fan	See the FAQ, as well as the discussion under the --with-gpm option:
17070e3d5408SPeter Wemm
17084a1a9510SRong-En Fan	http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
17090e3d5408SPeter Wemm
171018259542SPeter WemmBUILDING NCURSES WITH A CROSS-COMPILER
171118259542SPeter Wemm	Ncurses can be built with a cross-compiler.  Some parts must be built
171218259542SPeter Wemm	with the host's compiler since they are used for building programs
171318259542SPeter Wemm	(e.g., ncurses/make_hash and ncurses/make_keys) that generate tables
17144a1a9510SRong-En Fan	that are compiled into the ncurses library.  The essential thing to do
17154a1a9510SRong-En Fan	is set the BUILD_CC environment variable to your host's compiler, and
17164a1a9510SRong-En Fan	run the configure script configuring for the cross-compiler.
17174a1a9510SRong-En Fan
17184a1a9510SRong-En Fan	The configure options --with-build-cc, etc., are provided to make this
17194a1a9510SRong-En Fan	simpler.  Since make_hash and make_keys use only ANSI C features, it
17204a1a9510SRong-En Fan	is normally not necessary to provide the other options such as
17214a1a9510SRong-En Fan	--with-build-libs, but they are provided for completeness.
17220e3d5408SPeter Wemm
172318259542SPeter Wemm	Note that all of the generated source-files which are part of ncurses
172418259542SPeter Wemm	will be made if you use
17250e3d5408SPeter Wemm
172618259542SPeter Wemm		make sources
172718259542SPeter Wemm
172818259542SPeter Wemm	This would be useful in porting to an environment which has little
172918259542SPeter Wemm	support for the tools used to generate the sources, e.g., sed, awk and
173018259542SPeter Wemm	Bourne-shell.
17310e3d5408SPeter Wemm
17324a1a9510SRong-En Fan	When ncurses has been successfully cross-compiled, you may want to use
17334a1a9510SRong-En Fan	"make install" (with a suitable target directory) to construct an
17344a1a9510SRong-En Fan	install tree.  Note that in this case (as with the --with-fallbacks
17354a1a9510SRong-En Fan	option), ncurses uses the development platform's tic to do the
17364a1a9510SRong-En Fan	"make install.data" portion.
17374a1a9510SRong-En Fan
17380e3d5408SPeter WemmBUGS:
17390e3d5408SPeter Wemm	Send any feedback to the ncurses mailing list at
17400e3d5408SPeter Wemm	bug-ncurses@gnu.org. To subscribe send mail to
17410e3d5408SPeter Wemm	bug-ncurses-request@gnu.org with body that reads:
17420e3d5408SPeter Wemm	subscribe ncurses <your-email-address-here>
17430e3d5408SPeter Wemm
174418259542SPeter Wemm	The Hacker's Guide in the doc directory includes some guidelines
17450e3d5408SPeter Wemm	on how to report bugs in ways that will get them fixed most quickly.
17464a1a9510SRong-En Fan
17474a1a9510SRong-En Fan-- vile:txtmode
1748