xref: /freebsd/contrib/ncurses/INSTALL (revision 5ca8e32633c4ffbbcd6762e5888b6a4ba0708c6c)
1-------------------------------------------------------------------------------
2-- Copyright 2018-2019,2020 Thomas E. Dickey                                 --
3-- Copyright 1998-2017,2018 Free Software Foundation, Inc.                   --
4--                                                                           --
5-- Permission is hereby granted, free of charge, to any person obtaining a   --
6-- copy of this software and associated documentation files (the             --
7-- "Software"), to deal in the Software without restriction, including       --
8-- without limitation the rights to use, copy, modify, merge, publish,       --
9-- distribute, distribute with modifications, sublicense, and/or sell copies --
10-- of the Software, and to permit persons to whom the Software is furnished  --
11-- to do so, subject to the following conditions:                            --
12--                                                                           --
13-- The above copyright notice and this permission notice shall be included   --
14-- in all copies or substantial portions of the Software.                    --
15--                                                                           --
16-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS   --
17-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF                --
18-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --
19-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,       --
20-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR     --
21-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --
22-- USE OR OTHER DEALINGS IN THE SOFTWARE.                                    --
23--                                                                           --
24-- Except as contained in this notice, the name(s) of the above copyright    --
25-- holders shall not be used in advertising or otherwise to promote the      --
26-- sale, use or other dealings in this Software without prior written        --
27-- authorization.                                                            --
28-------------------------------------------------------------------------------
29-- $Id: INSTALL,v 1.226 2020/09/06 23:41:16 tom Exp $
30---------------------------------------------------------------------
31             How to install Ncurses/Terminfo on your system
32---------------------------------------------------------------------
33
34    ************************************************************
35    * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
36    ************************************************************
37
38You should be reading the file INSTALL in a directory called ncurses-d.d, where
39d.d is the current version number.  There should be several subdirectories,
40including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs',
41and `test'.  See the README file for a roadmap to the package.
42
43If you are a distribution integrator or packager, please read and act on the
44section titled FOR SYSTEM INTEGRATORS below.
45
46If you are converting from BSD curses and do not have root access, be sure
47to read the BSD CONVERSION NOTES section below.
48
49If you are trying to build applications using gpm with ncurses,
50read the USING NCURSES WITH GPM section below.
51
52If you are cross-compiling, see the note below on BUILDING WITH A CROSS-COMPILER.
53
54If you want to build the Ada95 binding, go to the Ada95 directory and
55follow the instructions there.  The Ada95 binding is not covered below.
56
57
58REQUIREMENTS:
59------------
60
61You will need the following to build and install ncurses under UNIX:
62
63	* ANSI C compiler  (gcc, for instance)
64	* sh               (bash will do)
65	* awk              (mawk or gawk will do)
66	* sed
67	* BSD or System V style install (a script is enclosed)
68
69Ncurses has been also built in the OS/2 EMX environment.
70
71
72INSTALLATION PROCEDURE:
73----------------------
74
751.  First, decide whether you want ncurses to replace your existing library (in
76    which case you'll need super-user privileges) or be installed in parallel
77    with it.
78
79    The --prefix option to configure changes the root directory for installing
80    ncurses.  The default is normally in subdirectories of /usr/local, except
81    for systems where ncurses is normally installed as a system library (see
82    "IF YOU ARE A SYSTEM INTEGRATOR").  Use --prefix=/usr to replace your
83    default curses distribution.
84
85    The package gets installed beneath the --prefix directory as follows:
86
87    In $(prefix)/bin:          tic, infocmp, captoinfo, tset,
88				reset, clear, tput, toe, tabs
89    In $(prefix)/lib:          libncurses*.* libcurses.a
90    In $(prefix)/share/terminfo: compiled terminal descriptions
91    In $(prefix)/include:      C header files
92    Under $(prefix)/man:       the manual pages
93
94    Note that the configure script attempts to locate previous installation of
95    ncurses, and will set the default prefix according to where it finds the
96    ncurses headers.
97
98    Do not use commands such as
99
100	make install prefix=XXX
101
102    to change the prefix after configuration, since the prefix value is used
103    for some absolute pathnames such as TERMINFO.  Instead do this
104
105	make install DESTDIR=XXX
106
107    See also the discussion of --with-install-prefix.
108
1092.  Type `./configure' in the top-level directory of the distribution to
110    configure ncurses for your operating system and create the Makefiles.
111    Besides --prefix, various configuration options are available to customize
112    the installation; use `./configure --help' to list the available options.
113
114    If your operating system is not supported, read the PORTABILITY section in
115    the file ncurses/README for information on how to create a configuration
116    file for your system.
117
118    The `configure' script generates makefile rules for one or more object
119    models and their associated libraries:
120
121	libncurses.a (normal)
122
123	libcurses.a (normal, a link to libncurses.a)
124		This gets left out if you configure with --disable-overwrite.
125
126	libncurses.so (shared)
127
128	libncurses_g.a (debug)
129
130	libncurses_p.a (profile)
131
132	libncurses.la (libtool)
133
134    If you configure using the --enable-widec option, a "w" is appended to the
135    library names (e.g., libncursesw.a), and the resulting libraries support
136    wide-characters, e.g., via a UTF-8 locale.  The corresponding header files
137    are compatible with the non-wide-character configuration; wide-character
138    features are provided by ifdef's in the header files.  The wide-character
139    library interfaces are not binary-compatible with the non-wide-character
140    version.  Building and running the wide-character code relies on a fairly
141    recent implementation of libiconv.  We have built this configuration on
142    various systems using libiconv, sometimes requiring libutf8.
143
144    If you configure using the --with-pthread option, a "t" is appended to
145    the library names (e.g., libncursest.a, libncursestw.a).
146
147    If you do not specify any models, the normal and debug libraries will be
148    configured.  Typing `configure' with no arguments is equivalent to:
149
150	./configure --with-normal --with-debug --enable-overwrite
151
152    Typing
153
154	./configure --with-shared
155
156    makes the shared libraries the default, resulting in
157
158	./configure --with-shared --with-normal --with-debug --enable-overwrite
159
160    If you want only shared libraries, type
161
162	./configure --with-shared --without-normal --without-debug
163
164    Rules for generating shared libraries are highly dependent upon the choice
165    of host system and compiler.  We've been testing shared libraries on
166    several systems, but more work needs to be done to make shared libraries
167    work on other systems.
168
169    If you have libtool installed, you can type
170
171	./configure --with-libtool
172
173    to generate the appropriate static and/or shared libraries for your
174    platform using libtool.
175
176    You can make curses and terminfo fall back to an existing file of termcap
177    definitions by configuring with --enable-termcap.  If you do this, the
178    library will search /etc/termcap before the terminfo database, and will
179    also interpret the contents of the TERM environment variable.  See the
180    section BSD CONVERSION NOTES below.
181
1823.  Type `make'.  Ignore any warnings, no error messages should be produced.
183    This should compile the ncurses library, the terminfo compiler tic(1),
184    captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1)
185    programs (see the manual pages for explanation of what they do), some test
186    programs, and the panels, menus, and forms libraries.
187
1884.  Run ncurses and several other test programs in the test directory to
189    verify that ncurses functions correctly before doing an install that
190    may overwrite system files.  Read the file test/README for details on
191    the test programs.
192
193    NOTE: You must have installed the terminfo database, or set the
194    environment variable $TERMINFO to point to a SVr4-compatible terminfo
195    database before running the test programs.  Not all vendors' terminfo
196    databases are SVr4-compatible, but most seem to be.
197
198    It is possible to configure ncurses to use other terminfo database formats.
199    A few are provided as examples in the include-directory (see --with-caps).
200
201    If you run the test programs WITHOUT installing terminfo, ncurses may
202    read the termcap file and cache that in $HOME/.terminfo, which will
203    thereafter be used instead of the terminfo database.  See the comments
204    on "--enable-getcap-cache", to see why this is a Bad Thing.
205
206    The ncurses program is designed specifically to test the ncurses library.
207    You can use it to verify that the screen highlights work correctly, that
208    cursor addressing and window scrolling works OK, etc.
209
2105.  Once you've tested, you can type `make install' to install libraries,
211    the programs, the terminfo database and the manual pages.  Alternately, you
212    can type `make install' in each directory you want to install.  In the
213    top-level directory, you can do a partial install using these commands:
214
215	'make install.progs'    installs tic, infocmp, etc...
216	'make install.includes' installs the headers.
217	'make install.libs'     installs the libraries (and the headers).
218	'make install.data'     installs the terminfo data. (Note: `tic' must
219				be installed before the terminfo data can be
220				compiled).
221	'make install.man'      installs the manual pages.
222
223  ############################################################################
224  #     CAVEAT EMPTOR: `install.data' run as root will NUKE any existing     #
225  #  terminfo database. If you have any custom or unusual entries SAVE them  #
226  #  before you install ncurses.                                             #
227  ############################################################################
228
229    The terminfo(5) manual page must be preprocessed with tbl(1) before
230    being formatted by nroff(1).  Modern man(1) implementations tend to do
231    this by default, but you may want to look at your version's manual page
232    to be sure.  You may also install the manual pages after preprocessing
233    with tbl(1) by specifying the configure option --with-manpage-tbl.
234
235    If the system already has a curses library that you need to keep using
236    you'll need to distinguish between it and ncurses.  See the discussion of
237    --disable-overwrite.  If ncurses is installed outside the standard
238    directories (/usr/include and /usr/lib) then all your users will need to
239    use the -I option to compile programs and -L to link them.
240
241    If you have another curses installed in your system and you accidentally
242    compile using its curses.h you'll end up with a large number of
243    undefined symbols at link time.
244
245    IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory
246    and run the `capconvert' script.  This script will deduce various things
247    about your environment and use them to build you a private terminfo tree,
248    so you can use ncurses applications.
249
250    If more than one user at your site does this, the space for the duplicate
251    trees is wasted.  Try to get your site administrators to install a system-
252    wide terminfo tree instead.
253
254    See the BSD CONVERSION NOTES section below for a few more details.
255
2566.  The c++ directory has C++ classes that are built on top of ncurses and
257    panels.  You must have c++ (and its libraries) installed before you can
258    compile and run the demo.
259
260    Use --without-cxx-binding to tell configure to not build the C++ bindings
261    and demo.
262
263    If you do not have C++, you must use the --without-cxx option to tell
264    the configure script to not attempt to determine the type of 'bool'
265    which may be supported by C++.  IF YOU USE THIS OPTION, BE ADVISED THAT
266    YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++.
267
268
269CONFIGURE OPTIONS:
270-----------------
271
272    The configure script provides a short list of its options when you type
273
274	./configure --help
275
276    The --help and several options are common to all configure scripts that are
277    generated with autoconf.  Those are all listed before the line
278
279	--enable and --with options recognized:
280
281    The other options are specific to this package.  We list them in alphabetic
282    order.
283
284    --disable-assumed-color
285	With ncurses 5.1, we introduced a new function, assume_default_colors()
286	which allows applications to specify what the default foreground and
287	background color are assumed to be.  Most color applications use
288	full-screen color; but a few do not color the background.  While the
289	assumed values can be overridden by invoking assume_default_colors(),
290	you may find it useful to set the assumed values to the pre-5.1
291	convention, using this configure option.
292
293    --disable-big-core
294	Assume machine has little memory.  The configure script attempts to
295	determine if your machine has enough memory (about 6Mb) to compile the
296	terminfo database without writing portions to disk.  Some allocators
297	return deceptive results, so you may have to override the configure
298	script.  Or you may be building tic for a smaller machine.
299
300    --disable-big-strings
301	Disable compile-time optimization of predefined tables which puts
302	all of their strings into a very long string, to reduce relocation
303	overhead.
304
305    --disable-database
306	Use only built-in data.  The ncurses libraries normally read terminfo
307	and termcap data from disk.  You can configure ncurses to have a
308	built-in database, aka "fallback" entries.  Embedded applications may
309	have no need for an external database.  Some, but not all of the
310	programs are useful in this configuration, e.g., tset and tput versus
311	infocmp and tic.
312
313    --disable-db-install
314	Do not install the terminal database.  This is used to omit features
315	for packages, as done with --without-progs.
316
317    --disable-echo
318	Use the option --disable-echo to make the build-log less verbose by
319	suppressing the display of the compile and link commands.  This makes
320	it easier to see the compiler warnings.  (You can always use "make -n"
321	to see the options that are used).
322
323    --disable-ext-funcs
324	Disable function-extensions.  Configure ncurses without the functions
325	that are not specified by XSI.  See ncurses/modules for the exact
326	list of library modules that would be suppressed.
327
328    --disable-gnat-projects
329	Disable GNAT projects even if usable, for testing old makefile rules.
330
331    --disable-hashmap
332	Compile without hashmap scrolling-optimization code.  This algorithm is
333	the default.
334
335    --disable-home-terminfo
336	The $HOME/.terminfo directory is normally added to ncurses' search
337	list for reading/writing terminfo entries, since that directory is
338	more likely writable than the system terminfo database.  Use this
339	option to disable the feature altogether.
340
341    --disable-largefile
342	Disable compiler flags needed to use large-file interfaces.
343
344    --disable-leaks
345	For testing, compile-in code that frees memory that normally would not
346	be freed, to simplify analysis of memory-leaks.
347
348	Any implementation of curses must not free the memory associated with
349	a screen, since (even after calling endwin()), it must be available
350	for use in the next call to refresh().  There are also chunks of
351	memory held for performance reasons.  That makes it hard to analyze
352	curses applications for memory leaks.  To work around this, build a
353	debugging version of the ncurses library which frees those chunks
354	which it can, and provides the _nc_free_and_exit() function to free
355	the remainder and then exit.  The ncurses utility and test programs
356	use this feature, e.g., via the ExitProgram() macro.
357
358	Because this lies outside of the library's intended usage, it is not
359	normally considered part of the ABI.  If there were some (as yet
360	unplanned) extension which frees memory in a manner that would let the
361	library resume and reallocate memory, then that would not use a "_nc_"
362	prefix.
363
364    --disable-lib-suffixes
365	Suppress the "w", "t" or "tw" suffixes which normally would be added
366	to the library names for the --enable-widec and --with-pthread options.
367
368    --disable-libtool-version
369	when using --with-libtool, control how the major/minor version numbers
370	are used for constructing the library name.
371
372	The default uses the -version-number feature of libtool, which makes
373	the library names compatible (though not identical) with the standard
374	build using --with-shared.
375
376	Use --disable-libtool-version to use the libtool -version-info feature.
377	This corresponds to the setting used before patch 20100515.
378
379	Starting with patch 20141115, using this option causes the configure
380	script to apply the top-level VERSION file to the ABI version used
381	for libtool.
382
383    --disable-lp64
384	The header files will ignore use of the _LP64 symbol to make chtype
385	and mmask_t types 32 bits (they may be long on 64-bit hosts, for
386	compatibility with older releases).
387
388	NOTE: this is potentially an ABI change, depending on existing
389	packages.  The default for this option is "disabled" for ncurses
390	ABI 5, and "enabled" for ABI 6.
391
392    --disable-macros
393	For testing, use functions rather than macros.  The program will run
394	more slowly, but it is simpler to debug.  This defines NCURSES_NOMACROS
395	at build time.  See also the --enable-expanded option.
396
397    --disable-overwrite
398	If you are installing ncurses on a system which contains another
399	development version of curses, or which could be confused by the loader
400	for another version, we recommend that you leave out the link to
401	-lcurses.  The ncurses library is always available as -lncurses.
402	Disabling overwrite also causes the ncurses header files to be
403	installed into a subdirectory, e.g., /usr/local/include/ncurses,
404	rather than the include directory.  This makes it simpler to avoid
405	compile-time conflicts with other versions of curses.h
406
407	Putting the header files into a subdirectory assumes that applications
408	will follow the (standard) practice of including the headers with
409	reference to the subdirectory name.  For instance, the normal ncurses
410	header would be included using
411
412		#include <ncurses/curses.h>
413		#include <ncurses/term.h>
414
415	while the ncursesw headers would be found this way:
416
417		#include <ncursesw/curses.h>
418		#include <ncursesw/term.h>
419
420	In either case (with or without the --disable-overwrite option),
421	almost all applications are designed to include a related set of
422	curses header files from the same directory.
423
424	Manipulating the --includedir configure option to put header files
425	directly in a subdirectory of the normal include-directory defeats
426	this, and breaks builds of portable applications.  Likewise, putting
427	some headers in /usr/include, and others in a subdirectory is a good
428	way to break builds.
429
430	When configured with --disable-overwrite, the installed header files'
431	embedded #include's are adjusted to use the same style of includes
432	noted above.  In particular, the unctrl.h header is included from
433	curses.h, which means that a makefile which tells the compiler to
434	include directly from the subdirectory will fail to compile correctly.
435	Without some special effort, it will either fail to compile at all,
436	or the compiler may find a different unctrl.h file.
437
438	In addition to the curses library, a system may provide its own
439	versions of the add-on libraries (form, menu, panel), which would
440	not be compatible with ncurses.  These options allow you to rename
441	ncurses' add-on libraries to avoid conflicts when linking:
442
443		--with-form-libname=XXX
444		--with-menu-libname=XXX
445		--with-panel-libname=XXX
446
447	Rather than renaming them abitrarily, a prefix or suffix is
448	recommended.  An "n" prefix provides consistency with ncurses versus
449	curses, i.e.,
450
451		--with-form-libname=nform
452		--with-menu-libname=nmenu
453		--with-panel-libname=npanel
454
455    --disable-pkg-ldflags
456	Omit options in $EXTRA_LDFLAGS from the pkg-config ".pc" and
457	corresponding ncurses*-config script which normally are listed via
458	the "--libs" option.  These options are normally used to facilitate
459	linking to ncurses when it was configured to use the rpath feature.
460
461	See also --enable-rpath and --disable-rpath-hack.
462
463    --disable-relink
464	If --enable-rpath is given, the generated makefiles normally will
465	rebuild shared libraries during install.  Use this option to simply
466	copy whatever the linker produced.
467
468	Static libraries cannot simply be copied because tools use timestamps
469	to determine if the library's symbol table is up to date.  If your
470	install program supports the "-p" (preserve timestamp) option, that
471	is used when --disable-relink is given, to avoid rebuilding the symbol
472	table.
473
474	Finally, some tools ignore the subsecond timestamps supported by some
475	filesystems.  This option adds a 1-second sleep to help those tools
476	avoid unnecessary relinking during the install process.
477
478    --disable-root-environ
479	Compile with environment restriction, so certain environment variables
480	are not available when running as root, or via a setuid/setgid
481	application.  These are (for example $TERMINFO) those that allow the
482	search path for the terminfo or termcap entry to be customized.
483
484    --disable-rpath-hack
485	Normally the configure script helps link libraries found in unusual
486	places by adding an rpath option to the link command.  If you are
487	building packages, this feature may be redundant.  Use this option
488	to suppress the feature.
489
490    --disable-scroll-hints
491	Compile without scroll-hints code.  This option is ignored when
492	hashmap scrolling is configured, which is the default.
493
494    --disable-stripping
495	Do not strip installed executables.
496
497    --disable-tic-depends
498	When building shared libraries, normally the tic library is linked to
499	depend upon the ncurses library (or equivalently, on the tinfo-library
500	if the --with-termlib option was given).  The tic- and tinfo-library
501	ABIs do not depend on the --enable-widec option.  Some packagers have
502	used this to reduce the number of library files which are packaged by
503	using only one copy of those libraries.  To make this work properly,
504	the tic library must be built without an explicit dependency on the
505	underlying library (ncurses vs ncursesw, tinfo vs tinfow).  Use this
506	configure option to do that.
507	For example
508		configure --with-ticlib --with-shared --disable-tic-depends
509
510    --disable-tparm-varargs
511	Portable programs should call tparm() using the fixed-length parameter
512	list documented in X/Open.  ncurses provides varargs support for this
513	function.  Use --disable-tparm-varargs to disable this support.
514
515    --disable-wattr-macros
516	The 6.0 ABI adds support for extended colors and for extended mouse.
517	The former is a noticeable problem when developers inadvertently
518	compile using the ncurses6 header files and link with an ncurses5
519	library, because the wattr* macros use a new field in the WINDOW
520	structure.  These macros are used in several applications.
521
522	Since ncurses provides an actual function for each of these macros,
523	suppressing them from the curses.h header allows the ncurses5 libraries
524	to be used in most applications.
525
526	NOTE: The extended colors also are used in the cchar_t structure, but
527	fewer applications use that.
528
529	NOTE: This workaround does not help with mismatches in the ncurses
530	mouse version.  The extended mouse feature uses one less fewer bit for
531	each button, so that only the first button will work as expected with
532	a mismatch between header and library.  Again, most applications will
533	work, since most use only the first button.
534
535    --enable-assertions
536	For testing, compile-in assertion code.  This is used only for a few
537	places where ncurses cannot easily recover by returning an error code.
538
539    --enable-broken_linker
540	A few platforms have what we consider a broken linker:  it cannot link
541	objects from an archive solely by referring to data objects in those
542	files, but requires a function reference.  This configure option
543	changes several data references to functions to work around this
544	problem.
545
546	NOTE: With ncurses 5.1, this may not be necessary, since we are
547	told that some linkers interpret uninitialized global data as a
548	different type of reference which behaves as described above.  We have
549	explicitly initialized all of the global data to work around the
550	problem.
551
552    --enable-bsdpad
553	Recognize BSD-style prefix padding.  Some ancient BSD programs (such as
554	nethack) call tputs("50") to implement delays.
555
556    --enable-colorfgbg
557	Compile with experimental $COLORFGBG code.  That environment variable
558	is set by some terminal emulators as a hint to applications, by
559	advertising the default foreground and background colors.  During
560	initialization, ncurses sets color pair 0 to match this.
561
562    --enable-const
563	The curses interface as documented in XSI is rather old, in fact
564	including features that precede ANSI C.  The prototypes generally do
565	not make effective use of "const".  When using stricter compilers (or
566	gcc with appropriate warnings), you may see warnings about the mismatch
567	between const and non-const data.  We provide a configure option which
568	changes the interfaces to use const - quieting these warnings and
569	reflecting the actual use of the parameters more closely.  The ncurses
570	library uses the symbol NCURSES_CONST for these instances of const,
571	and if you have asked for compiler warnings, will add gcc's const-qual
572	warning.  There will still be warnings due to subtle inconsistencies
573	in the interface, but at a lower level.
574
575	NOTE: configuring ncurses with this option may detract from the
576	portability of your applications by encouraging you to use const in
577	places where the XSI curses interface would not allow them.  Similar
578	issues arise when porting to SVr4 curses, which uses const in even
579	fewer places.
580
581    --enable-expanded
582	For testing, generate functions for certain macros to make them visible
583	as such to the debugger.  See also the --disable-macros option.
584
585    --enable-exp-win32
586	When configuring for MinGW, use the experimental Windows 10 driver.
587
588    --enable-ext-colors
589	Extend the cchar_t structure to allow more than 16 colors to be
590	encoded.  This applies only to the wide-character (--enable-widec)
591	configuration.
592
593	NOTE: using this option will make libraries which are not binary-
594	compatible with libncursesw 5.4.  None of the interfaces change, but
595	applications which have an array of cchar_t's must be recompiled.
596
597    --enable-ext-mouse
598	Modify the encoding of mouse state to make room for a 5th mouse button.
599	That allows one to use ncurses with a wheel mouse with xterm or
600	similar X terminal emulators.
601
602	NOTE: using this option will make libraries which are not binary-
603	compatible with libncursesw 5.4.  None of the interfaces change, but
604	applications which have mouse mask mmask_t's must be recompiled.
605
606    --enable-ext-putwin
607	Modify the file-format written by putwin() to use printable text rather
608	than binary files, allowing getwin() to read screen dumps written by
609	differently-configured ncurses libraries.  The extended getwin() can
610	still read binary screen dumps from the "same" configuration of
611	ncurses.  This does not change the ABI (the binary interface seen by
612	calling applications).
613
614    --enable-fvisibility
615    	Use the gcc "-fvisibility=hidden" option to make symbols which are not
616	explicitly exported, "hidden".  Doing this may reduce the number of
617	symbols exported in the C++ binding; it should have less effect on the
618	C libraries when symbol-versioning is used.
619
620    --enable-getcap
621	Use the 4.4BSD getcap code if available, or a bundled version of it to
622	fetch termcap entries.  Entries read in this way cannot use (make
623	cross-references to) the terminfo tree, but it is faster than reading
624	/etc/termcap.
625
626	If configured for one of the *BSD systems, this automatically uses
627	the hashed database system produced using cap_mkdb or similar tools.
628	In that case, there is no advantage in using the --enable-getcap-cache
629	option.
630
631	See also the --with-hashed-db option.
632
633    --enable-getcap-cache
634	Cache translated termcaps under the directory $HOME/.terminfo
635
636	NOTE: this sounds good - it makes ncurses run faster the second time.
637	But look where the data comes from - an /etc/termcap containing lots of
638	entries that are not up to date.  If you configure with this option and
639	forget to install the terminfo database before running an ncurses
640	application, you will end up with a hidden terminfo database that
641	generally does not support color and will miss some function keys.
642
643    --enable-hard-tabs
644	Compile-in cursor-optimization code that uses hard-tabs.  We would make
645	this a standard feature except for the concern that the terminfo entry
646	may not be accurate, or that your stty settings have disabled the use
647	of tabs.
648
649    --enable-interop
650	Compile-in experimental interop bindings.  These provide generic types
651	for the form-library.
652
653    --enable-mixed-case
654	Controls whether the filesystem on which the terminfo database resides
655	supports mixed-case filenames (normal for UNIX, but not on other
656	systems).  If you do not specify this option, the configure script
657	checks the current filesystem.
658
659    --enable-no-padding
660	Compile-in support for the $NCURSES_NO_PADDING environment variable,
661	which allows you to suppress the effect of non-mandatory padding in
662	terminfo entries.  This is the default, unless you have disabled the
663	extended functions.
664
665    --enable-opaque-curses
666    --enable-opaque-form
667    --enable-opaque-menu
668    --enable-opaque-panel
669	Define symbol in curses.h which controls whether some library
670	structures are treated as "opaque".  The --enable-opaque-curses option
671	is overridden by the --enable-reentrant option.
672
673    --enable-pc-files
674	If pkg-config is found (see --with-pkg-config), generate ".pc" files
675	for each of the libraries, and install them in pkg-config's library
676	directory.
677
678    --enable-pthreads-eintr
679	add logic in threaded configuration to ensure that a read(2) system
680	call can be interrupted for SIGWINCH.
681
682    --enable-reentrant
683	Compile configuration which improves reentrant use of the library by
684	reducing global and static variables.  This option is also set if
685	--with-pthread is used.
686
687	Enabling this option adds a "t" to the library names, except for the
688	special case when --enable-weak-symbols is also used.
689
690    --enable-rpath
691	Use rpath option when generating shared libraries, and (with some
692	restrictions) when linking the corresponding programs.  This originally
693	(in 1997) applied mainly to systems using the GNU linker (read the
694	manpage).
695
696	More recently it is useful for systems that require special treatment
697	shared libraries in "unusual" locations.  The "system" libraries reside
698	in directories which are on the loader's default search-path.  While
699	you may be able to use workarounds such as the $LD_LIBRARY_PATH
700	environment variable, they do not work with setuid applications since
701	the LD_LIBRARY_PATH variable would be unset in that situation.
702
703	This option does not apply to --with-libtool, since libtool makes
704	extra assumptions about rpath.
705
706    --enable-safe-sprintf
707	Compile with experimental safe-sprintf code.  You may consider using
708	this if you are building ncurses for a system that has neither
709	vsnprintf() or vsprintf().  It is slow, however, and is used only on
710	very old systems which lack vsnprintf().
711
712    --enable-signed-char
713	The term.h header declares a Booleans[] array typed "char".  But it
714	stores signed values there and "char" is not necessarily signed.
715	Some packagers choose to alter the type of Booleans[] though this
716	is not strictly compatible.  This option allows one to implement this
717	alteration without patching the source code.
718
719    --enable-sigwinch
720	Compile support for ncurses' SIGWINCH handler.  If your application has
721	its own SIGWINCH handler, ncurses will not use its own.  The ncurses
722	handler causes wgetch() to return KEY_RESIZE when the screen-size
723	changes.  This option is the default, unless you have disabled the
724	extended functions.
725
726    --enable-sp-funcs
727	Compile-in support for extended functions which accept a SCREEN pointer,
728	reducing the need for juggling the global SP value with set_term() and
729	delscreen().
730
731    --enable-string-hacks
732	Controls whether strlcat and strlcpy may be used.  The same issue
733	applies to OpenBSD's warnings about snprintf, noting that this function
734	is weakly standardized.
735
736	Aside from stifling these warnings, there is no functional improvement
737	in ncurses.
738
739    --enable-symlinks
740	If your system supports symbolic links, make tic use symbolic links
741	rather than hard links to save diskspace when writing aliases in the
742	terminfo database.
743
744    --enable-tcap-names
745	Compile-in support for user-definable terminal capabilities.  Use the
746	-x option of tic and infocmp to treat unrecognized terminal
747	capabilities as user-defined strings.  This option is the default,
748	unless you have disabled the extended functions.
749
750    --enable-term-driver
751	Enable experimental terminal-driver.  This is currently used for the
752	MinGW port, by providing a way to substitute the low-level terminfo
753	library with different terminal drivers.
754
755    --enable-termcap
756	Compile in support for reading terminal descriptions from termcap if no
757	match is found in the terminfo database.  See also the --enable-getcap
758	and --enable-getcap-cache options.
759
760	Termcap support requires run-time parsing rather than loading
761	predigested data.  If you have specified --with-ticlib, then you
762	cannot have termcap support since run-time parsing is done in the
763	tic library, which is intentionally not part of normal linkage
764	dependencies.
765
766    --enable-warnings
767	Turn on GCC compiler warnings.  There should be only a few.
768
769    --enable-weak-symbols
770	If the --with-pthread option is set, check if the compiler supports
771	weak-symbols.  If it does, then name the thread-capable library without
772	the "t" (libncurses rather than libncursest), and provide for
773	dynamically loading the pthreads entrypoints at runtime.  This allows
774	one to reduce the number of library files for ncurses.
775
776    --enable-wgetch-events
777	Compile with experimental wgetch-events code.  See ncurses/README.IZ
778
779    --enable-widec
780	Compile with wide-character code.  This makes a different version of
781	the libraries (e.g., libncursesw.so), which stores characters as
782	wide-characters,
783
784	NOTE: applications compiled with this configuration are not compatible
785	with those built for 8-bit characters.  You cannot simply make a
786	symbolic link to equate libncurses.so with libncursesw.so
787
788	NOTE: the Ada95 binding may be built against either version of the the
789	ncurses library, but you must decide which:  the binding installs the
790	same set of files for either version.  Currently (2002/6/22) it does
791	not use the extended features from the wide-character code, so it is
792	probably better to not install the binding for that configuration.
793
794    --enable-xmc-glitch
795	Compile-in support experimental xmc (magic cookie) code.
796
797    --with-abi-version=NUM
798	Override the ABI version, which is used in shared library filenames.
799	Normally this is the same as the release version; some ports have
800	special requirements for compatibility.
801
802	This option does not affect linking with libtool, which uses the
803	release major/minor numbers.
804
805    --with-ada-compiler=CMD
806	Specify the Ada95 compiler command (default "gnatmake")
807
808    --with-ada-include=DIR
809	Tell where to install the Ada includes (default:
810	PREFIX/lib/ada/adainclude)
811
812    --with-ada-libname=NAME
813	Override the name of the Ada binding (default: "AdaCurses")
814
815    --with-ada-objects=DIR
816	Tell where to install the Ada objects (default:  PREFIX/lib/ada/adalib)
817
818    --with-ada-sharedlib
819	Build a shared library for Ada95 binding, if the compiler permits.
820
821	NOTE: You must also set the --with-shared option on some platforms
822	for a successful build.  You need not use this option when you set
823	--with-shared, unless you want to use the Ada shared library.
824
825    --with-bool=TYPE
826	If --without-cxx is specified, override the type used for the "bool"
827	declared in curses.h (normally the type is automatically chosen to
828	correspond with that in <stdbool.h>, or defaults to platform-specific
829	sizes).
830
831    --with-build-cc=XXX
832	If cross-compiling, specify a host C compiler, which is needed to
833	compile a few utilities which generate source modules for ncurses.
834	If you do not give this option, the configure script checks if the
835	$BUILD_CC variable is set, and otherwise defaults to gcc or cc.
836
837    --with-build-cflags=XXX
838	If cross-compiling, specify the host C compiler-flags.  You might need
839	to do this if the target compiler has unusual flags which confuse the
840	host compiler.
841
842	You can also set the environment variable $BUILD_CFLAGS rather than
843	use this option.
844
845    --with-build-cpp=XXX
846	This option is provided by the same macro used for $BUILD_CC, etc.,
847	but is not directly used by ncurses.
848
849    --with-build-cppflags=XXX
850	If cross-compiling, specify the host C preprocessor-flags.  You might
851	need to do this if the target compiler has unusual flags which confuse
852	the host compiler.
853
854	You can also set the environment variable $BUILD_CPPFLAGS rather than
855	use this option.
856
857    --with-build-ldflags=XXX
858	If cross-compiling, specify the host linker-flags.  You might need to
859	do this if the target linker has unusual flags which confuse the host
860	compiler.
861
862	You can also set the environment variable $BUILD_LDFLAGS rather than
863	use this option.
864
865    --with-build-libs=XXX
866	If cross-compiling, the host libraries.  You might need to do this if
867	the target environment requires unusual libraries.
868
869	You can also set the environment variable $BUILD_LIBS rather than
870	use this option.
871
872    --with-caps=XXX
873	Specify an alternate terminfo capabilities file, which makes the
874	configure script look for "include/Caps.XXX".  A few systems, e.g.,
875	AIX 4.x use the same overall file-format as ncurses for terminfo
876	data, but use different alignments within the tables to support
877	legacy applications.  For those systems, you can configure ncurses
878	to use a terminfo database which is compatible with the native
879	applications.
880
881    --with-ccharw-max=XXX
882	Override the size of the wide-character array in cchar_t structures.
883	Changing this will alter the binary interface.  This defaults to 5.
884
885    --with-chtype=TYPE
886	Override type of chtype, which stores the video attributes and (if
887	--enable-widec is not given) a character.  Prior to ncurses 5.5, this
888	was always unsigned long, but with ncurses 5.5, it may be unsigned.
889	Use this option if you need to preserve compatibility with 64-bit
890	executables, e.g., by setting "--with-chtype=long" (the configure
891	script supplies "unsigned").
892
893    --with-config-suffix=XXX
894	Specify a suffix for the ncursesw6-config file, etc., used to work
895	around conflicts with packages.
896
897    --with-cxx-libname=NAME
898	Override the basename of the ncurses++ library (default: "ncurses++")
899
900    --with-cxx-shared
901	When --with-shared is set, build libncurses++ as a shared library.
902	This implicitly relies upon building with gcc/g++, since other
903	compiler suites may have differences in the way shared libraries are
904	built.  libtool by the way has similar limitations.
905
906    --with-database=XXX
907	Specify the terminfo source file to install.  Usually you will wish
908	to install ncurses' default (misc/terminfo.src).  Certain systems
909	have special requirements, e.g, OS/2 EMX has a customized terminfo
910	source file.
911
912    --with-dbmalloc
913	For testing, compile and link with Conor Cahill's dbmalloc library.
914	This also sets the --disable-leaks option.
915
916    --with-debug
917	Generate debug-libraries (default).  These are named by adding "_g"
918	to the root, e.g., libncurses_g.a
919
920    --with-default-terminfo-dir=XXX
921	Specify the default terminfo database directory.  This is normally
922	DATADIR/terminfo, e.g., /usr/share/terminfo.
923
924    --with-dmalloc
925	For testing, compile and link with Gray Watson's dmalloc library.
926	This also sets the --disable-leaks option.
927
928    --with-export-syms[=XXX]
929	Limit exported symbols using libtool.  The configure script
930	automatically chooses an appropriate ".sym" file, which lists the
931	symbols which are part of the ABI.
932
933    --with-extra-suffix[=XXX]
934	Add the given suffix to header- and library-names to simplify
935	installing incompatible ncurses libraries, e.g., those using a
936	different ABI.  The renaming affects the name of the
937	include-subdirectory if --disable-overwrite is given.
938
939    --with-fallbacks=XXX
940	Specify a list of fallback terminal descriptions which will be
941	compiled into the ncurses library.  See CONFIGURING FALLBACK ENTRIES.
942
943	See also "--with-tic-path" and "--with-infocmp-path".
944
945    --with-form-libname=NAME
946	Override the basename of the form library (default: "form")
947
948    --with-gpm
949	use Alessandro Rubini's GPM library to provide mouse support on the
950	Linux console.  Prior to ncurses 5.5, this introduced a dependency on
951	the GPM library.
952
953	Currently ncurses uses the dlsym() function to bind to the library at
954	runtime, so it is only necessary that the library be present when
955	ncurses is built, to obtain the filename (or soname) used in the
956	corresponding dlopen() call.  If you give a value for this option,
957	e.g.,
958
959		--with-gpm=$HOME/tmp/test-gpm.so
960
961	that overrides the configure check for the soname.
962
963	See also --without-dlsym
964
965    --with-hashed-db[=XXX]
966	Use a hashed database for storing terminfo data rather than storing
967	each compiled entry in a separate binary file within a directory
968	tree.
969
970	In particular, this uses the Berkeley database 1.8.5 interface, as
971	provided by that and its successors db 2, 3, and 4.  The actual
972	interface is slightly different in the successor versions of the
973	Berkeley database.  The database should have been configured using
974	"--enable-compat185".
975
976	If you use this option for configuring ncurses, tic will only be able
977	to write entries in the hashed database.  infocmp can still read
978	entries from a directory tree as well as reading entries from the
979	hashed database.  To do this, infocmp determines whether the $TERMINFO
980	variable points to a directory or a file, and reads the directory-tree
981	or hashed database respectively.
982
983	You cannot have a directory containing both hashed-database and
984	filesystem-based terminfo entries.
985
986	Use the parameter value to give the install-prefix used for the
987	database, e.g.,
988		--with-hashed-db=/usr/local/BigBase
989	to find the corresponding include- and lib-directories under the
990	given directory.  Alternatively, you can specify a directory leaf
991	name, e.g.,
992		--with-hashed-db=db4
993	to make the configure script look for files in a subdirectory such as
994		/usr/include/db4/db.h
995		/usr/lib/db4/libdb.so
996
997	See also the --enable-getcap option.
998
999    --with-infocmp-path[=XXX]
1000	Use this option to override the automatic detection of tic in your
1001	$PATH when building fallbacks (see "--with-fallbacks").
1002
1003    --with-install-prefix=XXX
1004	Allows you to specify an alternate location for installing ncurses
1005	after building it.  The value you specify is prepended to the "real"
1006	install location.  This simplifies making binary packages.  The
1007	makefile variable DESTDIR is set by this option.  It is also possible
1008	to use
1009		make install DESTDIR=XXX
1010	since the makefiles pass that variable to subordinate makes.
1011
1012	NOTE: a few systems build shared libraries with fixed pathnames; this
1013	option probably will not work for those configurations.
1014
1015    --with-lib-prefix=XXX
1016	OS/2 EMX used a different naming convention from most Unix-like
1017	platforms.  It required that the "lib" part of a library name was
1018	omitted.  Newer EMX as part of eComStation does not follow that
1019	convention.  Use this option to override the configure script's
1020	assumptions about the library-prefix.  If this option is omitted, it
1021	uses the original OS/2 EMX convention for that platform.  Use
1022	"--with-lib-prefix=lib" for the newer EMX in eComStation.  Use
1023	"--without-lib-prefix" to suppress it for other odd platforms.
1024
1025    --with-libtool[=XXX]
1026	Generate libraries with libtool.  If this option is selected, then it
1027	overrides all other library model specifications.  Note that libtool
1028	must already be installed, uses makefile rules dependent on GNU make,
1029	and does not promise to follow the version numbering convention of
1030	other shared libraries on your system.  However, if the --with-shared
1031	option does not succeed, you may get better results with this option.
1032
1033	If a parameter value is given, it must be the full pathname of the
1034	particular version of libtool, e.g.,
1035		/usr/bin/libtool-1.2.3
1036
1037	It is possible to rebuild the configure script to use the automake
1038	macros for libtool, e.g., AC_PROG_LIBTOOL.  See the comments in
1039	aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure
1040	using the appropriate patch for autoconf from
1041		https://invisible-island.net/autoconf/
1042
1043    --with-libtool-opts=XXX
1044	Allow user to pass additional libtool options into the library creation
1045	and link steps.  The main use for this is to do something like
1046		./configure --with-libtool-opts=-static
1047	to get the same behavior as automake-flavored
1048		./configure --enable-static
1049
1050    --with-manpage-aliases
1051	Tell the configure script you wish to create entries in the
1052	man-directory for aliases to manpages which list them, e.g., the
1053	functions in the panel manpage.  This is the default.  You can disable
1054	it if your man program does this.  You can also disable
1055	--with-manpage-symlinks to install files containing a ".so" command
1056	rather than symbolic links.
1057
1058    --with-manpage-format=XXX
1059	Tell the configure script how you would like to install man-pages.  The
1060	option value must be one of these:  gzip, compress, BSDI, normal,
1061	formatted.  If you do not give this option, the configure script
1062	attempts to determine which is the case.
1063
1064    --with-manpage-renames=XXX
1065	Tell the configure script that you wish to rename the manpages while
1066	installing.  Currently the only distribution which does this is Debian.
1067	The option value specifies the name of a file that lists the renamed
1068	files, e.g., $srcdir/man/man_db.renames
1069
1070    --with-manpage-symlinks
1071	Tell the configure script that you wish to make symbolic links in the
1072	man-directory for aliases to the man-pages.  This is the default, but
1073	can be disabled for systems that provide this automatically.  Doing
1074	this on systems that do not support symbolic links will result in
1075	copying the man-page for each alias.
1076
1077    --with-manpage-tbl
1078	Tell the configure script that you wish to preprocess the manpages
1079	by running them through tbl to generate tables understandable by
1080	nroff.
1081
1082    --with-menu-libname=NAME
1083	Override the basename of the menu library (default: "menu")
1084
1085    --with-mmask-t=TYPE
1086	Override type of mmask_t, which stores the mouse mask.  Prior to
1087	ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it
1088	may be unsigned.  Use this option if you need to preserve compatibility
1089	with 64-bit executables.
1090
1091    --with-normal
1092	Generate normal (i.e., static) libraries (default).
1093
1094	Note:  on Linux, the configure script will attempt to use the GPM
1095	library via the dlsym() function call.  Use --without-dlsym to disable
1096	this feature, or --without-gpm, depending on whether you wish to use
1097	GPM.
1098
1099    --with-ospeed=TYPE
1100	Override type of ospeed variable, which is part of the termcap
1101	compatibility interface.  In termcap, this is a 'short', which works
1102	for a wide range of baudrates because ospeed is not the actual speed
1103	but the encoded value, e.g., B9600 would be a small number such as 13.
1104	However the encoding scheme originally allowed for values "only" up to
1105	38400bd.  A newer set of definitions past 38400bd is not encoded as
1106	compactly, and is not guaranteed to fit into a short (see the function
1107	cfgetospeed(), which returns a speed_t for this reason).  In practice,
1108	applications that required knowledge of the ospeed variable, i.e.,
1109	those using termcap, do not use the higher speeds.  Your application
1110	(or system, in general) may or may not.
1111
1112    --with-panel-libname=NAME
1113	Override the basename of the panel library (default: "panel")
1114
1115    --with-pc-suffix=SUFFIX
1116	If ".pc" files are installed, optionally add a suffix to the files
1117	and corresponding package names to separate unusual configurations.
1118	If no option value is given (or if it is "none"), no suffix is added.
1119
1120    --with-pcre2
1121	Add PCRE2 (Perl-compatible regular expressions v2) to the build if it
1122	is available and the user requests it.  Assume the application will
1123	otherwise use the POSIX interface.
1124
1125	This is useful for MinGW builds because the usual POSIX interface is
1126	not supplied by the development environment, while ncurses' form
1127	library uses a regular expression feature for one of the field types.
1128
1129    --with-pkg-config=[DIR]
1130	Check for pkg-config, optionally specifying its path.
1131
1132    --with-pkg-config-libdir=[DIR]
1133	If pkg-config was found, override the automatic check for its library
1134	path.
1135
1136    --with-profile
1137	Generate profile-libraries These are named by adding "_p" to the root,
1138	e.g., libncurses_p.a
1139
1140    --with-pthread
1141	Link with POSIX threads, set --enable-reentrant.  The use_window() and
1142	use_screen() functions will use mutex's, allowing rudimentary support
1143	for multithreaded applications.
1144
1145    --with-rcs-ids
1146	Compile-in RCS identifiers.  Most of the C files have an identifier.
1147
1148    --with-rel-version=NUM
1149	Override the release version, which may be used in shared library
1150	filenames.  This consists of a major and minor version number separated
1151	by ".".  Normally the major version number is the same as the ABI
1152	version; some ports have special requirements for compatibility.
1153
1154    --with-shared
1155	Generate shared-libraries.  The names given depend on the system for
1156	which you are building, typically using a ".so" suffix, along with
1157	symbolic links that refer to the release version.
1158
1159	NOTE: Unless you override the configure script by setting the $CFLAGS
1160	environment variable, these will not be built with the -g debugging
1161	option.
1162
1163	NOTE: For some configurations, e.g., installing a new version of
1164	ncurses shared libraries on a machine which already has ncurses
1165	shared libraries, you may encounter problems with the linker.
1166	For example, it may prevent you from running  the build tree's
1167	copy of tic (for installing the terminfo database) because it
1168	loads the system's copy of the ncurses shared libraries.
1169
1170	In that case, using the misc/shlib script may be helpful, since it
1171	sets $LD_LIBRARY_PATH to point to the build tree, e.g.,
1172
1173		./misc/shlib make install
1174
1175	Alternatively, for most platforms, the linker accepts a list of
1176	directories which will be searched for libraries at run-time.  The
1177	configure script allows you to modify this list using the
1178	RPATH_LIST environment variable.  It is a colon-separated list of
1179	directories (default:  the "libdir" set via the configure script).
1180	If you set that to put "../lib" first in the list, the linker will
1181	look first at the build-directory, and avoid conflict with libraries
1182	already installed.  One drawback to this approach is that libraries
1183	can be accidentally searched in any "../lib" directory.
1184
1185	NOTE: If you use the --with-ada-sharedlib option, you should also
1186	set this option, to ensure that C-language modules needed for the
1187	Ada binding use appropriate compiler options.
1188
1189    --with-shlib-version=XXX
1190	Specify whether to use the release or ABI version for shared libraries.
1191	This is normally chosen automatically based on the type of system
1192	which you are building on.  We use it for testing the configure script.
1193
1194    --with-sysmouse
1195	use FreeBSD sysmouse interface provide mouse support on the console.
1196
1197    --with-system-type=XXX
1198	For testing, override the derived host system-type which is used to
1199	decide things such as the linker commands used to build shared
1200	libraries.  This is normally chosen automatically based on the type of
1201	system which you are building on.  We use it for testing the configure
1202	script.
1203
1204    --with-terminfo-dirs=XXX
1205	Specify a search-list of terminfo directories which will be compiled
1206	into the ncurses library (default: DATADIR/terminfo)
1207
1208	This is a colon-separated list, like the TERMINFO_DIRS environment
1209	variable.
1210
1211    --with-termlib[=XXX]
1212	When building the ncurses library, organize this as two parts:  the
1213	curses library (libncurses) and the low-level terminfo library
1214	(libtinfo).  This is done to accommodate applications that use only
1215	the latter.  The terminfo library is about half the size of the total.
1216
1217	If an option value is given, that overrides the name of the terminfo
1218	library.  For instance, if the wide-character version is built, the
1219	terminfo library would be named libtinfow.  But the libtinfow interface
1220	is upward compatible from libtinfo, so it would be possible to overlay
1221	libtinfo.so with a "wide" version of libtinfow.so by renaming it with
1222	this option.
1223
1224    --with-termpath=XXX
1225	Specify a search-list of termcap files which will be compiled into the
1226	ncurses library (default:  /etc/termcap:/usr/share/misc/termcap)
1227
1228    --with-tic-path[=XXX]
1229	Use this option to override the automatic detection of tic in your
1230	$PATH when building fallbacks (see "--with-fallbacks").
1231
1232    --with-ticlib[=XXX]
1233	When building the ncurses library, build a separate library for
1234	the modules that are used only by the utility programs.  Normally
1235	those would be bundled with the termlib or ncurses libraries.
1236
1237	If an option value is given, that overrides the name of the tic
1238	library.  As in termlib, there is no ABI difference between the
1239	"wide" libticw.so and libtic.so
1240
1241	NOTE: Overriding the name of the tic library may be useful if you are
1242	also using the --with-termlib option to rename libtinfo.  If you are
1243	not doing that, renaming the tic library can result in conflicting
1244	library dependencies for tic and other programs built with the tic
1245	library.
1246
1247    --with-tparm-arg[=XXX]
1248	Override the type used for tparm() arguments, which normally is a
1249	"long".  However the function must assume that its arguments can hold a
1250	pointer to char's which is not always workable for 64-bit platforms.  A
1251	better choice would be intptr_t, which was not available at the time
1252	tparm's interface was defined.
1253
1254	If the option is not given, this defaults to "long".
1255
1256    --with-trace
1257	Configure the trace() function as part of the all models of the ncurses
1258	library.  Normally it is part of the debug (libncurses_g) library only.
1259
1260    --with-valgrind
1261	For testing, compile with debug option.
1262	This also sets the --disable-leaks option.
1263
1264    --with-versioned-syms[=XXX]
1265	The Solaris, GNU and reportedly some other linkers (ld) accept a
1266	"--version-script" option which tells the linker to annotate the
1267	resulting objects with version identifiers.
1268
1269	Use "objdump -T" on a library to see the annotations.
1270
1271	The configure script attempts to automatically apply a suitable ".map"
1272	file to provide this information for Linux.  Solaris mapfiles differ:
1273
1274	a) comments are not accepted
1275	b) wildcards are not accepted, except for a special case of "_*".
1276	c) each symbol listed in the map file must exist in the library
1277
1278	The Solaris limitations conflict with the development goal of providing
1279	a small set of ".map" files as examples, which cover the most common
1280	configurations.  Because that coverage is done by merging together
1281	several builds, some symbols will be listed in the the ".map" files
1282	that do not happen to be present in one configuration or another.
1283
1284	The sample ".map" (and ".sym") files are generated using a set of
1285	scripts which build several configurations for each release version,
1286	checking to see which of the "_nc_" symbols can be made local.  In
1287	addition to the ncurses libraries and programs, the symbols used
1288	by the "tack" program before version 1.08 are made global.
1289
1290	These sample ".map" files will not cover all possible combinations.
1291	In some cases, e.g., when using the --with-weak-symbols option, you
1292	may prefer to use a different ".map" file by setting this option's
1293	value.
1294
1295    --with-wrap-prefix=XXX
1296	When using the --enable-reentrant option, ncurses redefines variables
1297	that would be global in curses, e.g., LINES, as a macro that calls a
1298	"wrapping" function which fetches the data from the current SCREEN
1299	structure.  Normally that function is named by prepending "_nc_" to the
1300	variable's name.  The function is technically private (since portable
1301	applications would not refer directly to it).  But according to one
1302	line of reasoning, it is not the same type of "private" as functions
1303	which applications should not call even via a macro.  This configure
1304	option lets you choose the prefix for these wrapped variables.
1305
1306    --with-x11-rgb=FILE
1307	Provide a pathname for the X11 rgb file, used by the picsmap program.
1308	This overrides a configure check which usually works, but is needed
1309	due to the lack of standardization for X11's files.
1310
1311    --with-xterm-kbs=XXX
1312	Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII
1313	backspace) or DEL (^?, or 127).  XXX can be BS (or bs, 8) or DEL
1314	(or del, 127).
1315
1316	During installation, the makefile and scripts modifies the "xterm+kbs"
1317	terminfo entry to use this setting.
1318
1319    --without-ada
1320	Suppress the configure script's check for Ada95, do not build the
1321	Ada95 binding and related demo.
1322
1323    --without-curses-h
1324	Don't install the ncurses header with the name "curses.h".  Rather,
1325	install as "ncurses.h" and modify the installed headers and manpages
1326	accordingly.
1327
1328	Likewise, do not install an alias "curses" for the ncurses manpage.
1329
1330    --without-cxx
1331	XSI curses declares "bool" as part of the interface.  C++ also declares
1332	"bool".  Neither specifies the size and type of booleans, but both
1333	insist on the same name.  We chose to accommodate this by making the
1334	configure script check for the size and type (e.g., unsigned or signed)
1335	that your C++ compiler uses for booleans.  If you do not wish to use
1336	ncurses with C++, use this option to tell the configure script to not
1337	adjust ncurses bool to match C++.
1338
1339    --without-cxx-binding
1340	Suppress the configure script's check for C++, do not build the
1341	C++ binding and related demo.
1342
1343    --without-develop
1344	Disable development options.  This does not include those that change
1345	the interface, such as --enable-widec.
1346
1347    --without-dlsym
1348	Do not use dlsym() to load GPM dynamically.
1349
1350    --without-manpages
1351	Tell the configure script to suppress the install of ncurses' manpages.
1352
1353    --without-progs
1354	Tell the configure script to suppress the build of ncurses' application
1355	programs (e.g., tic).  The test applications will still be built if you
1356	type "make", though not if you simply do "make install".
1357
1358    --without-tack
1359	Suppress build/install with tack program, if it happens to be
1360	in the same build-tree (tack was moved out of the ncurses source-tree
1361	in 20070203).
1362
1363    --without-tests
1364	Tell the configure script to suppress the build of ncurses' test
1365	programs.
1366
1367    --without-xterm-new
1368	Tell the configure script to use "xterm-old" for the entry used in
1369	the terminfo database.  This will work with variations such as
1370	X11R5 and X11R6 xterm.
1371
1372
1373COMPATIBILITY WITH OLDER RELEASES:
1374---------------------------------
1375
1376    Because ncurses implements X/Open Curses, its interface is fairly stable.
1377    That does not mean the interface does not change.  Changes are made to the
1378    documented interfaces when we find differences between ncurses and X/Open
1379    or implementations which largely correspond to X/Open (such as Solaris).
1380    We add extensions to those interfaces to solve problems not addressed by
1381    the original curses design, but those must not conflict with the X/Open
1382    documentation.
1383
1384    Here are some of the major interface changes, and related problems which
1385    you may encounter when building a system with different versions of
1386    ncurses:
1387
1388    6.2 (Feb 12, 2020)
1389	Interface changes:
1390
1391	+ the terminal database must be compiled with ncurses 6.2 tic;
1392	  older versions of tic/infocmp will not work.  Aside from that,
1393	  the compiled database will work with older applications.
1394
1395	+ "*.pc" and "ncurses*-config" files give the same information.
1396
1397	+ vwprintw and vwscanw are deprecated.
1398
1399	Added extensions:
1400
1401	+ These make it simpler to substitute a debug-configuration of the
1402	  library for non-debug:
1403		curses_trace
1404		exit_curses
1405		exit_terminfo
1406
1407	Added internal functions (other than "_sp" variants):
1408
1409	+ These provide fast-lookup of common user-defined capabilities:
1410		_nc_find_user_entry
1411		_nc_get_userdefs_table
1412		_nc_get_hash_user
1413
1414	+ This is added to work around compiler-warnings:
1415		_nc_fmt_funcptr
1416
1417	Removed internal functions:
1418
1419	+ _nc_import_termtype
1420
1421	Modified internal functions:
1422
1423	+ _nc_reserve_pairs no longer returns a value
1424
1425    6.1 (Jan 27, 2018)
1426	Interface changes:
1427
1428	+ X/Open Curses specifies a "reserved" void* parameter in several
1429	  functions, saying that it must be NULL.  In this release, if the
1430	  parameter is non-NULL, it is interpreted as a point to an integer
1431	  containing a color pair.  In previous releases, a non-NULL parameter
1432	  caused an error return.  Portable applications are unaffected.  Here
1433	  are the functions which have been extended:
1434		attr_get
1435		attr_off
1436		attr_on
1437		attr_set
1438		chgat
1439		color_set
1440		mvchgat
1441		mvwchgat
1442		slk_attr_off
1443		slk_attr_on
1444		slk_attr_set
1445		wattr_get
1446		wattr_on
1447		wattr_off
1448		wattr_set
1449		wchgat
1450		wcolor_set
1451
1452	+ the TERMINAL structure declared in <term.h> has been made opaque,
1453	  and its size increased to handle the increased size of color pair
1454	  and color value, as well as other numeric capabilities.
1455
1456	  A few applications required change, e.g., to use def_prog_mode;
1457	  only one application (tack) is known to have a valid reason for
1458	  accessing these internal details, and that was addressed by the
1459	  release of tack 1.08 in 2017.  Internal functions marked as used
1460	  by tack will be deprecated in future releases.
1461
1462	Added extensions:
1463
1464	+ Several new functions were added to manipulate extended color pairs
1465	  and color values.  These include:
1466		alloc_pair
1467		extended_color_content
1468		extended_pair_content
1469		extended_slk_color
1470		find_pair
1471		free_pair
1472		init_extended_color
1473		init_extended_pair
1474		reset_color_pairs
1475
1476	  as well as corresponding sp-functions.
1477
1478	+ A new terminfo capability "RGB" tells the ncurses library that the
1479	  color values are red/green/blue, to eliminate the need for palettes
1480	  in that special case for the color_content function.
1481
1482	Added internal functions (other than "_sp" variants):
1483		_nc_copy_termtype2
1484		_nc_export_termtype2
1485		_nc_fallback2
1486		_nc_find_prescr
1487		_nc_forget_prescr
1488		_nc_free_termtype2
1489		_nc_read_entry2
1490		_nc_write_object
1491
1492	Removed internal functions:
1493		_nc_check_termtype
1494		_nc_resolve_uses
1495
1496	Modified internal functions:
1497
1498	+ symbols are used by tic/infocmp/toe:
1499		_nc_align_termtype - change parameters to TERMTYPE2*
1500		_nc_check_termtype2 - change parameter to TERMTYPE2*
1501		_nc_read_file_entry - change parameter to TERMTYPE2*
1502		_nc_read_termtype - change parameter to TERMTYPE2*
1503		_nc_trim_sgr0 - change parameter to TERMTYPE2*
1504		_nc_write_entry - change parameter to TERMTYPE2*
1505
1506	+ symbols used only within the library:
1507		_nc_fallback - change return type to TERMTYPE2*
1508		_nc_init_termtype - change parameter to TERMTYPE2*
1509
1510    6.0 (Aug 08, 2015)
1511	Interface changes:
1512
1513	+ The 6.0 ABI modifies the defaults for these configure options:
1514	   --enable-const
1515	   --enable-ext-colors
1516	   --enable-ext-mouse
1517	   --enable-ext-putwin
1518	   --enable-interop
1519	   --enable-lp64
1520	   --enable-sp-funcs
1521	   --with-chtype=uint32_t
1522	   --with-mmask_t=uint32_t
1523	   --with-tparm-arg=intptr_t
1524
1525	+ ncurses supports symbol versioning.  If you use this feature, about
1526	  half of the "_nc_" private symbols are changed to local symbols.
1527
1528	+ a few applications may need to explicitly flush the standard output
1529	  when switching between printf's and (curses) printw.
1530
1531	Added extensions:
1532
1533	+ use_tioctl is an improvement over use_env
1534
1535	+ added wgetdelay to support the NCURSES_OPAQUE feature.
1536
1537	Added internal functions (other than "_sp" variants):
1538		_nc_init_termtype
1539		_nc_mvcur
1540		_nc_putchar
1541		_nc_setenv_num
1542		_nc_trace_mmask_t
1543
1544	Removed internal functions:
1545		none
1546
1547	Modified internal functions:
1548		_nc_do_color - change parameters from short/bool to int
1549		_nc_keypad - change parameter from bool to int
1550		_nc_setupscreen - change parameter from bool to int
1551		_nc_signal_handler - change parameter from bool to int
1552
1553    5.9 (Apr 04, 2011)
1554    5.8 (Feb 26, 2011)
1555	Interface changes:
1556
1557	+ add an alternate library configuration, i.e., "terminal driver" to
1558	  support port to Windows, built with MinGW.  There are two drivers
1559	  (terminfo and Windows console).  The terminfo driver works on other
1560	  platforms.
1561
1562	+ add a new set of functions which accept a SCREEN* parameter, in
1563	  contrast with the original set which use the global value "sp".
1564	  By default, these names end with "_sp", and are otherwise
1565	  functionally identical with the originals.
1566
1567	  In addition to the "_sp" functions, there are a few new functions
1568	  associated with this feature:  ceiling_panel, ground_panel,
1569	  new_prescr.
1570
1571	  If the library is not built with the sp-funcs extension, there
1572	  are no related interface changes.
1573
1574	+ add tiparm function based on review of X/Open Curses Issue 7.
1575
1576	+ change internal _nc_has_mouse function to public has_mouse function
1577
1578	Added extensions:
1579
1580	+ add a few more functions to support the NCURSES_OPAQUE feature:
1581	  get_escdelay, is_pad, is_subwin
1582
1583	Added internal functions (other than "_sp" variants):
1584		_nc_curscr_of
1585		_nc_format_slks
1586		_nc_get_alias_table
1587		_nc_get_hash_info
1588		_nc_insert_wch
1589		_nc_newscr_of
1590		_nc_outc_wrapper
1591		_nc_retrace_char
1592		_nc_retrace_int_attr_t
1593		_nc_retrace_mmask_t
1594		_nc_setup_tinfo
1595		_nc_stdscr_of
1596		_nc_tinfo_cmdch
1597
1598	Removed internal functions:
1599		_nc_makenew (some configurations replace by _nc_makenew_sp)
1600
1601	Modified internal functions:
1602		_nc_UpdateAttrs
1603		_nc_get_hash_table
1604		_nc_has_mouse
1605		_nc_insert_ch
1606		_nc_wgetch
1607
1608    5.7 (November 2, 2008)
1609	Interface changes:
1610
1611	+ generate linkable stubs for some macros:
1612		getattrs
1613
1614	+ Add new library configuration for tic-library (the non-curses portion
1615	  of the ncurses library used for the tic program as well as some
1616	  others such as tack.  There is no API change, but makefiles would be
1617	  changed to use the tic-library built separately.
1618
1619	  tack, distributed separately from ncurses, uses some of the internal
1620	  _nc_XXX functions, which are declared in the tic.h header file.
1621
1622	  The reason for providing this separate library is that none of the
1623	  functions in it are suitable for threaded applications.
1624
1625	+ Add new library configuration (ncursest, ncurseswt) which provides
1626	  rudimentary support for POSIX threads.  This introduces opaque
1627	  access functions to the WINDOW structure and adds a parameter to
1628	  several internal functions.
1629
1630	+ move most internal variables (except tic-library) into data blocks
1631	  _nc_globals and _nc_prescreen to simplify analysis.  Those were
1632	  globally accessible, but since they were not part of the documented
1633	  API, there is no ABI change.
1634
1635	+ changed static tables of strings to be indices into long strings, to
1636	  improve startup performance.  This changes parameter lists for some
1637	  of the internal functions.
1638
1639	Added extensions:
1640
1641	+ add NCURSES_OPAQUE definition in curses.h to control whether internal
1642	  details of the WINDOW structure are visible to an application.  This
1643	  is always defined when the threaded library is built, and is optional
1644	  otherwise.  New functions for this:  is_cleared, is_idcok, is_idlok,
1645	  is_immedok, is_keypad, is_leaveok, is_nodelay, is_notimeout,
1646	  is_scrollok, is_syncok, wgetparent and wgetscrreg.
1647
1648	+ the threaded library (ncursest) also disallows direct updating of
1649	  global curses-level variables, providing functions (via macros) for
1650	  obtaining their value.  A few of those variables can be modified by
1651	  the application, using new functions:  set_escdelay, set_tabsize
1652
1653	+ added functions use_window() and use_screen() which wrap a mutex
1654	  (if threading is configured) around a call to a user-supplied
1655	  function.
1656
1657	Added internal functions:
1658		_nc_get_alias_table
1659		_nc_get_screensize
1660		_nc_keyname
1661		_nc_screen_of
1662		_nc_set_no_padding
1663		_nc_tracechar
1664		_nc_tracemouse
1665		_nc_unctrl
1666		_nc_ungetch
1667
1668		These are used for leak-testing, and are stubs for
1669		ABI compatibility when ncurses is not configured for that
1670		using the --disable-leaks configure script option:
1671
1672		_nc_free_and_exit
1673		_nc_leaks_tinfo
1674
1675	Removed internal functions:
1676		none
1677
1678	Modified internal functions:
1679		_nc_fifo_dump
1680		_nc_find_entry
1681		_nc_handle_sigwinch
1682		_nc_init_keytry
1683		_nc_keypad
1684		_nc_locale_breaks_acs
1685		_nc_timed_wait
1686		_nc_update_screensize
1687
1688		Use new typedef TRIES to replace "struct tries":
1689
1690		_nc_add_to_try
1691		_nc_expand_try
1692		_nc_remove_key
1693		_nc_remove_string
1694		_nc_trace_tries
1695
1696    5.6 (December 17, 2006)
1697	Interface changes:
1698
1699	+ generate linkable stubs for some macros:
1700
1701	  getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx,
1702	  getpary, getpary,
1703
1704	  and (for libncursesw)
1705
1706	  wgetbkgrnd
1707
1708	Added extensions:
1709		nofilter()
1710		use_legacy_coding()
1711
1712	Added internal functions:
1713		_nc_first_db
1714		_nc_get_source
1715		_nc_handle_sigwinch
1716		_nc_is_abs_path
1717		_nc_is_dir_path
1718		_nc_is_file_path
1719		_nc_keep_tic_dir
1720		_nc_keep_tic_dir
1721		_nc_last_db
1722		_nc_next_db
1723		_nc_read_termtype
1724		_nc_tic_dir
1725
1726		Also (if using the hashed database configuration):
1727
1728		_nc_db_close
1729		_nc_db_first
1730		_nc_db_get
1731		_nc_db_have_data
1732		_nc_db_have_index
1733		_nc_db_next
1734		_nc_db_open
1735		_nc_db_put
1736
1737		otherwise
1738
1739		_nc_hashed_db
1740
1741	Removed internal functions:
1742		none
1743
1744	Modified internal functions:
1745		_nc_add_to_try
1746		_nc_do_color
1747		_nc_expand_try
1748		_nc_remove_key
1749		_nc_setupscreen
1750
1751    5.5 (October 10, 2005)
1752	Interface changes:
1753
1754	+ terminfo installs "xterm-new" as "xterm" entry rather than
1755	  "xterm-old" (aka xterm-r6).
1756
1757	+ terminfo data is installed using the tic -x option (few systems
1758	  still use ncurses 4.2).
1759
1760	+ modify C++ binding to work with newer C++ compilers by providing
1761	  initializers and using modern casts.  Old-style header names are
1762	  still used in this release to allow compiling with not-so-old
1763	  compilers.
1764
1765	+ form and menu libraries now work with wide-character data.
1766	  Applications which bypassed the form library and manipulated the
1767	  FIELD.buf data directly will not work properly with libformw, since
1768	  that no longer points to an array of char.  The set_field_buffer()
1769	  and field_buffer() functions translate to/from the actual field
1770	  data.
1771
1772	+ change SP->_current_attr to a pointer, adjust ifdef's to ensure that
1773	  libtinfo.so and libtinfow.so have the same ABI.  The reason for this
1774	  is that the corresponding data which belongs to the upper-level
1775	  ncurses library has a different size in each model.
1776
1777	+ winnstr() now returns multibyte character strings for the
1778	  wide-character configuration.
1779
1780	+ assume_default_colors() no longer requires that use_default_colors()
1781	  be called first.
1782
1783	+ data_ahead() now works with wide-characters.
1784
1785	+ slk_set() and slk_wset() now accept and store multibyte or
1786	  multicolumn characters.
1787
1788	+ start_color() now returns OK if colors have already been started.
1789	  start_color() also returns ERR if it cannot allocate memory.
1790
1791	+ pair_content() now returns -1 for consistency with init_pair() if it
1792	  corresponds to the default-color.
1793
1794	+ unctrl() now returns null if its parameter does not correspond
1795	  to an unsigned char.
1796
1797	Added extensions:
1798		Experimental mouse version 2 supports wheel mice with buttons
1799		4 and 5.  This requires ABI 6 because it modifies the encoding
1800		of mouse events.
1801
1802		Experimental extended colors allows encoding of 256 foreground
1803		and background colors, e.g., with the xterm-256color or
1804		xterm-88color terminfo entries.  This requires ABI 6 because
1805		it changes the size of cchar_t.
1806
1807	Added internal functions:
1808		_nc_check_termtype2
1809		_nc_resolve_uses2
1810		_nc_retrace_cptr
1811		_nc_retrace_cvoid_ptr
1812		_nc_retrace_void_ptr
1813		_nc_setup_term
1814
1815	Removed internal functions:
1816		none
1817
1818	Modified internal functions:
1819		_nc_insert_ch
1820		_nc_save_str
1821		_nc_trans_string
1822
1823    5.4 (February 8, 2004)
1824	Interface changes:
1825
1826	+ add the remaining functions for X/Open curses wide-character support.
1827	  These are only available if the library is configured using the
1828	  --enable-widec option.
1829		pecho_wchar()
1830		slk_wset()
1831
1832	+ write getyx() and related 2-return macros in terms of getcury(),
1833	  getcurx(), etc.
1834
1835	+ simplify ifdef for bool declaration in curses.h
1836
1837	+ modify ifdef's in curses.h that disabled use of __attribute__() for
1838	  g++, since recent versions implement the cases which ncurses uses.
1839
1840	+ change some interfaces to use const:
1841		define_key()
1842		mvprintw()
1843		mvwprintw()
1844		printw()
1845		vw_printw()
1846		winsnstr()
1847		wprintw()
1848
1849	Added extensions:
1850		key_defined()
1851
1852	Added internal functions:
1853		_nc_get_locale()
1854		_nc_insert_ch()
1855		_nc_is_charable()	wide
1856		_nc_locale_breaks_acs()
1857		_nc_pathlast()
1858		_nc_to_char()		wide
1859		_nc_to_widechar()	wide
1860		_nc_tparm_analyze()
1861		_nc_trace_bufcat()	debug
1862		_nc_unicode_locale()
1863
1864	Removed internal functions:
1865		_nc_outstr()
1866		_nc_sigaction()
1867
1868	Modified internal functions:
1869		_nc_remove_string()
1870		_nc_retrace_chtype()
1871
1872    5.3 (October 12, 2002)
1873	Interface changes:
1874
1875	+ change type for bool used in headers to NCURSES_BOOL, which usually
1876	  is the same as the compiler's definition for 'bool'.
1877
1878	+ add all but two functions for X/Open curses wide-character support.
1879	  These are only available if the library is configured using the
1880	  --enable-widec option.  Missing functions are
1881		pecho_wchar()
1882		slk_wset()
1883
1884	+ add environment variable $NCURSES_ASSUMED_COLORS to modify the
1885	  assume_default_colors() extension.
1886
1887	Added extensions:
1888		is_term_resized()
1889		resize_term()
1890
1891	Added internal functions:
1892		_nc_altcharset_name()	debug
1893		_nc_reset_colors()
1894		_nc_retrace_bool()	debug
1895		_nc_retrace_unsigned()	debug
1896		_nc_rootname()
1897		_nc_trace_ttymode()	debug
1898		_nc_varargs()		debug
1899		_nc_visbufn()		debug
1900		_nc_wgetch()
1901
1902	Removed internal functions:
1903		_nc_background()
1904
1905	Modified internal functions:
1906		_nc_freeall()		debug
1907
1908    5.2 (October 21, 2000)
1909	Interface changes:
1910
1911	+ revert termcap ospeed variable to 'short' (see discussion of the
1912	  --with-ospeed configure option).
1913
1914    5.1 (July 8, 2000)
1915	Interface changes:
1916
1917	+ made the extended terminal capabilities
1918	  (configure --enable-tcap-names) a standard feature.  This should
1919	  be transparent to applications that do not require it.
1920
1921	+ removed the trace() function and related trace support from the
1922	  production library.
1923
1924	+ modified curses.h.in, undef'ing some symbols to avoid conflict
1925	  with C++ STL.
1926
1927	Added extensions:  assume_default_colors().
1928
1929    5.0 (October 23, 1999)
1930	Interface changes:
1931
1932	+ implemented the wcolor_set() and slk_color() functions.
1933
1934	+ move macro winch to a function, to hide details of struct ldat
1935
1936	+ corrected prototypes for slk_* functions, using chtype rather than
1937	  attr_t.
1938
1939	+ the slk_attr_{set,off,on} functions need an additional void*
1940	  parameter according to XSI.
1941
1942	+ modified several prototypes to correspond with 1997 version of X/Open
1943	  Curses:  [w]attr_get(), [w]attr_set(), border_set() have different
1944	  parameters.  Some functions were renamed or misspelled:
1945	  erase_wchar(), in_wchntr(), mvin_wchntr().  Some developers have used
1946	  attr_get().
1947
1948	Added extensions:  keybound(), curses_version().
1949
1950	Terminfo database changes:
1951
1952	+ change translation for termcap 'rs' to terminfo 'rs2', which is
1953	  the documented equivalent, rather than 'rs1'.
1954
1955	The problems are subtler in recent releases.
1956
1957	a) This release provides users with the ability to define their own
1958	   terminal capability extensions, like termcap.  To accomplish this,
1959	   we redesigned the TERMTYPE struct (in term.h).  Very few
1960	   applications use this struct.  They must be recompiled to work with
1961	   the 5.0 library.
1962
1963	a) If you use the extended terminfo names (i.e., you used configure
1964	   --enable-tcap-names), the resulting terminfo database can have some
1965	   entries which are not readable by older versions of ncurses.  This
1966	   is a bug in the older versions:
1967
1968	   + the terminfo database stores booleans, numbers and strings in
1969	     arrays.  The capabilities that are listed in the arrays are
1970	     specified by X/Open.  ncurses recognizes a number of obsolete and
1971	     extended names which are stored past the end of the specified
1972	     entries.
1973
1974	   + a change to read_entry.c in 951001 made the library do an lseek()
1975	     call incorrectly skipping data which is already read from the
1976	     string array.  This happens when the number of strings in the
1977	     terminfo data file is greater than STRCOUNT, the number of
1978	     specified and obsolete or extended strings.
1979
1980	   + as part of alignment with the X/Open final specification, in the
1981	     990109 patch we added two new terminfo capabilities:
1982	     set_a_attributes and set_pglen_inch).  This makes the indices for
1983	     the obsolete and extended capabilities shift up by 2.
1984
1985	   + the last two capabilities in the obsolete/extended list are memu
1986	     and meml, which are found in most terminfo descriptions for xterm.
1987
1988	     When trying to read this terminfo entry, the spurious lseek()
1989	     causes the library to attempt to read the final portion of the
1990	     terminfo data (the text of the string capabilities) 4 characters
1991	     past its starting point, and reads 4 characters too few.  The
1992	     library rejects the data, and applications are unable to
1993	     initialize that terminal type.
1994
1995	   FIX: remove memu and meml from the xterm description.  They are
1996	   obsolete, not used by ncurses.  (It appears that the feature was
1997	   added to xterm to make it more like hpterm).
1998
1999	   This is not a problem if you do not use the -x option of tic to
2000	   create a terminfo database with extended names.  Note that the
2001	   user-defined terminal capabilities are not affected by this bug,
2002	   since they are stored in a table after the older terminfo data ends,
2003	   and are invisible to the older libraries.
2004
2005	c) Some developers did not wish to use the C++ binding, and used the
2006	   configure --without-cxx option.  This causes problems if someone
2007	   uses the ncurses library from C++ because that configure test
2008	   determines the type for C++'s bool and makes ncurses match it, since
2009	   both C++ and curses are specified to declare bool.  Calling ncurses
2010	   functions with the incorrect type for bool will cause execution
2011	   errors.  In 5.0 we added a configure option "--without-cxx-binding"
2012	   which controls whether the binding itself is built and installed.
2013
2014    4.2 (March 2, 1998)
2015	Interface changes:
2016
2017	+ correct prototype for termattrs() as per XPG4 version 2.
2018
2019	+ add placeholder prototypes for color_set(), erasewchar(),
2020	  term_attrs(), wcolor_set() as per XPG4 version 2.
2021
2022	+ add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in
2023	  SVr4 headers.
2024
2025	New extensions: keyok() and define_key().
2026
2027	Terminfo database changes:
2028
2029	+ corrected definition in curses.h for ACS_LANTERN, which was 'I'
2030	  rather than 'i'.
2031
2032    4.1 (May 15, 1997)
2033
2034	We added these extensions:  use_default_colors().  Also added
2035	configure option --enable-const, to support the use of const where
2036	X/Open should have, but did not, specify.
2037
2038	The terminfo database content changed the representation of color for
2039	most entries that use ANSI colors.  SVr4 curses treats the setaf/setab
2040	and setf/setb capabilities differently, interchanging the red/blue
2041	colors in the latter.
2042
2043    4.0 (December 24, 1996)
2044
2045	We bumped to version 4.0 because the newly released Linux dynamic
2046	loader (ld.so.1.8.5) did not load shared libraries whose ABI and REL
2047	versions were inconsistent.  At that point, ncurses ABI was 3.4 and the
2048	REL was 1.9.9g, so we made them consistent.
2049
2050    1.9.9g (December 1, 1996)
2051
2052	This fixed most of the problems with 1.9.9e, and made these interface
2053	changes:
2054
2055	+ remove tparam(), which had been provided for compatibility with
2056	  some termcap.  tparm() is standard, and does not conflict with
2057	  application's fallback for missing tparam().
2058
2059	+ turn off hardware echo in initscr().  This changes the sense of the
2060	  echo() function, which was initialized to echoing rather than
2061	  nonechoing (the latter is specified).  There were several other
2062	  corrections to the terminal I/O settings which cause applications to
2063	  behave differently.
2064
2065	+ implemented several functions (such as attr_on()) which were
2066	  available only as macros.
2067
2068	+ corrected several typos in curses.h.in (i.e., the mvXXXX macros).
2069
2070	+ corrected prototypes for delay_output(),
2071	  has_color, immedok() and idcok().
2072
2073	+ corrected misspelled getbkgd().  Some applications used the
2074	  misspelled name.
2075
2076	+ added _yoffset to WINDOW.  The size of WINDOW does not impact
2077	  applications, since they use only pointers to WINDOW structs.
2078
2079	These changes were made to the terminfo database:
2080
2081	+ removed boolean 'getm' which was available as an extended name.
2082
2083	We added these extensions: wresize(), resizeterm(), has_key() and
2084	mcprint().
2085
2086    1.9.9e (March 24, 1996)
2087
2088	not recommended (a last-minute/untested change left the forms and
2089	menus libraries unusable since they do not repaint the screen).
2090	Foreground/background colors are combined incorrectly, working properly
2091	only on a black background.  When this was released, the X/Open
2092	specification was available only in draft form.
2093
2094	Some applications (such as lxdialog) were "fixed" to work with the
2095	incorrect color scheme.
2096
2097
2098FOR SYSTEM INTEGRATORS:
2099----------------------
2100
2101    Configuration and Installation:
2102
2103	On platforms where ncurses is assumed to be installed in /usr/lib,
2104	the configure script uses "/usr" as a default.  These include any
2105	that use the Linux kernel, as well as these special cases:
2106
2107		FreeBSD, NetBSD, OpenBSD, Cygwin, MinGW
2108
2109	For other platforms, the default is "/usr/local".  See the discussion
2110	of the "--disable-overwrite" option.
2111
2112	The location of the terminfo is set indirectly by the "--datadir"
2113	configure option, e.g., /usr/share/terminfo, given a datadir of
2114	/usr/share.  You may want to override this if you are installing
2115	ncurses libraries in nonstandard locations, but wish to share the
2116	terminfo database.
2117
2118	Normally the ncurses library is configured in a pure-terminfo mode;
2119	that is, with the --disable-termcap option.  This makes the ncurses
2120	library smaller and faster.  The ncurses library includes a termcap
2121	emulation that queries the terminfo database, so even applications that
2122	use raw termcap to query terminal characteristics will win (providing
2123	you recompile and relink them!).
2124
2125	If you must configure with termcap fallback enabled, you may also wish
2126	to use the --enable-getcap option.  This speeds up termcap-based
2127	startups, at the expense of not allowing personal termcap entries to
2128	reference the terminfo tree.  See comments in
2129	ncurses/tinfo/read_termcap.c for further details.
2130
2131	Note that if you have $TERMCAP set, ncurses will use that value
2132	to locate termcap data.  In particular, running from xterm will
2133	set $TERMCAP to the contents of the xterm's termcap entry.
2134	If ncurses sees that, it will not examine /etc/termcap.
2135
2136    Keyboard Mapping:
2137
2138	The terminfo file assumes that Shift-Tab generates \E[Z (the ECMA-48
2139	reverse-tabulation sequence) rather than ^I.  Here are the loadkeys -d
2140	mappings that will set this up:
2141
2142		keycode	 15 = Tab	      Tab
2143			alt     keycode  15 = Meta_Tab
2144			shift	keycode  15 = F26
2145		string F26 ="\033[Z"
2146
2147    Naming the Console Terminal
2148
2149	In various systems there has been a practice of designating the system
2150	console driver type as `console'.  Please do not do this!  It
2151	complicates peoples' lives, because it can mean that several different
2152	terminfo entries from different operating systems all logically want to
2153	be called `console'.
2154
2155	Please pick a name unique to your console driver and set that up
2156	in the /etc/inittab table or local equivalent.  Send the entry to the
2157	terminfo maintainer (listed in the misc/terminfo file) to be included
2158	in the terminfo file, if it's not already there.  See the
2159	term(7) manual page included with this distribution for more on
2160	conventions for choosing type names.
2161
2162	Here are some recommended primary console names:
2163
2164		linux	-- Linux console driver
2165		freebsd	-- FreeBSD
2166		netbsd	-- NetBSD
2167		bsdos	-- BSD/OS
2168
2169	If you are responsible for integrating ncurses for one of these
2170	distributions, please either use the recommended name or get back
2171	to us explaining why you don't want to, so we can work out nomenclature
2172	that will make users' lives easier rather than harder.
2173
2174
2175MODERN XTERM VERSIONS:
2176---------------------
2177
2178	The terminfo database file included with this distribution assumes you
2179	are running a modern xterm based on XFree86 (i.e., xterm-new).  The
2180	earlier X11R6 entry (xterm-r6) and X11R5 entry (xterm-r5) is provided
2181	as well.  See the --without-xterm-new configure script option if you
2182	are unable to update your system.
2183
2184
2185CONFIGURING FALLBACK ENTRIES:
2186----------------------------
2187
2188	In order to support operation of ncurses programs before the terminfo
2189	tree is accessible (that is, in single-user mode or at OS installation
2190	time) the ncurses library can be compiled to include an array of
2191	pre-fetched fallback entries.
2192
2193	NOTE: This must be done on a machine which has ncurses' infocmp and
2194	terminfo database installed (as well as ncurses' tic and infocmp
2195	programs).  That is because the fallback sources are generated and
2196	compiled into the library before the build-tree's copy of infocmp is
2197	available.
2198
2199	These entries are checked by setupterm() only when the conventional
2200	fetches from the terminfo tree and the termcap fallback (if configured)
2201	have been tried and failed.  Thus, the presence of a fallback will not
2202	shadow modifications to the on-disk entry for the same type, when that
2203	entry is accessible.
2204
2205	By default, there are no entries on the fallback list.  After you have
2206	built the ncurses suite for the first time, you can change the list
2207	(the process needs infocmp(1)).  To do so, use the script
2208	ncurses/tinfo/MKfallback.sh.  The configure script option
2209	--with-fallbacks does this (it accepts a comma-separated list of the
2210	names you wish, and does not require a rebuild).
2211
2212	If you wanted (say) to have linux, vt100, and xterm fallbacks, you
2213	might use the commands
2214
2215		cd ncurses;
2216		tinfo/MKfallback.sh \
2217			$TERMINFO \
2218			../misc/terminfo.src \
2219			`which tic` \
2220			`which infocmp` \
2221			linux vt100 xterm >fallback.c
2222
2223	The first four parameters of the script are normally supplied by
2224	the configured makefiles via the "--with-fallbacks" option.  They
2225	are
2226
2227		1) the location of the terminfo database
2228		2) the source for the terminfo entries
2229		3) the location of the tic program, used to create a terminfo
2230		   database.
2231		4) the location of the infocmp program, used to print a terminfo
2232		   description.
2233
2234	Then just rebuild and reinstall the library as you would normally.
2235	You can restore the default empty fallback list with
2236
2237		tinfo/MKfallback.sh \
2238			$TERMINFO \
2239			../misc/terminfo.src \
2240			`which tic` \
2241			`which infocmp` \
2242			>fallback.c
2243
2244	The overhead for an empty fallback list is one trivial stub function.
2245	Any non-empty fallback list is const'd and therefore lives in shareable
2246	text space.  You can look at the comment trailing each initializer in
2247	the generated ncurses/fallback.c file to see the core cost of the
2248	fallbacks.  A good rule of thumb for modern vt100-like entries is that
2249	each one will cost about 2.5K of text space.
2250
2251
2252BSD CONVERSION NOTES:
2253--------------------
2254
2255	If you need to support really ancient BSD programs, you probably
2256	want to configure with the --enable-bsdpad option.  What this does
2257	is enable code in tputs() that recognizes a numeric prefix on a
2258	capability as a request for that much trailing padding in milliseconds.
2259	There are old BSD programs that do things like tputs("50").
2260
2261	(If you are distributing ncurses as a support-library component of
2262	an application you probably want to put the remainder of this section
2263	in the package README file.)
2264
2265	The following note applies only if you have configured ncurses with
2266	--enable-termcap.
2267
2268------------------------------- CUT HERE --------------------------------
2269
2270If you are installing this application privately (either because you
2271have no root access or want to experiment with it before doing a root
2272installation), there are a couple of details you need to be aware of.
2273They have to do with the ncurses library, which uses terminfo rather
2274than termcap for describing terminal characteristics.
2275
2276Though the ncurses library is terminfo-based, it can interpret your
2277TERMCAP variable (if present), any local termcap files you reference
2278through it, and the system termcap file.  However, to avoid slowing
2279down your application startup, it does this only once per terminal type!
2280
2281The first time you load a given terminal type from your termcap
2282database, the library initialization code will automatically write it
2283in terminfo format to a subdirectory under $HOME/.terminfo.  After
2284that, the initialization code will find it there and do a (much
2285faster) terminfo fetch.
2286
2287Usually, all this means is that your home directory will silently grow
2288an invisible .terminfo subdirectory which will get filled in with
2289terminfo descriptions of terminal types as you invoke them.  If anyone
2290ever installs a global terminfo tree on your system, this will quietly
2291stop happening and your $HOME/.terminfo will become redundant.
2292
2293The objective of all this logic is to make converting from BSD termcap
2294as painless as possible without slowing down your application (termcap
2295compilation is expensive).
2296
2297If you don't have a TERMCAP variable or custom personal termcap file,
2298you can skip the rest of this dissertation.
2299
2300If you *do* have a TERMCAP variable and/or a custom personal termcap file
2301that defines a terminal type, that definition will stop being visible
2302to this application after the first time you run it, because it will
2303instead see the terminfo entry that it wrote to $HOME/terminfo the
2304first time around.
2305
2306Subsequently, editing the TERMCAP variable or personal TERMCAP file
2307will have no effect unless you explicitly remove the terminfo entry
2308under $HOME/terminfo.  If you do that, the entry will be recompiled
2309from your termcap resources the next time it is invoked.
2310
2311To avoid these complications, use infocmp(1) and tic(1) to edit the
2312terminfo directory directly.
2313
2314------------------------------- CUT HERE --------------------------------
2315
2316USING GPM:
2317---------
2318	Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse)
2319	which is used with Linux console.  Be aware that GPM is commonly
2320	installed as a shared library which contains a wrapper for the curses
2321	wgetch() function (libcurses.o).  Some integrators have simplified
2322	linking applications by combining all or part of libcurses.so into the
2323	libgpm.so file, producing symbol conflicts with ncurses (specifically
2324	the wgetch function).  This was originally the BSD curses, but
2325	generally whatever curses library exists on the system.
2326
2327	You may be able to work around this problem by linking as follows:
2328
2329		cc -o foo foo.o -lncurses -lgpm -lncurses
2330
2331	but the linker may not cooperate, producing mysterious errors.
2332	See the FAQ, as well as the discussion under the --with-gpm option:
2333
2334	https://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
2335
2336
2337BUILDING WITH A CROSS-COMPILER:
2338------------------------------
2339	Ncurses can be built with a cross-compiler.  Some parts must be built
2340	with the host's compiler since they are used for building programs
2341	(e.g., ncurses/make_hash and ncurses/make_keys) that generate tables
2342	that are compiled into the ncurses library.  The essential thing to do
2343	is set the BUILD_CC environment variable to your host's compiler, and
2344	run the configure script configuring for the cross-compiler.
2345
2346	The configure options --with-build-cc, etc., are provided to make this
2347	simpler.  Since make_hash and make_keys use only ANSI C features, it
2348	is normally not necessary to provide the other options such as
2349	--with-build-libs, but they are provided for completeness.
2350
2351	Note that all of the generated source-files which are part of ncurses
2352	will be made if you use
2353
2354		make sources
2355
2356	This would be useful in porting to an environment which has little
2357	support for the tools used to generate the sources, e.g., sed, awk and
2358	Bourne-shell.
2359
2360	When ncurses has been successfully cross-compiled, you may want to use
2361	"make install" (with a suitable target directory) to construct an
2362	install tree.  Note that in this case (as with the --with-fallbacks
2363	option), ncurses uses the development platform's tic to do the "make
2364	install.data" portion.
2365
2366	The system's tic program is used to install the terminal database,
2367	even for cross-compiles.  For best results, the tic program should be
2368	from the most current version of ncurses.
2369
2370	NOTE:  the system's tic program may use a different terminfo database
2371	format than the target system.  For instance, as described in term(5),
2372	the conventional terminfo layout uses a directory hierarchy with one
2373	letter names, while some platforms use two-letter names to work with
2374	case-insensitive filesystems.  The configure script searches for a tic
2375	program using the AC_CHECK_TOOL macro, which will prefer programs
2376	using the canonical host prefix in their name.  You can use this fact
2377	to provide a cross-compiler support utility tic, otherwise you can
2378	override the configure script's choice using --with-tic-path
2379
2380
2381BUG REPORTS:
2382-----------
2383	Send any feedback to the ncurses mailing list at
2384	bug-ncurses@gnu.org. To subscribe send mail to
2385	bug-ncurses-request@gnu.org with body that reads:
2386	subscribe ncurses <your-email-address-here>
2387
2388	The Hacker's Guide in the doc directory includes some guidelines
2389	on how to report bugs in ways that will get them fixed most quickly.
2390
2391-- vile:txtmode
2392