INSTALL revision 178866
1166124Srafan-------------------------------------------------------------------------------
2166124Srafan-- Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.               --
3166124Srafan--                                                                           --
4166124Srafan-- Permission is hereby granted, free of charge, to any person obtaining a   --
5166124Srafan-- copy of this software and associated documentation files (the             --
6166124Srafan-- "Software"), to deal in the Software without restriction, including       --
7166124Srafan-- without limitation the rights to use, copy, modify, merge, publish,       --
8166124Srafan-- distribute, distribute with modifications, sublicense, and/or sell copies --
9166124Srafan-- of the Software, and to permit persons to whom the Software is furnished  --
10166124Srafan-- to do so, subject to the following conditions:                            --
11166124Srafan--                                                                           --
12166124Srafan-- The above copyright notice and this permission notice shall be included   --
13166124Srafan-- in all copies or substantial portions of the Software.                    --
14166124Srafan--                                                                           --
15166124Srafan-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS   --
16166124Srafan-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF                --
17166124Srafan-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --
18166124Srafan-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,       --
19166124Srafan-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR     --
20166124Srafan-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --
21166124Srafan-- USE OR OTHER DEALINGS IN THE SOFTWARE.                                    --
22166124Srafan--                                                                           --
23166124Srafan-- Except as contained in this notice, the name(s) of the above copyright    --
24166124Srafan-- holders shall not be used in advertising or otherwise to promote the      --
25166124Srafan-- sale, use or other dealings in this Software without prior written        --
26166124Srafan-- authorization.                                                            --
27166124Srafan-------------------------------------------------------------------------------
28178866Srafan-- $Id: INSTALL,v 1.124 2008/03/29 18:07:32 tom Exp $
2950276Speter---------------------------------------------------------------------
3050276Speter             How to install Ncurses/Terminfo on your system
3150276Speter---------------------------------------------------------------------
3262449Speter
3350276Speter    ************************************************************
3450276Speter    * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
3550276Speter    ************************************************************
3650276Speter
3750276SpeterYou should be reading the file INSTALL in a directory called ncurses-d.d, where
3850276Speterd.d is the current version number.  There should be several subdirectories,
3950276Speterincluding `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs',
4050276Speterand `test'.  See the README file for a roadmap to the package.
4150276Speter
4250276SpeterIf you are a Linux or FreeBSD or NetBSD distribution integrator or packager,
4350276Speterplease read and act on the section titled IF YOU ARE A SYSTEM INTEGRATOR
4450276Speterbelow.
4550276Speter
4650276SpeterIf you are converting from BSD curses and do not have root access, be sure
4750276Speterto read the BSD CONVERSION NOTES section below.
4850276Speter
4950276SpeterIf you are trying to build applications using gpm with ncurses,
5050276Speterread the USING NCURSES WITH GPM section below.
5150276Speter
5250276SpeterIf you are running over the Andrew File System see the note below on
5350276SpeterUSING NCURSES WITH AFS.
5450276Speter
5566963SpeterIf you are cross-compiling, see the note below on BUILDING NCURSES WITH A
5666963SpeterCROSS-COMPILER.
5766963Speter
5850276SpeterIf you want to build the Ada95 binding, go to the Ada95 directory and
5950276Speterfollow the instructions there.  The Ada95 binding is not covered below.
6050276Speter
6150276SpeterIf you are using anything but (a) Linux, or (b) one of the 4.4BSD-based
6250276Speteri386 Unixes, go read the Portability section in the TO-DO file before you
6350276Speterdo anything else.
6450276Speter
6562449Speter
6650276SpeterREQUIREMENTS:
6762449Speter------------
6850276Speter
69166124SrafanYou will need the following to build and install ncurses under UNIX:
7050276Speter
71166124Srafan	* ANSI C compiler  (gcc, for instance)
7250276Speter	* sh               (bash will do)
7350276Speter	* awk              (mawk or gawk will do)
7450276Speter	* sed
7550276Speter	* BSD or System V style install (a script is enclosed)
7650276Speter
7750276SpeterNcurses has been also built in the OS/2 EMX environment.
7850276Speter
7962449Speter
8050276SpeterINSTALLATION PROCEDURE:
8162449Speter----------------------
8250276Speter
8350276Speter1.  First, decide whether you want ncurses to replace your existing library (in
8450276Speter    which case you'll need super-user privileges) or be installed in parallel
8550276Speter    with it.
8650276Speter
8750276Speter    The --prefix option to configure changes the root directory for installing
88166124Srafan    ncurses.  The default is normally in subdirectories of /usr/local, except
89166124Srafan    for systems where ncurses is normally installed as a system library, e.g.,
90166124Srafan    Linux, the various BSD systems and Cygwin.  Use --prefix=/usr to replace
91166124Srafan    your default curses distribution.
9250276Speter
9350276Speter    The package gets installed beneath the --prefix directory as follows:
9450276Speter
9550276Speter    In $(prefix)/bin:          tic, infocmp, captoinfo, tset,
9666963Speter				reset, clear, tput, toe
9750276Speter    In $(prefix)/lib:          libncurses*.* libcurses.a
9850276Speter    In $(prefix)/share/terminfo: compiled terminal descriptions
9950276Speter    In $(prefix)/include:      C header files
10050276Speter    Under $(prefix)/man:       the manual pages
10150276Speter
102166124Srafan    Note that the configure script attempts to locate previous installation of
103166124Srafan    ncurses, and will set the default prefix according to where it finds the
104166124Srafan    ncurses headers.
10550276Speter
106166124Srafan    Do not use commands such as
107166124Srafan
108166124Srafan    	make install prefix=XXX
109166124Srafan
110166124Srafan    to change the prefix after configuration, since the prefix value is used
111166124Srafan    for some absolute pathnames such as TERMINFO.  Instead do this
112166124Srafan
113166124Srafan    	make install DESTDIR=XXX
114166124Srafan
115166124Srafan    See also the discussion of --with-install-prefix.
116166124Srafan
11750276Speter2.  Type `./configure' in the top-level directory of the distribution to
11850276Speter    configure ncurses for your operating system and create the Makefiles.
11950276Speter    Besides --prefix, various configuration options are available to customize
12050276Speter    the installation; use `./configure --help' to list the available options.
12150276Speter
12250276Speter    If your operating system is not supported, read the PORTABILITY section in
12350276Speter    the file ncurses/README for information on how to create a configuration
12450276Speter    file for your system.
12550276Speter
12650276Speter    The `configure' script generates makefile rules for one or more object
12750276Speter    models and their associated libraries:
12850276Speter
12950276Speter	libncurses.a (normal)
13050276Speter
13150276Speter	libcurses.a (normal, a link to libncurses.a)
13250276Speter		This gets left out if you configure with --disable-overwrite.
13350276Speter
13450276Speter	libncurses.so (shared)
13550276Speter
13650276Speter	libncurses_g.a (debug)
13750276Speter
13850276Speter	libncurses_p.a (profile)
13950276Speter
14076726Speter	libncurses.la (libtool)
14176726Speter
142166124Srafan    If you configure using the --enable-widec option, a "w" is appended to the
143166124Srafan    library names (e.g., libncursesw.a), and the resulting libraries support
144166124Srafan    wide-characters, e.g., via a UTF-8 locale.  The corresponding header files
145166124Srafan    are compatible with the non-wide-character configuration; wide-character
146166124Srafan    features are provided by ifdef's in the header files.  The wide-character
147166124Srafan    library interfaces are not binary-compatible with the non-wide-character
148166124Srafan    version.  Building and running the wide-character code relies on a fairly
149166124Srafan    recent implementation of libiconv.  We have built this configuration on
150166124Srafan    Linux using libiconv, sometimes requiring libutf8.
151166124Srafan
152178866Srafan    If you configure using the --with-pthread option, a "t" is appended to
153178866Srafan    the library names (e.g., libncursest.a, libncursestw.a).
154178866Srafan
15550276Speter    If you do not specify any models, the normal and debug libraries will be
15650276Speter    configured.  Typing `configure' with no arguments is equivalent to:
15750276Speter
15866963Speter	./configure --with-normal --with-debug --enable-overwrite
15950276Speter
16050276Speter    Typing
16150276Speter
16266963Speter	./configure --with-shared
16350276Speter
16450276Speter    makes the shared libraries the default, resulting in
16550276Speter
16666963Speter	./configure --with-shared --with-normal --with-debug --enable-overwrite
16750276Speter
16850276Speter    If you want only shared libraries, type
16950276Speter
17066963Speter	./configure --with-shared --without-normal --without-debug
17150276Speter
17250276Speter    Rules for generating shared libraries are highly dependent upon the choice
17350276Speter    of host system and compiler.  We've been testing shared libraries on Linux
17450276Speter    and SunOS with gcc, but more work needs to be done to make shared libraries
17550276Speter    work on other systems.
17650276Speter
17776726Speter    If you have libtool installed, you can type
17876726Speter
17976726Speter	./configure --with-libtool
18076726Speter
18176726Speter    to generate the appropriate static and/or shared libraries for your
18276726Speter    platform using libtool.
18376726Speter
18450276Speter    You can make curses and terminfo fall back to an existing file of termcap
18550276Speter    definitions by configuring with --enable-termcap.  If you do this, the
18650276Speter    library will search /etc/termcap before the terminfo database, and will
18750276Speter    also interpret the contents of the TERM environment variable.  See the
18850276Speter    section BSD CONVERSION NOTES below.
18950276Speter
19050276Speter3.  Type `make'.  Ignore any warnings, no error messages should be produced.
19150276Speter    This should compile the ncurses library, the terminfo compiler tic(1),
19250276Speter    captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1)
19366963Speter    programs (see the manual pages for explanation of what they do), some test
19450276Speter    programs, and the panels, menus, and forms libraries.
19550276Speter
19650276Speter4.  Run ncurses and several other test programs in the test directory to
19750276Speter    verify that ncurses functions correctly before doing an install that
19850276Speter    may overwrite system files.  Read the file test/README for details on
19950276Speter    the test programs.
20062449Speter
20150276Speter    NOTE: You must have installed the terminfo database, or set the
20250276Speter    environment variable $TERMINFO to point to a SVr4-compatible terminfo
20350276Speter    database before running the test programs.  Not all vendors' terminfo
20450276Speter    databases are SVr4-compatible, but most seem to be.  Exceptions include
20550276Speter    DEC's Digital Unix (formerly known as OSF/1).
20650276Speter
207166124Srafan    If you run the test programs WITHOUT installing terminfo, ncurses may
208166124Srafan    read the termcap file and cache that in $HOME/.terminfo, which will
209166124Srafan    thereafter be used instead of the terminfo database.  See the comments
210166124Srafan    on "--enable-getcap-cache", to see why this is a Bad Thing.
211166124Srafan
212166124Srafan    It is possible to configure ncurses to use other terminfo database formats.
213166124Srafan    A few are provided as examples in the include-directory (see --with-caps).
214166124Srafan
21550276Speter    The ncurses program is designed specifically to test the ncurses library.
21650276Speter    You can use it to verify that the screen highlights work correctly, that
21750276Speter    cursor addressing and window scrolling works OK, etc.
21850276Speter
21950276Speter5.  Once you've tested, you can type `make install' to install libraries,
22066963Speter    the programs, the terminfo database and the manual pages.  Alternately, you
22150276Speter    can type `make install' in each directory you want to install.  In the
22250276Speter    top-level directory, you can do a partial install using these commands:
22350276Speter
22450276Speter	'make install.progs'    installs tic, infocmp, etc...
22566963Speter	'make install.includes' installs the headers.
22666963Speter	'make install.libs'     installs the libraries (and the headers).
22766963Speter	'make install.data'     installs the terminfo data. (Note: `tic' must
22866963Speter				be installed before the terminfo data can be
22966963Speter				compiled).
23066963Speter	'make install.man'      installs the manual pages.
23150276Speter
23250276Speter  ############################################################################
23350276Speter  #     CAVEAT EMPTOR: `install.data' run as root will NUKE any existing     #
23450276Speter  #  terminfo database. If you have any custom or unusual entries SAVE them  #
23550276Speter  #  before you install ncurses.  I have a file called terminfo.custom for   #
23650276Speter  #  this purpose.  Don't forget to run tic on the file once you're done.    #
23750276Speter  ############################################################################
23850276Speter
23966963Speter    The terminfo(5) manual page must be preprocessed with tbl(1) before
24050276Speter    being formatted by nroff(1).  Modern man(1) implementations tend to do
24166963Speter    this by default, but you may want to look at your version's manual page
24276726Speter    to be sure.  You may also install the manual pages after preprocessing
24376726Speter    with tbl(1) by specifying the configure option --with-manpage-tbl.
24450276Speter
24550276Speter    If the system already has a curses library that you need to keep using
246166124Srafan    you'll need to distinguish between it and ncurses.  See the discussion of
247166124Srafan    --disable-overwrite.  If ncurses is installed outside the standard
248166124Srafan    directories (/usr/include and /usr/lib) then all your users will need to
249166124Srafan    use the -I option to compile programs and -L to link them.
25050276Speter
251166124Srafan    If you have another curses installed in your system and you accidentally
25250276Speter    compile using its curses.h you'll end up with a large number of
253166124Srafan    undefined symbols at link time.
25450276Speter
25550276Speter    IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory
25650276Speter    and run the `capconvert' script.  This script will deduce various things
25750276Speter    about your environment and use them to build you a private terminfo tree,
25850276Speter    so you can use ncurses applications.
25950276Speter
26050276Speter    If more than one user at your site does this, the space for the duplicate
26150276Speter    trees is wasted.  Try to get your site administrators to install a system-
26250276Speter    wide terminfo tree instead.
26350276Speter
26450276Speter    See the BSD CONVERSION NOTES section below for a few more details.
26550276Speter
26650276Speter6.  The c++ directory has C++ classes that are built on top of ncurses and
26756639Speter    panels.  You must have c++ (and its libraries) installed before you can
26850276Speter    compile and run the demo.
26950276Speter
27056639Speter    Use --without-cxx-binding to tell configure to not build the C++ bindings
27156639Speter    and demo.
27256639Speter
27350276Speter    If you do not have C++, you must use the --without-cxx option to tell
27456639Speter    the configure script to not attempt to determine the type of 'bool'
27556639Speter    which may be supported by C++.  IF YOU USE THIS OPTION, BE ADVISED THAT
27656639Speter    YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++.
27762449Speter
27850276Speter
27966963SpeterSUMMARY OF CONFIGURE OPTIONS:
28066963Speter----------------------------
28166963Speter
28266963Speter    The configure script provides a short list of its options when you type
28366963Speter
28466963Speter	./configure --help
28566963Speter
28666963Speter    The --help and several options are common to all configure scripts that are
28766963Speter    generated with autoconf.  Those are all listed before the line
28866963Speter
28966963Speter	--enable and --with options recognized:
29066963Speter
29166963Speter    The other options are specific to this package.  We list them in alphabetic
29266963Speter    order.
29366963Speter
29466963Speter    --disable-assumed-color
29566963Speter	With ncurses 5.1, we introduced a new function, assume_default_colors()
29666963Speter	which allows applications to specify what the default foreground and
29766963Speter	background color are assumed to be.  Most color applications use
29866963Speter	full-screen color; but a few do not color the background.  While the
29966963Speter	assumed values can be overridden by invoking assume_default_colors(),
30066963Speter	you may find it useful to set the assumed values to the pre-5.1
30166963Speter	convention, using this configure option.
30266963Speter
30366963Speter    --disable-big-core
30466963Speter	Assume machine has little memory.  The configure script attempts to
30566963Speter	determine if your machine has enough memory (about 6Mb) to compile the
30666963Speter	terminfo database without writing portions to disk.  Some allocators
30766963Speter	return deceptive results, so you may have to override the configure
30866963Speter	script.  Or you may be building tic for a smaller machine.
30966963Speter
310174993Srafan    --disable-big-strings
311174993Srafan	Disable compile-time optimization of predefined tables which puts
312174993Srafan	all of their strings into a very long string, to reduce relocation
313174993Srafan	overhead.
314174993Srafan
31566963Speter    --disable-database
31666963Speter	Use only built-in data.  The ncurses libraries normally read terminfo
31766963Speter	and termcap data from disk.  You can configure ncurses to have a
31866963Speter	built-in database, aka "fallback" entries.  Embedded applications may
31997049Speter	have no need for an external database.  Some, but not all of the
32097049Speter	programs are useful in this configuration, e.g., reset and tput versus
32197049Speter	infocmp and tic.
32266963Speter
32366963Speter    --disable-ext-funcs
32466963Speter	Disable function-extensions.  Configure ncurses without the functions
32566963Speter	that are not specified by XSI.  See ncurses/modules for the exact
32666963Speter	list of library modules that would be suppressed.
32766963Speter
32866963Speter    --disable-hashmap
32966963Speter	Compile without hashmap scrolling-optimization code.  This algorithm is
33066963Speter	the default.
33166963Speter
332166124Srafan    --disable-home-terminfo
333166124Srafan	The $HOME/.terminfo directory is normally added to ncurses' search
334166124Srafan	list for reading/writing terminfo entries, since that directory is
335166124Srafan	more likely writable than the system terminfo database.  Use this
336166124Srafan	option to disable the feature altogether.
337166124Srafan
338166124Srafan    --disable-largefile
339166124Srafan	Disable compiler flags needed to use large-file interfaces.
340166124Srafan
34166963Speter    --disable-leaks
34266963Speter	For testing, compile-in code that frees memory that normally would not
34366963Speter	be freed, to simplify analysis of memory-leaks.
34466963Speter
345174993Srafan	Any implementation of curses must not free the memory associated with
346174993Srafan	a screen, since (even after calling endwin()), it must be available
347174993Srafan	for use in the next call to refresh().  There are also chunks of
348174993Srafan	memory held for performance reasons.  That makes it hard to analyze
349174993Srafan	curses applications for memory leaks.  To work around this, build
350174993Srafan	a debugging version of the ncurses library which frees those chunks
351174993Srafan	which it can, and provides the _nc_free_and_exit() function to free
352174993Srafan	the remainder on exit.  The ncurses utility and test programs use this
353174993Srafan	feature, e.g., via the ExitProgram() macro.
354174993Srafan
355166124Srafan    --disable-lp64
356166124Srafan	The header files will ignore use of the _LP64 symbol to make chtype
357166124Srafan	and mmask_t types 32 bits (they may be long on 64-bit hosts, for
358166124Srafan	compatibility with older releases).
359166124Srafan
360166124Srafan	NOTE: this is potentially an ABI change, depending on existing
361166124Srafan	packages.  The default for this option is "disabled" for ncurses
362166124Srafan	ABI 5, and "enabled" for ABI 6.
363166124Srafan
36466963Speter    --disable-macros
36566963Speter	For testing, use functions rather than macros.  The program will run
366166124Srafan	more slowly, but it is simpler to debug.  This defines NCURSES_NOMACROS
367166124Srafan	at build time.  See also the --enable-expanded option.
36866963Speter
36966963Speter    --disable-overwrite
37066963Speter	If you are installing ncurses on a system which contains another
37166963Speter	development version of curses, or which could be confused by the loader
37266963Speter	for another version, we recommend that you leave out the link to
37366963Speter	-lcurses.  The ncurses library is always available as -lncurses.
37466963Speter	Disabling overwrite also causes the ncurses header files to be
37566963Speter	installed into a subdirectory, e.g., /usr/local/include/ncurses,
37666963Speter	rather than the include directory.  This makes it simpler to avoid
37766963Speter	compile-time conflicts with other versions of curses.h
37866963Speter
379174993Srafan    --disable-relink
380174993Srafan	If --enable-rpath is given, the generated makefiles normally will
381174993Srafan	rebuild the libraries during install.  Use this option to simply
382174993Srafan	copy whatever the linked produced.
383174993Srafan
384174993Srafan	This option is ignored if --enable-rpath is not given.
385174993Srafan
38666963Speter    --disable-root-environ
38766963Speter	Compile with environment restriction, so certain environment variables
38866963Speter	are not available when running as root, or via a setuid/setgid
38966963Speter	application.  These are (for example $TERMINFO) those that allow the
39066963Speter	search path for the terminfo or termcap entry to be customized.
39166963Speter
39266963Speter    --disable-scroll-hints
39366963Speter	Compile without scroll-hints code.  This option is ignored when
39466963Speter	hashmap scrolling is configured, which is the default.
39566963Speter
396166124Srafan    --disable-tparm-varargs
397166124Srafan	Portable programs should call tparm() using the fixed-length parameter
398166124Srafan	list documented in X/Open.  ncurses provides varargs support for this
399166124Srafan	function.  Use --disable-tparm-varargs to disable this support.
40066963Speter
40166963Speter    --enable-assertions
40266963Speter	For testing, compile-in assertion code.  This is used only for a few
40366963Speter	places where ncurses cannot easily recover by returning an error code.
40466963Speter
40566963Speter    --enable-broken_linker
40666963Speter	A few platforms have what we consider a broken linker:  it cannot link
40766963Speter	objects from an archive solely by referring to data objects in those
40866963Speter	files, but requires a function reference.  This configure option
40966963Speter	changes several data references to functions to work around this
41066963Speter	problem.
41166963Speter
41266963Speter	NOTE:  With ncurses 5.1, this may not be necessary, since we are
41366963Speter	told that some linkers interpret uninitialized global data as a
41466963Speter	different type of reference which behaves as described above.  We have
41566963Speter	explicitly initialized all of the global data to work around the
41666963Speter	problem.
41766963Speter
41866963Speter    --enable-bsdpad
41966963Speter	Recognize BSD-style prefix padding.  Some ancient BSD programs (such as
42066963Speter	nethack) call tputs("50") to implement delays.
42166963Speter
42266963Speter    --enable-colorfgbg
42366963Speter	Compile with experimental $COLORFGBG code.  That environment variable
42466963Speter	is set by some terminal emulators as a hint to applications, by
42566963Speter	advertising the default foreground and background colors.  During
42666963Speter	initialization, ncurses sets color pair 0 to match this.
42766963Speter
42866963Speter    --enable-const
42966963Speter	The curses interface as documented in XSI is rather old, in fact
43066963Speter	including features that precede ANSI C.  The prototypes generally do
43166963Speter	not make effective use of "const".  When using stricter compilers (or
43266963Speter	gcc with appropriate warnings), you may see warnings about the mismatch
43366963Speter	between const and non-const data.  We provide a configure option which
43466963Speter	changes the interfaces to use const - quieting these warnings and
43566963Speter	reflecting the actual use of the parameters more closely.  The ncurses
43666963Speter	library uses the symbol NCURSES_CONST for these instances of const,
43766963Speter	and if you have asked for compiler warnings, will add gcc's const-qual
43866963Speter	warning.  There will still be warnings due to subtle inconsistencies
43966963Speter	in the interface, but at a lower level.
44066963Speter
44166963Speter	NOTE:  configuring ncurses with this option may detract from the
44266963Speter	portability of your applications by encouraging you to use const in
44366963Speter	places where the XSI curses interface would not allow them.  Similar
44466963Speter	issues arise when porting to SVr4 curses, which uses const in even
44566963Speter	fewer places.
44666963Speter
44766963Speter    --enable-echo
44866963Speter	Use the option --disable-echo to make the build-log less verbose by
44966963Speter	suppressing the display of the compile and link commands.  This makes
45066963Speter	it easier to see the compiler warnings.  (You can always use "make -n"
45166963Speter	to see the options that are used).
45266963Speter
45366963Speter    --enable-expanded
45466963Speter	For testing, generate functions for certain macros to make them visible
45566963Speter	as such to the debugger.  See also the --disable-macros option.
45666963Speter
457166124Srafan    --enable-ext-colors
458166124Srafan	Extend the cchar_t structure to allow more than 16 colors to be
459166124Srafan	encoded.  This applies only to the wide-character (--enable-widec)
460166124Srafan	configuration.
461166124Srafan
462166124Srafan	NOTE:  using this option will make libraries which are not binary-
463166124Srafan	compatible with libncursesw 5.4.  None of the interfaces change, but
464166124Srafan	applications which have an array of cchar_t's must be recompiled.
465166124Srafan
466166124Srafan    --enable-ext-mouse
467166124Srafan	Modify the encoding of mouse state to make room for a 5th mouse button.
468166124Srafan	That allows one to use ncurses with a wheel mouse with xterm or
469166124Srafan	similar X terminal emulators.
470166124Srafan
471166124Srafan	NOTE:  using this option will make libraries which are not binary-
472166124Srafan	compatible with libncursesw 5.4.  None of the interfaces change, but
473166124Srafan	applications which have mouse mask mmask_t's must be recompiled.
474166124Srafan
47566963Speter    --enable-getcap
47666963Speter	Use the 4.4BSD getcap code if available, or a bundled version of it to
47766963Speter	fetch termcap entries.  Entries read in this way cannot use (make
47866963Speter	cross-references to) the terminfo tree, but it is faster than reading
47966963Speter	/etc/termcap.
48066963Speter
481166124Srafan	If configured for one of the *BSD systems, this automatically uses
482166124Srafan	the hashed database system produced using cap_mkdb or similar tools.
483166124Srafan	In that case, there is no advantage in using the --enable-getcap-cache
484166124Srafan	option.
485166124Srafan
486166124Srafan	See also the --with-hashed-db option.
487166124Srafan
48866963Speter    --enable-getcap-cache
48966963Speter	Cache translated termcaps under the directory $HOME/.terminfo
49066963Speter
491166124Srafan	NOTE:  this sounds good - it makes ncurses run faster the second time.
49266963Speter	But look where the data comes from - an /etc/termcap containing lots of
49366963Speter	entries that are not up to date.  If you configure with this option and
49466963Speter	forget to install the terminfo database before running an ncurses
49566963Speter	application, you will end up with a hidden terminfo database that
49666963Speter	generally does not support color and will miss some function keys.
49766963Speter
49866963Speter    --enable-hard-tabs
49966963Speter	Compile-in cursor-optimization code that uses hard-tabs.  We would make
50066963Speter	this a standard feature except for the concern that the terminfo entry
50166963Speter	may not be accurate, or that your stty settings have disabled the use
50266963Speter	of tabs.
50366963Speter
504174993Srafan    --enable-mixed-case
505174993Srafan	Controls whether the filesystem on which the terminfo database resides
506174993Srafan	supports mixed-case filenames (normal for UNIX, but not on other
507174993Srafan	systems).  If you do not specify this option, the configure script
508174993Srafan	checks the current filesystem.
509174993Srafan
51066963Speter    --enable-no-padding
51166963Speter	Compile-in support for the $NCURSES_NO_PADDING environment variable,
51266963Speter	which allows you to suppress the effect of non-mandatory padding in
51366963Speter	terminfo entries.  This is the default, unless you have disabled the
51466963Speter	extended functions.
51566963Speter
516174993Srafan    --enable-reentrant
517174993Srafan	Compile experimental configuration which improves reentrant use of the
518178866Srafan	library by reducing global and static variables.  This option is also
519178866Srafan	set if --with-pthread is used.
520174993Srafan
52166963Speter    --enable-rpath
522166124Srafan	Use rpath option when generating shared libraries, and (with some
523166124Srafan	restrictions) when linking the corresponding programs.  This originally
524166124Srafan	(in 1997) applied mainly to systems using the GNU linker (read the
525166124Srafan	manpage).
52666963Speter
527166124Srafan	More recently it is useful for systems that require special treatment
528166124Srafan	shared libraries in "unusual" locations.  The "system" libraries reside
529166124Srafan	in directories which are on the loader's default search-path.  While
530166124Srafan	you may be able to use workarounds such as the $LD_LIBRARY_PATH
531166124Srafan	environment variable, they do not work with setuid applications since
532166124Srafan	the LD_LIBRARY_PATH variable would be unset in that situation.
533166124Srafan
534174993Srafan	This option does not apply to --with-libtool, since libtool makes
535174993Srafan	extra assumptions about rpath.
536174993Srafan
53766963Speter    --enable-safe-sprintf
53866963Speter	Compile with experimental safe-sprintf code.  You may consider using
53966963Speter	this if you are building ncurses for a system that has neither
54066963Speter	vsnprintf() or vsprintf().  It is slow, however.
54166963Speter
54266963Speter    --enable-sigwinch
54366963Speter	Compile support for ncurses' SIGWINCH handler.  If your application has
54466963Speter	its own SIGWINCH handler, ncurses will not use its own.  The ncurses
54566963Speter	handler causes wgetch() to return KEY_RESIZE when the screen-size
54666963Speter	changes.  This option is the default, unless you have disabled the
54766963Speter	extended functions.
54866963Speter
549166124Srafan    --enable-signed-char
550166124Srafan	The term.h header declares a Booleans[] array typed "char".  But it
551166124Srafan	stores signed values there and "char" is not necessarily signed.
552166124Srafan	Some packagers choose to alter the type of Booleans[] though this
553166124Srafan	is not strictly compatible.  This option allows one to implement this
554166124Srafan	alteration without patching the source code.
555166124Srafan
55666963Speter    --enable-symlinks
55766963Speter	If your system supports symbolic links, make tic use symbolic links
55866963Speter	rather than hard links to save diskspace when writing aliases in the
55966963Speter	terminfo database.
56066963Speter
56166963Speter    --enable-tcap-names
56266963Speter	Compile-in support for user-definable terminal capabilities.  Use the
56366963Speter	-x option of tic and infocmp to treat unrecognized terminal
56466963Speter	capabilities as user-defined strings.  This option is the default,
56566963Speter	unless you have disabled the extended functions.
56666963Speter
56766963Speter    --enable-termcap
56866963Speter	Compile in support for reading terminal descriptions from termcap if no
56966963Speter	match is found in the terminfo database.  See also the --enable-getcap
57066963Speter	and --enable-getcap-cache options.
57166963Speter
57266963Speter    --enable-warnings
57366963Speter	Turn on GCC compiler warnings.  There should be only a few.
57466963Speter
575166124Srafan    --enable-wgetch-events
576166124Srafan	Compile with experimental wgetch-events code.  See ncurses/README.IZ
577166124Srafan
57866963Speter    --enable-widec
579166124Srafan	Compile with wide-character code.  This makes a different version of
580166124Srafan	the libraries (e.g., libncursesw.so), which stores characters as
581166124Srafan	wide-characters,
58266963Speter
58366963Speter	NOTE: applications compiled with this configuration are not compatible
58466963Speter	with those built for 8-bit characters.  You cannot simply make a
58566963Speter	symbolic link to equate libncurses.so with libncursesw.so
58666963Speter
587166124Srafan	NOTE: the Ada95 binding may be built against either version of the the
588166124Srafan	ncurses library, but you must decide which:  the binding installs the
589166124Srafan	same set of files for either version.  Currently (2002/6/22) it does
590166124Srafan	not use the extended features from the wide-character code, so it is
591166124Srafan	probably better to not install the binding for that configuration.
592166124Srafan
59366963Speter    --enable-xmc-glitch
59466963Speter	Compile-in support experimental xmc (magic cookie) code.
59566963Speter
596166124Srafan    --with-abi-version=NUM
597166124Srafan	Override the ABI version, which is used in shared library filenames.
598166124Srafan	Normally this is the same as the release version; some ports have
599166124Srafan	special requirements for compatibility.
600166124Srafan
60166963Speter    --with-ada-compiler=CMD
60266963Speter	Specify the Ada95 compiler command (default "gnatmake")
60366963Speter
60466963Speter    --with-ada-include=DIR
605166124Srafan	Tell where to install the Ada includes (default:
60666963Speter	PREFIX/lib/ada/adainclude)
60766963Speter
60866963Speter    --with-ada-objects=DIR
60966963Speter	Tell where to install the Ada objects (default:  PREFIX/lib/ada/adalib)
61066963Speter
61197049Speter    --with-bool=TYPE
61297049Speter	If --without-cxx is specified, override the type used for the "bool"
61397049Speter	declared in curses.h (normally the type is automatically chosen to
61497049Speter	correspond with that in <stdbool.h>, or defaults to platform-specific
61597049Speter	sizes).
61697049Speter
61797049Speter    --with-build-cc=XXX
61897049Speter	If cross-compiling, specify a host C compiler, which is needed to
619166124Srafan	compile a few utilities which generate source modules for ncurses.
62097049Speter	If you do not give this option, the configure script checks if the
62197049Speter	$BUILD_CC variable is set, and otherwise defaults to gcc or cc.
62297049Speter
62397049Speter    --with-build-cflags=XXX
62497049Speter	If cross-compiling, specify the host C compiler-flags.  You might need
62597049Speter	to do this if the target compiler has unusual flags which confuse the
62697049Speter	host compiler.
62797049Speter
628166124Srafan    --with-build-cppflags=XXX
629166124Srafan	If cross-compiling, specify the host C preprocessor-flags.  You might
630166124Srafan	need to do this if the target compiler has unusual flags which confuse
631166124Srafan	the host compiler.
632166124Srafan
63397049Speter    --with-build-ldflags=XXX
63497049Speter	If cross-compiling, specify the host linker-flags.  You might need to
63597049Speter	do this if the target linker has unusual flags which confuse the host
63697049Speter	compiler.
63797049Speter
63897049Speter    --with-build-libs=XXX
63997049Speter	If cross-compiling, the host libraries.  You might need to do this if
64097049Speter	the target environment requires unusual libraries.
64197049Speter
64297049Speter    --with-caps=XXX
64397049Speter	Specify an alternate terminfo capabilities file, which makes the
64497049Speter	configure script look for "include/Caps.XXX".  A few systems, e.g.,
64597049Speter	AIX 4.x use the same overall file-format as ncurses for terminfo
64697049Speter	data, but use different alignments within the tables to support
64797049Speter	legacy applications.  For those systems, you can configure ncurses
64897049Speter	to use a terminfo database which is compatible with the native
64997049Speter	applications.
65097049Speter
651166124Srafan    --with-chtype=TYPE
652166124Srafan	Override type of chtype, which stores the video attributes and (if
653166124Srafan	--enable-widec is not given) a character.  Prior to ncurses 5.5, this
654166124Srafan	was always unsigned long, but with ncurses 5.5, it may be unsigned.
655166124Srafan	Use this option if you need to preserve compatibility with 64-bit
656166124Srafan	executables.
657166124Srafan
65866963Speter    --with-database=XXX
65966963Speter	Specify the terminfo source file to install.  Usually you will wish
66066963Speter	to install ncurses' default (misc/terminfo.src).  Certain systems
66166963Speter	have special requirements, e.g, OS/2 EMX has a customized terminfo
66266963Speter	source file.
66366963Speter
66466963Speter    --with-dbmalloc
66566963Speter	For testing, compile and link with Conor Cahill's dbmalloc library.
666166124Srafan	This also sets the --disable-leaks option.
66766963Speter
66866963Speter    --with-debug
66966963Speter	Generate debug-libraries (default).  These are named by adding "_g"
67066963Speter	to the root, e.g., libncurses_g.a
67166963Speter
67266963Speter    --with-default-terminfo-dir=XXX
67366963Speter	Specify the default terminfo database directory.  This is normally
67466963Speter	DATADIR/terminfo, e.g., /usr/share/terminfo.
67566963Speter
67666963Speter    --with-dmalloc
67766963Speter	For testing, compile and link with Gray Watson's dmalloc library.
678166124Srafan	This also sets the --disable-leaks option.
67966963Speter
68066963Speter    --with-fallbacks=XXX
68166963Speter	Specify a list of fallback terminal descriptions which will be
68266963Speter	compiled into the ncurses library.  See CONFIGURING FALLBACK ENTRIES.
68366963Speter
68466963Speter    --with-gpm
68566963Speter	use Alessandro Rubini's GPM library to provide mouse support on the
686166124Srafan	Linux console.  Prior to ncurses 5.5, this introduced a dependency on
687166124Srafan	the GPM library.
688166124Srafan	
689166124Srafan	Currently ncurses uses the dlsym() function to bind to the library at
690166124Srafan	runtime, so it is only necessary that the library be present when
691166124Srafan	ncurses is built, to obtain the filename (or soname) used in the
692166124Srafan	corresponding dlopen() call.  If you give a value for this option,
693166124Srafan	e.g.,
69466963Speter
695166124Srafan		--with-gpm=$HOME/tmp/test-gpm.so
696166124Srafan
697166124Srafan	that overrides the configure check for the soname.
698166124Srafan
699166124Srafan	See also --without-dlsym
700166124Srafan
701174993Srafan    --with-hashed-db[=XXX]
702166124Srafan	Use a hashed database for storing terminfo data rather than storing
703166124Srafan	each compiled entry in a separate binary file within a directory
704166124Srafan	tree.
705174993Srafan	
706174993Srafan	In particular, this uses the Berkeley database 1.8.5 interface, as
707174993Srafan	provided by that and its successors db 2, 3, and 4.  The actual
708174993Srafan	interface is slightly different in the successor versions of the
709174993Srafan	Berkeley database.  The database should have been configured using
710174993Srafan	"--enable-compat185".
711166124Srafan
712166124Srafan	If you use this option for configuring ncurses, tic will only be able
713166124Srafan	to write entries in the hashed database.  infocmp can still read
714166124Srafan	entries from a directory tree as well as reading entries from the
715166124Srafan	hashed database.  To do this, infocmp determines whether the $TERMINFO
716166124Srafan	variable points to a directory or a file, and reads the directory-tree
717166124Srafan	or hashed database respectively.
718166124Srafan
719166124Srafan	You cannot have a directory containing both hashed-database and
720166124Srafan	filesystem-based terminfo entries.
721166124Srafan
722174993Srafan	Use the parameter value to give the install-prefix used for the
723174993Srafan	datbase, e.g.,
724174993Srafan		--with-hashed-db=/usr/local/BigBase
725174993Srafan	to find the corresponding include- and lib-directories under the
726174993Srafan	given directory.
727174993Srafan
728166124Srafan	See also the --enable-getcap option.
729166124Srafan
73066963Speter    --with-install-prefix=XXX
73166963Speter	Allows you to specify an alternate location for installing ncurses
73266963Speter	after building it.  The value you specify is prepended to the "real"
733166124Srafan	install location.  This simplifies making binary packages.  The
734166124Srafan	makefile variable DESTDIR is set by this option.  It is also possible
735166124Srafan	to use
736166124Srafan		make install DESTDIR=XXX
737166124Srafan	since the makefiles pass that variable to subordinate makes.
73866963Speter
73966963Speter	NOTE:  a few systems build shared libraries with fixed pathnames; this
74066963Speter	option probably will not work for those configurations.
74166963Speter
742166124Srafan     --with-libtool[=XXX]
743166124Srafan	Generate libraries with libtool.  If this option is selected, then it
744166124Srafan	overrides all other library model specifications.  Note that libtool
745166124Srafan	must already be installed, uses makefile rules dependent on GNU make,
746166124Srafan	and does not promise to follow the version numbering convention of
747166124Srafan	other shared libraries on your system.  However, if the --with-shared
748166124Srafan	option does not succeed, you may get better results with this option.
74976726Speter
750166124Srafan	If a parameter value is given, it must be the full pathname of the
751166124Srafan	particular version of libtool, e.g.,
752166124Srafan		/usr/bin/libtool-1.2.3
753166124Srafan
754166124Srafan	It is possible to rebuild the configure script to use the automake
755166124Srafan	macros for libtool, e.g., AC_PROG_LIBTOOL.  See the comments in
756166124Srafan	aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure
757166124Srafan	using the appropriate patch for autoconf from
758166124Srafan		http://invisible-island.net/autoconf/
759166124Srafan
760166124Srafan    --with-manpage-aliases
761166124Srafan	Tell the configure script you wish to create entries in the
762166124Srafan	man-directory for aliases to manpages which list them, e.g., the
763166124Srafan	functions in the panel manpage.  This is the default.  You can disable
764166124Srafan	it if your man program does this.  You can also disable
765166124Srafan	--with-manpage-symlinks to install files containing a ".so" command
766166124Srafan	rather than symbolic links.
767166124Srafan
76866963Speter    --with-manpage-format=XXX
76966963Speter	Tell the configure script how you would like to install man-pages.  The
77066963Speter	option value must be one of these:  gzip, compress, BSDI, normal,
77166963Speter	formatted.  If you do not give this option, the configure script
77266963Speter	attempts to determine which is the case.
77366963Speter
77466963Speter    --with-manpage-renames=XXX
77566963Speter	Tell the configure script that you wish to rename the manpages while
77666963Speter	installing.  Currently the only distribution which does this is
77766963Speter	the Linux Debian.  The option value specifies the name of a file
77866963Speter	that lists the renamed files, e.g., $srcdir/man/man_db.renames
77966963Speter
78066963Speter    --with-manpage-symlinks
78166963Speter	Tell the configure script that you wish to make symbolic links in the
78266963Speter	man-directory for aliases to the man-pages.  This is the default, but
78366963Speter	can be disabled for systems that provide this automatically.  Doing
78466963Speter	this on systems that do not support symbolic links will result in
78566963Speter	copying the man-page for each alias.
78666963Speter
78776726Speter    --with-manpage-tbl
78876726Speter	Tell the configure script that you with to preprocess the manpages
78976726Speter	by running them through tbl to generate tables understandable by
79076726Speter	nroff.
79176726Speter
792166124Srafan    --with-mmask-t=TYPE
793166124Srafan	Override type of mmask_t, which stores the mouse mask.  Prior to
794166124Srafan	ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it
795166124Srafan	may be unsigned.  Use this option if you need to preserve compatibility
796166124Srafan	with 64-bit executables.
797166124Srafan
79876726Speter    --with-ospeed=TYPE
79976726Speter	Override type of ospeed variable, which is part of the termcap
80076726Speter	compatibility interface.  In termcap, this is a 'short', which works
80176726Speter	for a wide range of baudrates because ospeed is not the actual speed
802166124Srafan	but the encoded value, e.g., B9600 would be a small number such as 13.
80376726Speter	However the encoding scheme originally allowed for values "only" up to
80476726Speter	38400bd.  A newer set of definitions past 38400bd is not encoded as
80576726Speter	compactly, and is not guaranteed to fit into a short (see the function
80676726Speter	cfgetospeed(), which returns a speed_t for this reason).  In practice,
80776726Speter	applications that required knowledge of the ospeed variable, i.e.,
80876726Speter	those using termcap, do not use the higher speeds.  Your application
80976726Speter	(or system, in general) may or may not.
81076726Speter
81166963Speter    --with-normal
81266963Speter	Generate normal (i.e., static) libraries (default).
81366963Speter
814166124Srafan	Note:  on Linux, the configure script will attempt to use the GPM
815166124Srafan	library via the dlsym() function call.  Use --without-dlsym to disable
816166124Srafan	this feature, or --without-gpm, depending on whether you wish to use
817166124Srafan	GPM.
818166124Srafan
81966963Speter    --with-profile
82066963Speter	Generate profile-libraries These are named by adding "_p" to the root,
82166963Speter	e.g., libncurses_p.a
82266963Speter
823178866Srafan    --with-pthread
824178866Srafan	Link with POSIX threads, set --enable-reentrant.  The use_window() and
825178866Srafan	use_screen() functions will use mutex's, allowing rudimentary support
826178866Srafan	for multithreaded applications.
827178866Srafan
82866963Speter    --with-rcs-ids
82966963Speter	Compile-in RCS identifiers.  Most of the C files have an identifier.
83066963Speter
831166124Srafan    --with-rel-version=NUM
832166124Srafan	Override the release version, which may be used in shared library
833166124Srafan	filenames.  This consists of a major and minor version number separated
834166124Srafan	by ".".  Normally the major version number is the same as the ABI
835166124Srafan	version; some ports have special requirements for compatibility.
836166124Srafan
83766963Speter    --with-shared
83866963Speter	Generate shared-libraries.  The names given depend on the system for
83966963Speter	which you are building, typically using a ".so" suffix, along with
84066963Speter	symbolic links that refer to the release version.
841166124Srafan
84266963Speter	NOTE:  Unless you override the configure script by setting the $CFLAGS
84366963Speter	environment variable, these will not be built with the -g debugging
84466963Speter	option.
84566963Speter
846166124Srafan	NOTE: For some configurations, e.g., installing a new version of
847166124Srafan	ncurses shared libraries on a machine which already has ncurses
848166124Srafan	shared libraries, you may encounter problems with the linker.
849166124Srafan	For example, it may prevent you from running  the build tree's
850166124Srafan	copy of tic (for installing the terminfo database) because it
851166124Srafan	loads the system's copy of the ncurses shared libraries.  In that
852166124Srafan	case, using the misc/shlib script may be helpful, since it sets
853166124Srafan	$LD_LIBRARY_PATH to point to the build tree, e.g.,
854166124Srafan		./misc/shlib make install 	
855166124Srafan
85666963Speter    --with-shlib-version=XXX
85766963Speter	Specify whether to use the release or ABI version for shared libraries.
85866963Speter	This is normally chosen automatically based on the type of system
85966963Speter	which you are building on.  We use it for testing the configure script.
86066963Speter
861166124Srafan    --with-sysmouse
862166124Srafan	use FreeBSD sysmouse interface provide mouse support on the console.
863166124Srafan
86466963Speter    --with-system-type=XXX
86566963Speter	For testing, override the derived host system-type which is used to
86666963Speter	decide things such as the linker commands used to build shared
86766963Speter	libraries.  This is normally chosen automatically based on the type of
86866963Speter	system which you are building on.  We use it for testing the configure
86966963Speter	script.
87066963Speter
87166963Speter    --with-terminfo-dirs=XXX
87266963Speter	Specify a search-list of terminfo directories which will be compiled
87366963Speter	into the ncurses library (default: DATADIR/terminfo)
87466963Speter
875166124Srafan    --with-termlib[=XXX]
87666963Speter	When building the ncurses library, organize this as two parts:  the
87766963Speter	curses library (libncurses) and the low-level terminfo library
87866963Speter	(libtinfo).  This is done to accommodate applications that use only
87966963Speter	the latter.  The terminfo library is about half the size of the total.
88066963Speter
881166124Srafan	If an option value is given, that overrides the name of the terminfo
882166124Srafan	library.  For instance, if the wide-character version is built, the
883166124Srafan	terminfo library would be named libtinfow.  But the libtinfow interface
884166124Srafan	is upward compatible from libtinfo, so it would be possible to overlay
885166124Srafan	libtinfo.so with a "wide" version of libtinfow.so by renaming it with
886166124Srafan	this option.
887166124Srafan
88897049Speter    --with-termpath=XXX
88997049Speter	Specify a search-list of termcap files which will be compiled into the
89097049Speter	ncurses library (default:  /etc/termcap:/usr/share/misc/termcap)
89197049Speter
892174993Srafan    --with-ticlib[=XXX]
893174993Srafan	When building the ncurses library, build a separate library for
894174993Srafan	the modules that are used only by the utility programs.  Normally
895174993Srafan	those would be bundled with the termlib or ncurses libraries.
896174993Srafan
897174993Srafan	If an option value is given, that overrides the name of the tic
898174993Srafan	library.  As in termlib, there is no ABI difference between the
899174993Srafan	"wide" libticw.so and libtic.so
900174993Srafan
901166124Srafan    --with-trace
902166124Srafan	Configure the trace() function as part of the all models of the ncurses
903166124Srafan	library.  Normally it is part of the debug (libncurses_g) library only.
904166124Srafan
905166124Srafan    --with-valgrind
906166124Srafan	For testing, compile with debug option.
907166124Srafan	This also sets the --disable-leaks option.
908166124Srafan
90966963Speter    --without-ada
91066963Speter	Suppress the configure script's check for Ada95, do not build the
91166963Speter	Ada95 binding and related demo.
91266963Speter
91376726Speter    --without-curses-h
91476726Speter	Don't install the ncurses header with the name "curses.h".  Rather,
91576726Speter	install as "ncurses.h" and modify the installed headers and manpages
91676726Speter	accordingly.
91776726Speter
91866963Speter    --without-cxx
91966963Speter	XSI curses declares "bool" as part of the interface.  C++ also declares
92066963Speter	"bool".  Neither specifies the size and type of booleans, but both
92166963Speter	insist on the same name.  We chose to accommodate this by making the
92266963Speter	configure script check for the size and type (e.g., unsigned or signed)
92366963Speter	that your C++ compiler uses for booleans.  If you do not wish to use
92466963Speter	ncurses with C++, use this option to tell the configure script to not
92566963Speter	adjust ncurses bool to match C++.
92666963Speter
92766963Speter    --without-cxx-binding
92866963Speter	Suppress the configure script's check for C++, do not build the
92966963Speter	C++ binding and related demo.
93066963Speter
931166124Srafan    --without-develop
932166124Srafan	Disable development options.  This does not include those that change
933166124Srafan	the interface, such as --enable-widec.
934166124Srafan
935166124Srafan    --without-dlsym
936166124Srafan	Do not use dlsym() to load GPM dynamically.
937166124Srafan
93866963Speter    --without-progs
93966963Speter	Tell the configure script to suppress the build of ncurses' application
94066963Speter	programs (e.g., tic).  The test applications will still be built if you
94166963Speter	type "make", though not if you simply do "make install".
94266963Speter
943166124Srafan    --without-xterm-new
944166124Srafan	Tell the configure script to use "xterm-old" for the entry used in
945166124Srafan	the terminfo database.  This will work with variations such as
946166124Srafan	X11R5 and X11R6 xterm.
94766963Speter
948166124Srafan
94962449SpeterCOMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
95062449Speter--------------------------------------------
95162449Speter
95262449Speter    Because ncurses implements the X/Open Curses Specification, its interface
95362449Speter    is fairly stable.  That does not mean the interface does not change.
95462449Speter    Changes are made to the documented interfaces when we find differences
95562449Speter    between ncurses and X/Open or implementations which they certify (such as
95662449Speter    Solaris).  We add extensions to those interfaces to solve problems not
95762449Speter    addressed by the original curses design, but those must not conflict with
95862449Speter    the X/Open documentation.
95962449Speter
96062449Speter    Here are some of the major interface changes, and related problems which
96162449Speter    you may encounter when building a system with different versions of
96262449Speter    ncurses:
96362449Speter
964166124Srafan    5.6 (December 17, 2006)
965166124Srafan	Interface changes:
966166124Srafan
967166124Srafan	+ generate linkable stubs for some macros:
968166124Srafan
969166124Srafan	  getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx,
970166124Srafan	  getpary, getpary,
971166124Srafan
972166124Srafan	  and (for libncursesw)
973166124Srafan
974166124Srafan	  wgetbkgrnd
975166124Srafan
976166124Srafan	Added extensions:
977166124Srafan		nofilter()
978166124Srafan		use_legacy_coding()
979166124Srafan
980166124Srafan	Added internal functions:
981166124Srafan		_nc_first_db
982166124Srafan		_nc_get_source
983166124Srafan		_nc_handle_sigwinch
984166124Srafan		_nc_is_abs_path
985166124Srafan		_nc_is_dir_path
986166124Srafan		_nc_is_file_path
987166124Srafan		_nc_keep_tic_dir
988166124Srafan		_nc_keep_tic_dir
989166124Srafan		_nc_last_db
990166124Srafan		_nc_next_db
991166124Srafan		_nc_read_termtype
992166124Srafan		_nc_tic_dir
993166124Srafan
994166124Srafan		Also (if using the hashed database configuration):
995166124Srafan
996166124Srafan		_nc_db_close
997166124Srafan		_nc_db_first
998166124Srafan		_nc_db_get
999166124Srafan		_nc_db_have_data
1000166124Srafan		_nc_db_have_index
1001166124Srafan		_nc_db_next
1002166124Srafan		_nc_db_open
1003166124Srafan		_nc_db_put
1004166124Srafan
1005166124Srafan		otherwise
1006166124Srafan
1007166124Srafan		_nc_hashed_db
1008166124Srafan
1009166124Srafan	Removed internal functions:
1010166124Srafan		none
1011166124Srafan
1012166124Srafan	Modified internal functions:
1013166124Srafan		_nc_add_to_try
1014166124Srafan		_nc_do_color
1015166124Srafan		_nc_expand_try
1016166124Srafan		_nc_remove_key
1017166124Srafan		_nc_setupscreen
1018166124Srafan
1019166124Srafan    5.5 (October 10, 2005)
1020166124Srafan	Interface changes:
1021166124Srafan
1022166124Srafan	+ terminfo installs "xterm-new" as "xterm" entry rather than
1023166124Srafan	  "xterm-old" (aka xterm-r6).
1024166124Srafan
1025166124Srafan	+ terminfo data is installed using the tic -x option (few systems
1026166124Srafan	  still use ncurses 4.2).
1027166124Srafan
1028166124Srafan	+ modify C++ binding to work with newer C++ compilers by providing
1029166124Srafan	  initializers and using modern casts.  Old-style header names are
1030166124Srafan	  still used in this release to allow compiling with not-so-old
1031166124Srafan	  compilers.
1032166124Srafan
1033166124Srafan	+ form and menu libraries now work with wide-character data. 
1034166124Srafan	  Applications which bypassed the form library and manipulated the
1035166124Srafan	  FIELD.buf data directly will not work properly with libformw, since
1036166124Srafan	  that no longer points to an array of char.  The set_field_buffer()
1037166124Srafan	  and field_buffer() functions translate to/from the actual field
1038166124Srafan	  data.
1039166124Srafan
1040166124Srafan	+ change SP->_current_attr to a pointer, adjust ifdef's to ensure that
1041166124Srafan	  libtinfo.so and libtinfow.so have the same ABI.  The reason for this
1042166124Srafan	  is that the corresponding data which belongs to the upper-level
1043166124Srafan	  ncurses library has a different size in each model.
1044166124Srafan
1045166124Srafan	+ winnstr() now returns multibyte character strings for the
1046166124Srafan	  wide-character configuration.
1047166124Srafan
1048166124Srafan	+ assume_default_colors() no longer requires that use_default_colors()
1049166124Srafan	  be called first.
1050166124Srafan
1051166124Srafan	+ data_ahead() now works with wide-characters.
1052166124Srafan
1053166124Srafan	+ slk_set() and slk_wset() now accept and store multibyte or
1054166124Srafan	  multicolumn characters.
1055166124Srafan
1056166124Srafan	+ start_color() now returns OK if colors have already been started.
1057166124Srafan	  start_color() also returns ERR if it cannot allocate memory.
1058166124Srafan
1059166124Srafan	+ pair_content() now returns -1 for consistency with init_pair() if it
1060166124Srafan	  corresponds to the default-color.
1061166124Srafan
1062166124Srafan	+ unctrl() now returns null if its parameter does not correspond
1063166124Srafan	  to an unsigned char.
1064166124Srafan
1065166124Srafan	Added extensions:
1066166124Srafan		Experimental mouse version 2 supports wheel mice with buttons
1067166124Srafan		4 and 5.  This requires ABI 6 because it modifies the encoding
1068166124Srafan		of mouse events.
1069166124Srafan
1070166124Srafan		Experimental extended colors allows encoding of 256 foreground
1071166124Srafan		and background colors, e.g., with the xterm-256color or
1072166124Srafan		xterm-88color terminfo entries.  This requires ABI 6 because
1073166124Srafan		it changes the size of cchar_t.
1074166124Srafan
1075166124Srafan	Added internal functions:
1076166124Srafan		_nc_check_termtype2
1077166124Srafan		_nc_resolve_uses2
1078166124Srafan		_nc_retrace_cptr
1079166124Srafan		_nc_retrace_cvoid_ptr
1080166124Srafan		_nc_retrace_void_ptr
1081166124Srafan		_nc_setup_term
1082166124Srafan
1083166124Srafan	Removed internal functions:
1084166124Srafan		none
1085166124Srafan
1086166124Srafan	Modified internal functions:
1087166124Srafan		_nc_insert_ch
1088166124Srafan		_nc_save_str
1089166124Srafan		_nc_trans_string
1090166124Srafan
1091166124Srafan    5.4 (February 8, 2004)
1092166124Srafan	Interface changes:
1093166124Srafan
1094166124Srafan	+ add the remaining functions for X/Open curses wide-character support.
1095166124Srafan	  These are only available if the library is configured using the
1096166124Srafan	  --enable-widec option.
1097166124Srafan		pecho_wchar()
1098166124Srafan		slk_wset()
1099166124Srafan
1100166124Srafan	+ write getyx() and related 2-return macros in terms of getcury(),
1101166124Srafan	  getcurx(), etc.
1102166124Srafan
1103166124Srafan	+ simplify ifdef for bool declaration in curses.h
1104166124Srafan
1105166124Srafan	+ modify ifdef's in curses.h that disabled use of __attribute__() for
1106166124Srafan	  g++, since recent versions implement the cases which ncurses uses.
1107166124Srafan
1108166124Srafan	+ change some interfaces to use const:
1109166124Srafan		define_key()
1110166124Srafan		mvprintw()
1111166124Srafan		mvwprintw()
1112166124Srafan		printw()
1113166124Srafan		vw_printw()
1114166124Srafan		winsnstr()
1115166124Srafan		wprintw()
1116166124Srafan
1117166124Srafan	Added extensions:
1118166124Srafan		key_defined()
1119166124Srafan
1120166124Srafan	Added internal functions:
1121166124Srafan		_nc_get_locale()
1122166124Srafan		_nc_insert_ch()
1123166124Srafan		_nc_is_charable()	wide
1124166124Srafan		_nc_locale_breaks_acs()
1125166124Srafan		_nc_pathlast()
1126166124Srafan		_nc_to_char()		wide
1127166124Srafan		_nc_to_widechar()	wide
1128166124Srafan		_nc_tparm_analyze()
1129166124Srafan		_nc_trace_bufcat()	debug
1130166124Srafan		_nc_unicode_locale()
1131166124Srafan
1132166124Srafan	Removed internal functions:
1133166124Srafan		_nc_outstr()
1134166124Srafan		_nc_sigaction()
1135166124Srafan
1136166124Srafan	Modified internal functions:
1137166124Srafan		_nc_remove_string()
1138166124Srafan		_nc_retrace_chtype()
1139166124Srafan
1140166124Srafan    5.3 (October 12, 2002)
1141166124Srafan	Interface changes:
1142166124Srafan
1143166124Srafan	+ change type for bool used in headers to NCURSES_BOOL, which usually
1144166124Srafan	  is the same as the compiler's definition for 'bool'.
1145166124Srafan
1146166124Srafan	+ add all but two functions for X/Open curses wide-character support.
1147166124Srafan	  These are only available if the library is configured using the
1148166124Srafan	  --enable-widec option.  Missing functions are
1149166124Srafan		pecho_wchar()
1150166124Srafan		slk_wset()
1151166124Srafan
1152166124Srafan	+ add environment variable $NCURSES_ASSUMED_COLORS to modify the
1153166124Srafan	  assume_default_colors() extension.
1154166124Srafan
1155166124Srafan	Added extensions:
1156166124Srafan		is_term_resized()
1157166124Srafan		resize_term()
1158166124Srafan
1159166124Srafan	Added internal functions:
1160166124Srafan		_nc_altcharset_name()	debug
1161166124Srafan		_nc_reset_colors()
1162166124Srafan		_nc_retrace_bool()	debug
1163166124Srafan		_nc_retrace_unsigned()	debug
1164166124Srafan		_nc_rootname()
1165166124Srafan		_nc_trace_ttymode()	debug
1166166124Srafan		_nc_varargs()		debug
1167166124Srafan		_nc_visbufn()		debug
1168166124Srafan		_nc_wgetch()
1169166124Srafan
1170166124Srafan	Removed internal functions:
1171166124Srafan		_nc_background()
1172166124Srafan
1173166124Srafan	Modified internal functions:
1174166124Srafan		_nc_freeall()		debug
1175166124Srafan
117676726Speter    5.2 (October 21, 2000)
117776726Speter	Interface changes:
117876726Speter
117976726Speter	+ revert termcap ospeed variable to 'short' (see discussion of the
118076726Speter	  --with-ospeed configure option).
118176726Speter
118266963Speter    5.1 (July 8, 2000)
118366963Speter	Interface changes:
118462449Speter
118566963Speter	+ made the extended terminal capabilities
118666963Speter	  (configure --enable-tcap-names) a standard feature.  This should
118766963Speter	  be transparent to applications that do not require it.
118866963Speter
118966963Speter	+ removed the trace() function and related trace support from the
119066963Speter	  production library.
119166963Speter
119266963Speter	+ modified curses.h.in, undef'ing some symbols to avoid conflict
119366963Speter	  with C++ STL.
119466963Speter
119566963Speter	Added extensions:  assume_default_colors().
119666963Speter
119766963Speter    5.0 (October 23, 1999)
119866963Speter	Interface changes:
119966963Speter
120062449Speter	+ implemented the wcolor_set() and slk_color() functions.
120162449Speter
120262449Speter	+ move macro winch to a function, to hide details of struct ldat
120362449Speter
120462449Speter	+ corrected prototypes for slk_* functions, using chtype rather than
120562449Speter	  attr_t.
120662449Speter
120762449Speter	+ the slk_attr_{set,off,on} functions need an additional void*
120862449Speter	  parameter according to XSI.
120962449Speter
121062449Speter	+ modified several prototypes to correspond with 1997 version of X/Open
121162449Speter	  Curses:  [w]attr_get(), [w]attr_set(), border_set() have different
121266963Speter	  parameters.  Some functions were renamed or misspelled:
121362449Speter	  erase_wchar(), in_wchntr(), mvin_wchntr().  Some developers have used
121462449Speter	  attr_get().
121562449Speter
121662449Speter	Added extensions:  keybound(), curses_version().
121762449Speter
121862449Speter	Terminfo database changes:
121962449Speter
122062449Speter	+ change translation for termcap 'rs' to terminfo 'rs2', which is
122162449Speter	  the documented equivalent, rather than 'rs1'.
122262449Speter
122362449Speter	The problems are subtler in recent releases.
122462449Speter
122562449Speter	a) This release provides users with the ability to define their own
122662449Speter	   terminal capability extensions, like termcap.  To accomplish this,
122762449Speter	   we redesigned the TERMTYPE struct (in term.h).  Very few
122862449Speter	   applications use this struct.  They must be recompiled to work with
122962449Speter	   the 5.0 library.
123062449Speter
123162449Speter	a) If you use the extended terminfo names (i.e., you used configure
123262449Speter	   --enable-tcap-names), the resulting terminfo database can have some
123362449Speter	   entries which are not readable by older versions of ncurses.  This
123462449Speter	   is a bug in the older versions:
123562449Speter
123662449Speter	   + the terminfo database stores booleans, numbers and strings in
123762449Speter	     arrays.  The capabilities that are listed in the arrays are
123862449Speter	     specified by X/Open.  ncurses recognizes a number of obsolete and
123962449Speter	     extended names which are stored past the end of the specified
124062449Speter	     entries.
124162449Speter
124262449Speter	   + a change to read_entry.c in 951001 made the library do an lseek()
124362449Speter	     call incorrectly skipping data which is already read from the
124462449Speter	     string array.  This happens when the number of strings in the
124562449Speter	     terminfo data file is greater than STRCOUNT, the number of
124662449Speter	     specified and obsolete or extended strings.
124762449Speter
124862449Speter	   + as part of alignment with the X/Open final specification, in the
124962449Speter	     990109 patch we added two new terminfo capabilities:
125062449Speter	     set_a_attributes and set_pglen_inch).  This makes the indices for
125162449Speter	     the obsolete and extended capabilities shift up by 2.
125262449Speter
125362449Speter	   + the last two capabilities in the obsolete/extended list are memu
125462449Speter	     and meml, which are found in most terminfo descriptions for xterm.
125562449Speter
125662449Speter	     When trying to read this terminfo entry, the spurious lseek()
125762449Speter	     causes the library to attempt to read the final portion of the
125862449Speter	     terminfo data (the text of the string capabilities) 4 characters
125962449Speter	     past its starting point, and reads 4 characters too few.  The
126062449Speter	     library rejects the data, and applications are unable to
126162449Speter	     initialize that terminal type.
126262449Speter
126362449Speter	   FIX: remove memu and meml from the xterm description.  They are
126462449Speter	   obsolete, not used by ncurses.  (It appears that the feature was
126562449Speter	   added to xterm to make it more like hpterm).
126662449Speter
126762449Speter	   This is not a problem if you do not use the -x option of tic to
126862449Speter	   create a terminfo database with extended names.  Note that the
126962449Speter	   user-defined terminal capabilities are not affected by this bug,
127062449Speter	   since they are stored in a table after the older terminfo data ends,
127162449Speter	   and are invisible to the older libraries.
127262449Speter
127362449Speter	c) Some developers did not wish to use the C++ binding, and used the
127462449Speter	   configure --without-cxx option.  This causes problems if someone
127562449Speter	   uses the ncurses library from C++ because that configure test
127662449Speter	   determines the type for C++'s bool and makes ncurses match it, since
127762449Speter	   both C++ and curses are specified to declare bool.  Calling ncurses
127862449Speter	   functions with the incorrect type for bool will cause execution
127962449Speter	   errors.  In 5.0 we added a configure option "--without-cxx-binding"
128062449Speter	   which controls whether the binding itself is built and installed.
128162449Speter
128266963Speter    4.2 (March 2, 1998)
128366963Speter	Interface changes:
128462449Speter
128562449Speter	+ correct prototype for termattrs() as per XPG4 version 2.
128662449Speter
128762449Speter	+ add placeholder prototypes for color_set(), erasewchar(),
128862449Speter	  term_attrs(), wcolor_set() as per XPG4 version 2.
128962449Speter
129062449Speter	+ add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in
129162449Speter	  SVr4 headers.
129262449Speter
129362449Speter	New extensions: keyok() and define_key().
129462449Speter
129562449Speter	Terminfo database changes:
129662449Speter
129762449Speter	+ corrected definition in curses.h for ACS_LANTERN, which was 'I'
129862449Speter	  rather than 'i'.
129962449Speter
130062449Speter    4.1 (May 15, 1997)
130162449Speter
130262449Speter	We added these extensions:  use_default_colors().  Also added
130362449Speter	configure option --enable-const, to support the use of const where
130462449Speter	X/Open should have, but did not, specify.
130562449Speter
130662449Speter	The terminfo database content changed the representation of color for
130762449Speter	most entries that use ANSI colors.  SVr4 curses treats the setaf/setab
130862449Speter	and setf/setb capabilities differently, interchanging the red/blue
130962449Speter	colors in the latter.
131062449Speter
131162449Speter    4.0 (December 24, 1996)
131262449Speter
131362449Speter	We bumped to version 4.0 because the newly released dynamic loader
131462449Speter	(ld.so.1.8.5) on Linux did not load shared libraries whose ABI and REL
131562449Speter	versions were inconsistent.  At that point, ncurses ABI was 3.4 and the
131662449Speter	REL was 1.9.9g, so we made them consistent.
131762449Speter
131862449Speter    1.9.9g (December 1, 1996)
131962449Speter
132066963Speter	This fixed most of the problems with 1.9.9e, and made these interface
132162449Speter	changes:
132262449Speter
132362449Speter	+ remove tparam(), which had been provided for compatibility with
132462449Speter	  some termcap.  tparm() is standard, and does not conflict with
132562449Speter	  application's fallback for missing tparam().
132662449Speter
132762449Speter	+ turn off hardware echo in initscr().  This changes the sense of the
132862449Speter	  echo() function, which was initialized to echoing rather than
132962449Speter	  nonechoing (the latter is specified).  There were several other
133062449Speter	  corrections to the terminal I/O settings which cause applications to
133162449Speter	  behave differently.
133262449Speter
133362449Speter	+ implemented several functions (such as attr_on()) which were
133462449Speter	  available only as macros.
133562449Speter
133662449Speter	+ corrected several typos in curses.h.in (i.e., the mvXXXX macros).
133762449Speter
133862449Speter	+ corrected prototypes for delay_output(),
133962449Speter	  has_color, immedok() and idcok().
134062449Speter
134162449Speter	+ corrected misspelled getbkgd().  Some applications used the
134262449Speter	  misspelled name.
134362449Speter
134462449Speter	+ added _yoffset to WINDOW.  The size of WINDOW does not impact
134562449Speter	  applications, since they use only pointers to WINDOW structs.
134662449Speter
134762449Speter	These changes were made to the terminfo database:
134862449Speter
134962449Speter	+ removed boolean 'getm' which was available as an extended name.
135062449Speter
135162449Speter	We added these extensions: wresize(), resizeterm(), has_key() and
135262449Speter	mcprint().
135362449Speter
135462449Speter    1.9.9e (March 24, 1996)
135562449Speter
135662449Speter	not recommended (a last-minute/untested change left the forms and
135766963Speter	menus libraries unusable since they do not repaint the screen).
135862449Speter	Foreground/background colors are combined incorrectly, working properly
135962449Speter	only on a black background.  When this was released, the X/Open
136062449Speter	specification was available only in draft form.
136162449Speter
136262449Speter	Some applications (such as lxdialog) were "fixed" to work with the
136362449Speter	incorrect color scheme.
136462449Speter
136562449Speter
136650276SpeterIF YOU ARE A SYSTEM INTEGRATOR:
136762449Speter------------------------------
136850276Speter
136950276Speter    Configuration and Installation:
137050276Speter
1371166124Srafan    	On platforms where ncurses is assumed to be installed in /usr/lib,
1372166124Srafan	the configure script uses "/usr" as a default:
137350276Speter
1374166124Srafan		Linux, FreeBSD, NetBSD, OpenBSD, Cygwin
137550276Speter
1376166124Srafan	For other platforms, the default is "/usr/local".  See the discussion
1377166124Srafan	of the "--disable-overwrite" option.
137850276Speter
1379166124Srafan	The location of the terminfo is set indirectly by the "--datadir"
1380166124Srafan	configure option, e.g., /usr/share/terminfo, given a datadir of
1381166124Srafan	/usr/share.  You may want to override this if you are installing
1382166124Srafan	ncurses libraries in nonstandard locations, but wish to share the
1383166124Srafan	terminfo database.
1384166124Srafan
1385166124Srafan	Normally the ncurses library is configured in a pure-terminfo mode;
1386166124Srafan	that is, with the --disable-termcap option.  This makes the ncurses
1387166124Srafan	library smaller and faster.  The ncurses library includes a termcap
1388166124Srafan	emulation that queries the terminfo database, so even applications that
1389166124Srafan	use raw termcap to query terminal characteristics will win (providing
1390166124Srafan	you recompile and relink them!).
1391166124Srafan
1392166124Srafan	If you must configure with termcap fallback enabled, you may also wish
1393166124Srafan	to use the --enable-getcap option.  This speeds up termcap-based
1394166124Srafan	startups, at the expense of not allowing personal termcap entries to
1395166124Srafan	reference the terminfo tree.  See comments in
1396166124Srafan	ncurses/tinfo/read_termcap.c for further details.
1397166124Srafan
139850276Speter	Note that if you have $TERMCAP set, ncurses will use that value
139950276Speter	to locate termcap data.  In particular, running from xterm will
140050276Speter	set $TERMCAP to the contents of the xterm's termcap entry.
140150276Speter	If ncurses sees that, it will not examine /etc/termcap.
140250276Speter
140350276Speter    Keyboard Mapping:
140450276Speter
140550276Speter	The terminfo file assumes that Shift-Tab generates \E[Z (the ECMA-48
140650276Speter	reverse-tabulation sequence) rather than ^I.  Here are the loadkeys -d
140750276Speter	mappings that will set this up:
140850276Speter
140966963Speter		keycode	 15 = Tab	      Tab
141050276Speter			alt     keycode  15 = Meta_Tab
141150276Speter			shift	keycode  15 = F26
141250276Speter		string F26 ="\033[Z"
141350276Speter
141450276Speter    Naming the Console Terminal
141550276Speter
1416166124Srafan	In various systems there has been a practice of designating the system
1417166124Srafan	console driver type as `console'.  Please do not do this!  It
1418166124Srafan	complicates peoples' lives, because it can mean that several different
1419166124Srafan	terminfo entries from different operating systems all logically want to
1420166124Srafan	be called `console'.
142150276Speter
142250276Speter	Please pick a name unique to your console driver and set that up
142350276Speter	in the /etc/inittab table or local equivalent.  Send the entry to the
142450276Speter	terminfo maintainer (listed in the misc/terminfo file) to be included
142550276Speter	in the terminfo file, if it's not already there.  See the
142650276Speter	term(7) manual page included with this distribution for more on
142750276Speter	conventions for choosing type names.
142850276Speter
142950276Speter	Here are some recommended primary console names:
143050276Speter
143150276Speter		linux	-- Linux console driver
143250276Speter		freebsd	-- FreeBSD
143350276Speter		netbsd	-- NetBSD
143450276Speter		bsdos	-- BSD/OS
143550276Speter
143650276Speter	If you are responsible for integrating ncurses for one of these
143750276Speter	distribution, please either use the recommended name or get back
143850276Speter	to us explaining why you don't want to, so we can work out nomenclature
143950276Speter	that will make users' lives easier rather than harder.
144050276Speter
144162449Speter
144262449SpeterRECENT XTERM VERSIONS:
144362449Speter---------------------
144462449Speter
144550276Speter	The terminfo database file included with this distribution assumes you
1446166124Srafan	are running a modern xterm based on XFree86 (i.e., xterm-new).  The
1447166124Srafan	earlier X11R6 entry (xterm-r6) and X11R5 entry (xterm-r5) is provided
1448166124Srafan	as well.  See the --without-xterm-new configure script option if you
1449166124Srafan	are unable to update your system.
145050276Speter
145150276Speter
145262449SpeterCONFIGURING FALLBACK ENTRIES:
145362449Speter----------------------------
145462449Speter
145550276Speter	In order to support operation of ncurses programs before the terminfo
145650276Speter	tree is accessible (that is, in single-user mode or at OS installation
145750276Speter	time) the ncurses library can be compiled to include an array of
1458166124Srafan	pre-fetched fallback entries.  This must be done on a machine which
1459166124Srafan	has ncurses' infocmp and terminfo database installed.
146050276Speter
146150276Speter	These entries are checked by setupterm() only when the conventional
146250276Speter	fetches from the terminfo tree and the termcap fallback (if configured)
146350276Speter	have been tried and failed.  Thus, the presence of a fallback will not
146450276Speter	shadow modifications to the on-disk entry for the same type, when that
146550276Speter	entry is accessible.
146650276Speter
1467166124Srafan	By default, there are no entries on the fallback list.  After you have
1468166124Srafan	built the ncurses suite for the first time, you can change the list
1469166124Srafan	(the process needs infocmp(1)).  To do so, use the script
1470166124Srafan	ncurses/tinfo/MKfallback.sh.  A configure script option
1471166124Srafan	--with-fallbacks does this (it accepts a comma-separated list of the
1472166124Srafan	names you wish, and does not require a rebuild).
147350276Speter
147450276Speter	If you wanted (say) to have linux, vt100, and xterm fallbacks, you
147550276Speter	would use the commands
147650276Speter
147750276Speter		cd ncurses;
1478166124Srafan		tinfo/MKfallback.sh linux vt100 xterm >fallback.c
147950276Speter
148050276Speter	Then just rebuild and reinstall the library as you would normally.
148150276Speter	You can restore the default empty fallback list with
148250276Speter
1483166124Srafan		tinfo/MKfallback.sh >fallback.c
148450276Speter
148550276Speter	The overhead for an empty fallback list is one trivial stub function.
148650276Speter	Any non-empty fallback list is const-ed and therefore lives in sharable
148750276Speter	text space.  You can look at the comment trailing each initializer in
148850276Speter	the generated ncurses/fallback.c file to see the core cost of the
148950276Speter	fallbacks.  A good rule of thumb for modern vt100-like entries is that
149050276Speter	each one will cost about 2.5K of text space.
149150276Speter
149262449Speter
149350276SpeterBSD CONVERSION NOTES:
149462449Speter--------------------
149562449Speter
149650276Speter	If you need to support really ancient BSD programs, you probably
149750276Speter	want to configure with the --enable-bsdpad option.  What this does
149850276Speter	is enable code in tputs() that recognizes a numeric prefix on a
149950276Speter	capability as a request for that much trailing padding in milliseconds.
150050276Speter	There are old BSD programs that do things like tputs("50").
150150276Speter
150250276Speter	(If you are distributing ncurses as a support-library component of
150350276Speter	an application you probably want to put the remainder of this section
150450276Speter	in the package README file.)
150550276Speter
150666963Speter	The following note applies only if you have configured ncurses with
150750276Speter	--enable-termcap.
150850276Speter
150950276Speter------------------------------- CUT HERE --------------------------------
151050276Speter
151150276SpeterIf you are installing this application privately (either because you
151250276Speterhave no root access or want to experiment with it before doing a root
151350276Speterinstallation), there are a couple of details you need to be aware of.
151450276SpeterThey have to do with the ncurses library, which uses terminfo rather
151550276Speterthan termcap for describing terminal characteristics.
151650276Speter
151750276SpeterThough the ncurses library is terminfo-based, it will interpret your
151850276SpeterTERMCAP variable (if present), any local termcap files you reference
151950276Speterthrough it, and the system termcap file.  However, in order to avoid
152050276Speterslowing down your application startup, it will only do this once per
152150276Speterterminal type!
152250276Speter
152350276SpeterThe first time you load a given terminal type from your termcap
152450276Speterdatabase, the library initialization code will automatically write it
152550276Speterin terminfo format to a subdirectory under $HOME/.terminfo.  After
152650276Speterthat, the initialization code will find it there and do a (much
152750276Speterfaster) terminfo fetch.
152850276Speter
152950276SpeterUsually, all this means is that your home directory will silently grow
153050276Speteran invisible .terminfo subdirectory which will get filled in with
153150276Speterterminfo descriptions of terminal types as you invoke them.  If anyone
153250276Speterever installs a global terminfo tree on your system, this will quietly
153350276Speterstop happening and your $HOME/.terminfo will become redundant.
153450276Speter
153550276SpeterThe objective of all this logic is to make converting from BSD termcap
153650276Speteras painless as possible without slowing down your application (termcap
153750276Spetercompilation is expensive).
153850276Speter
153950276SpeterIf you don't have a TERMCAP variable or custom personal termcap file,
154050276Speteryou can skip the rest of this dissertation.
154150276Speter
154250276SpeterIf you *do* have a TERMCAP variable and/or a custom personal termcap file
154350276Speterthat defines a terminal type, that definition will stop being visible
154450276Speterto this application after the first time you run it, because it will
154550276Speterinstead see the terminfo entry that it wrote to $HOME/terminfo the
154650276Speterfirst time around.
154750276Speter
154850276SpeterSubsequently, editing the TERMCAP variable or personal TERMCAP file
154950276Speterwill have no effect unless you explicitly remove the terminfo entry
155050276Speterunder $HOME/terminfo.  If you do that, the entry will be recompiled
155150276Speterfrom your termcap resources the next time it is invoked.
155250276Speter
155350276SpeterTo avoid these complications, use infocmp(1) and tic(1) to edit the
155450276Speterterminfo directory directly.
155550276Speter
155650276Speter------------------------------- CUT HERE --------------------------------
155750276Speter
155850276SpeterUSING NCURSES WITH AFS:
155950276Speter	AFS treats each directory as a separate logical filesystem, you
156050276Speter	can't hard-link across them.  The --enable-symlinks option copes
156150276Speter	with this by making tic use symbolic links.
156250276Speter
156350276SpeterUSING NCURSES WITH GPM:
1564166124Srafan	Ncurses 4.1 and up can be configured to use GPM (General Purpose
1565166124Srafan	Mouse) which is used on Linux console.  Be aware that GPM is commonly
156650276Speter	installed as a shared library which contains a wrapper for the curses
156750276Speter	wgetch() function (libcurses.o).  Some integrators have simplified
1568166124Srafan	linking applications by combining all or part of libcurses.so into the
1569166124Srafan	libgpm.so file, producing symbol conflicts with ncurses (specifically
1570166124Srafan	the wgetch function).  This was originally the BSD curses, but
1571166124Srafan	generally whatever curses library exists on the system.
157250276Speter
1573166124Srafan	You may be able to work around this problem by linking as follows:
1574166124Srafan
157550276Speter		cc -o foo foo.o -lncurses -lgpm -lncurses
157650276Speter
157750276Speter	but the linker may not cooperate, producing mysterious errors.
1578166124Srafan	See the FAQ, as well as the discussion under the --with-gpm option:
157950276Speter
1580166124Srafan	http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
158150276Speter
158266963SpeterBUILDING NCURSES WITH A CROSS-COMPILER
158366963Speter	Ncurses can be built with a cross-compiler.  Some parts must be built
158466963Speter	with the host's compiler since they are used for building programs
158566963Speter	(e.g., ncurses/make_hash and ncurses/make_keys) that generate tables
1586166124Srafan	that are compiled into the ncurses library.  The essential thing to do
1587166124Srafan	is set the BUILD_CC environment variable to your host's compiler, and
1588166124Srafan	run the configure script configuring for the cross-compiler.
158950276Speter
1590166124Srafan	The configure options --with-build-cc, etc., are provided to make this
1591166124Srafan	simpler.  Since make_hash and make_keys use only ANSI C features, it
1592166124Srafan	is normally not necessary to provide the other options such as
1593166124Srafan	--with-build-libs, but they are provided for completeness.
1594166124Srafan
159566963Speter	Note that all of the generated source-files which are part of ncurses
159666963Speter	will be made if you use
159750276Speter
159866963Speter		make sources
159950276Speter
160066963Speter	This would be useful in porting to an environment which has little
160166963Speter	support for the tools used to generate the sources, e.g., sed, awk and
160266963Speter	Bourne-shell.
160366963Speter
1604166124Srafan	When ncurses has been successfully cross-compiled, you may want to use
1605166124Srafan	"make install" (with a suitable target directory) to construct an
1606166124Srafan	install tree.  Note that in this case (as with the --with-fallbacks
1607166124Srafan	option), ncurses uses the development platform's tic to do the
1608166124Srafan	"make install.data" portion.
1609166124Srafan
161050276SpeterBUGS:
161150276Speter	Send any feedback to the ncurses mailing list at
161262449Speter	bug-ncurses@gnu.org. To subscribe send mail to
161362449Speter	bug-ncurses-request@gnu.org with body that reads:
161450276Speter	subscribe ncurses <your-email-address-here>
161550276Speter
161666963Speter	The Hacker's Guide in the doc directory includes some guidelines
161750276Speter	on how to report bugs in ways that will get them fixed most quickly.
1618166124Srafan
1619166124Srafan-- vile:txtmode
1620