INSTALL revision 259065
1238106Sdes------------------------------------------------------------------------------- 2238106Sdes-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- 3238106Sdes-- -- 4238106Sdes-- Permission is hereby granted, free of charge, to any person obtaining a -- 5238106Sdes-- copy of this software and associated documentation files (the -- 6238106Sdes-- "Software"), to deal in the Software without restriction, including -- 7238106Sdes-- without limitation the rights to use, copy, modify, merge, publish, -- 8238106Sdes-- distribute, distribute with modifications, sublicense, and/or sell copies -- 9238106Sdes-- of the Software, and to permit persons to whom the Software is furnished -- 10238106Sdes-- to do so, subject to the following conditions: -- 11238106Sdes-- -- 12238106Sdes-- The above copyright notice and this permission notice shall be included -- 13238106Sdes-- in all copies or substantial portions of the Software. -- 14238106Sdes-- -- 15238106Sdes-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- 16238106Sdes-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- 17238106Sdes-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- 18238106Sdes-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- 19238106Sdes-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- 20238106Sdes-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- 21238106Sdes-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- 22238106Sdes-- -- 23238106Sdes-- Except as contained in this notice, the name(s) of the above copyright -- 24238106Sdes-- holders shall not be used in advertising or otherwise to promote the -- 25238106Sdes-- sale, use or other dealings in this Software without prior written -- 26266114Sdes-- authorization. -- 27266114Sdes------------------------------------------------------------------------------- 28266114Sdes-- $Id: INSTALL,v 1.135 2008/11/02 21:13:51 tom Exp $ 29266114Sdes--------------------------------------------------------------------- 30266114Sdes How to install Ncurses/Terminfo on your system 31266114Sdes--------------------------------------------------------------------- 32266114Sdes 33266114Sdes ************************************************************ 34266114Sdes * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. * 35266114Sdes ************************************************************ 36238106Sdes 37238106SdesYou should be reading the file INSTALL in a directory called ncurses-d.d, where 38238106Sdesd.d is the current version number. There should be several subdirectories, 39238106Sdesincluding `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs', 40238106Sdesand `test'. See the README file for a roadmap to the package. 41238106Sdes 42238106SdesIf you are a Linux or FreeBSD or NetBSD distribution integrator or packager, 43238106Sdesplease read and act on the section titled IF YOU ARE A SYSTEM INTEGRATOR 44238106Sdesbelow. 45238106Sdes 46238106SdesIf you are converting from BSD curses and do not have root access, be sure 47276605Sdesto read the BSD CONVERSION NOTES section below. 48238106Sdes 49238106SdesIf you are trying to build applications using gpm with ncurses, 50238106Sdesread the USING NCURSES WITH GPM section below. 51238106Sdes 52238106SdesIf you are running over the Andrew File System see the note below on 53238106SdesUSING NCURSES WITH AFS. 54238106Sdes 55238106SdesIf you are cross-compiling, see the note below on BUILDING NCURSES WITH A 56238106SdesCROSS-COMPILER. 57238106Sdes 58238106SdesIf you want to build the Ada95 binding, go to the Ada95 directory and 59238106Sdesfollow the instructions there. The Ada95 binding is not covered below. 60238106Sdes 61238106SdesIf you are using anything but (a) Linux, or (b) one of the 4.4BSD-based 62238106Sdesi386 Unixes, go read the Portability section in the TO-DO file before you 63238106Sdesdo anything else. 64238106Sdes 65238106Sdes 66238106SdesREQUIREMENTS: 67238106Sdes------------ 68238106Sdes 69238106SdesYou will need the following to build and install ncurses under UNIX: 70238106Sdes 71238106Sdes * ANSI C compiler (gcc, for instance) 72238106Sdes * sh (bash will do) 73296415Sdes * awk (mawk or gawk will do) 74238106Sdes * sed 75238106Sdes * BSD or System V style install (a script is enclosed) 76238106Sdes 77238106SdesNcurses has been also built in the OS/2 EMX environment. 78238106Sdes 79238106Sdes 80238106SdesINSTALLATION PROCEDURE: 81238106Sdes---------------------- 82238106Sdes 83238106Sdes1. First, decide whether you want ncurses to replace your existing library (in 84238106Sdes which case you'll need super-user privileges) or be installed in parallel 85238106Sdes with it. 86238106Sdes 87238106Sdes The --prefix option to configure changes the root directory for installing 88238106Sdes ncurses. The default is normally in subdirectories of /usr/local, except 89238106Sdes for systems where ncurses is normally installed as a system library, e.g., 90238106Sdes Linux, the various BSD systems and Cygwin. Use --prefix=/usr to replace 91238106Sdes your default curses distribution. 92238106Sdes 93238106Sdes The package gets installed beneath the --prefix directory as follows: 94238106Sdes 95238106Sdes In $(prefix)/bin: tic, infocmp, captoinfo, tset, 96238106Sdes reset, clear, tput, toe 97238106Sdes In $(prefix)/lib: libncurses*.* libcurses.a 98238106Sdes In $(prefix)/share/terminfo: compiled terminal descriptions 99276699Sdes In $(prefix)/include: C header files 100238106Sdes Under $(prefix)/man: the manual pages 101238106Sdes 102238106Sdes Note that the configure script attempts to locate previous installation of 103238106Sdes ncurses, and will set the default prefix according to where it finds the 104238106Sdes ncurses headers. 105238106Sdes 106266114Sdes Do not use commands such as 107238106Sdes 108238106Sdes make install prefix=XXX 109238106Sdes 110295535Sdes to change the prefix after configuration, since the prefix value is used 111295535Sdes for some absolute pathnames such as TERMINFO. Instead do this 112282089Sdes 113276605Sdes make install DESTDIR=XXX 114276605Sdes 115276605Sdes See also the discussion of --with-install-prefix. 116276605Sdes 117276605Sdes2. Type `./configure' in the top-level directory of the distribution to 118276605Sdes configure ncurses for your operating system and create the Makefiles. 119276605Sdes Besides --prefix, various configuration options are available to customize 120276605Sdes the installation; use `./configure --help' to list the available options. 121276605Sdes 122276605Sdes If your operating system is not supported, read the PORTABILITY section in 123287917Sdes the file ncurses/README for information on how to create a configuration 124287917Sdes file for your system. 125287917Sdes 126289063Sdes The `configure' script generates makefile rules for one or more object 127292206Sdes models and their associated libraries: 128238106Sdes 129238106Sdes libncurses.a (normal) 130238106Sdes 131238106Sdes libcurses.a (normal, a link to libncurses.a) 132238106Sdes This gets left out if you configure with --disable-overwrite. 133276605Sdes 134238106Sdes libncurses.so (shared) 135238106Sdes 136238106Sdes libncurses_g.a (debug) 137238106Sdes 138238106Sdes libncurses_p.a (profile) 139238106Sdes 140238106Sdes libncurses.la (libtool) 141238106Sdes 142238106Sdes If you configure using the --enable-widec option, a "w" is appended to the 143238106Sdes library names (e.g., libncursesw.a), and the resulting libraries support 144238106Sdes wide-characters, e.g., via a UTF-8 locale. The corresponding header files 145238106Sdes are compatible with the non-wide-character configuration; wide-character 146238106Sdes features are provided by ifdef's in the header files. The wide-character 147296415Sdes library interfaces are not binary-compatible with the non-wide-character 148238106Sdes version. Building and running the wide-character code relies on a fairly 149238106Sdes recent implementation of libiconv. We have built this configuration on 150238106Sdes Linux using libiconv, sometimes requiring libutf8. 151238106Sdes 152238106Sdes If you configure using the --with-pthread option, a "t" is appended to 153238106Sdes the library names (e.g., libncursest.a, libncursestw.a). 154238106Sdes 155238106Sdes If you do not specify any models, the normal and debug libraries will be 156238106Sdes configured. Typing `configure' with no arguments is equivalent to: 157238106Sdes 158238106Sdes ./configure --with-normal --with-debug --enable-overwrite 159238106Sdes 160238106Sdes Typing 161238106Sdes 162238106Sdes ./configure --with-shared 163238106Sdes 164238106Sdes makes the shared libraries the default, resulting in 165238106Sdes 166238106Sdes ./configure --with-shared --with-normal --with-debug --enable-overwrite 167238106Sdes 168238106Sdes If you want only shared libraries, type 169238106Sdes 170238106Sdes ./configure --with-shared --without-normal --without-debug 171238106Sdes 172238106Sdes Rules for generating shared libraries are highly dependent upon the choice 173238106Sdes of host system and compiler. We've been testing shared libraries on Linux 174238106Sdes and SunOS with gcc, but more work needs to be done to make shared libraries 175238106Sdes work on other systems. 176238106Sdes 177238106Sdes If you have libtool installed, you can type 178238106Sdes 179238106Sdes ./configure --with-libtool 180238106Sdes 181238106Sdes to generate the appropriate static and/or shared libraries for your 182238106Sdes platform using libtool. 183238106Sdes 184238106Sdes You can make curses and terminfo fall back to an existing file of termcap 185266114Sdes definitions by configuring with --enable-termcap. If you do this, the 186295535Sdes library will search /etc/termcap before the terminfo database, and will 187295535Sdes also interpret the contents of the TERM environment variable. See the 188282089Sdes section BSD CONVERSION NOTES below. 189287917Sdes 190287917Sdes3. Type `make'. Ignore any warnings, no error messages should be produced. 191287917Sdes This should compile the ncurses library, the terminfo compiler tic(1), 192287917Sdes captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1) 193289063Sdes programs (see the manual pages for explanation of what they do), some test 194292206Sdes programs, and the panels, menus, and forms libraries. 195238106Sdes 196238106Sdes4. Run ncurses and several other test programs in the test directory to 197238106Sdes verify that ncurses functions correctly before doing an install that 198238106Sdes may overwrite system files. Read the file test/README for details on 199238106Sdes the test programs. 200238106Sdes 201238106Sdes NOTE: You must have installed the terminfo database, or set the 202238106Sdes environment variable $TERMINFO to point to a SVr4-compatible terminfo 203238106Sdes database before running the test programs. Not all vendors' terminfo 204238106Sdes databases are SVr4-compatible, but most seem to be. Exceptions include 205238106Sdes DEC's Digital Unix (formerly known as OSF/1). 206238106Sdes 207238106Sdes If you run the test programs WITHOUT installing terminfo, ncurses may 208238106Sdes read the termcap file and cache that in $HOME/.terminfo, which will 209238106Sdes thereafter be used instead of the terminfo database. See the comments 210238106Sdes on "--enable-getcap-cache", to see why this is a Bad Thing. 211238106Sdes 212238106Sdes It is possible to configure ncurses to use other terminfo database formats. 213238106Sdes A few are provided as examples in the include-directory (see --with-caps). 214238106Sdes 215238106Sdes The ncurses program is designed specifically to test the ncurses library. 216238106Sdes You can use it to verify that the screen highlights work correctly, that 217238106Sdes cursor addressing and window scrolling works OK, etc. 218238106Sdes 219238106Sdes5. Once you've tested, you can type `make install' to install libraries, 220238106Sdes the programs, the terminfo database and the manual pages. Alternately, you 221238106Sdes can type `make install' in each directory you want to install. In the 222238106Sdes top-level directory, you can do a partial install using these commands: 223238106Sdes 224238106Sdes 'make install.progs' installs tic, infocmp, etc... 225238106Sdes 'make install.includes' installs the headers. 226238106Sdes 'make install.libs' installs the libraries (and the headers). 227238106Sdes 'make install.data' installs the terminfo data. (Note: `tic' must 228238106Sdes be installed before the terminfo data can be 229238106Sdes compiled). 230238106Sdes 'make install.man' installs the manual pages. 231238106Sdes 232238106Sdes ############################################################################ 233238106Sdes # CAVEAT EMPTOR: `install.data' run as root will NUKE any existing # 234238106Sdes # terminfo database. If you have any custom or unusual entries SAVE them # 235238106Sdes # before you install ncurses. I have a file called terminfo.custom for # 236238106Sdes # this purpose. Don't forget to run tic on the file once you're done. # 237238106Sdes ############################################################################ 238238106Sdes 239238106Sdes The terminfo(5) manual page must be preprocessed with tbl(1) before 240238106Sdes being formatted by nroff(1). Modern man(1) implementations tend to do 241238106Sdes this by default, but you may want to look at your version's manual page 242238106Sdes to be sure. You may also install the manual pages after preprocessing 243238106Sdes with tbl(1) by specifying the configure option --with-manpage-tbl. 244238106Sdes 245238106Sdes If the system already has a curses library that you need to keep using 246238106Sdes you'll need to distinguish between it and ncurses. See the discussion of 247238106Sdes --disable-overwrite. If ncurses is installed outside the standard 248238106Sdes directories (/usr/include and /usr/lib) then all your users will need to 249238106Sdes use the -I option to compile programs and -L to link them. 250238106Sdes 251238106Sdes If you have another curses installed in your system and you accidentally 252238106Sdes compile using its curses.h you'll end up with a large number of 253238106Sdes undefined symbols at link time. 254238106Sdes 255238106Sdes IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory 256238106Sdes and run the `capconvert' script. This script will deduce various things 257238106Sdes about your environment and use them to build you a private terminfo tree, 258238106Sdes so you can use ncurses applications. 259238106Sdes 260238106Sdes If more than one user at your site does this, the space for the duplicate 261238106Sdes trees is wasted. Try to get your site administrators to install a system- 262238106Sdes wide terminfo tree instead. 263238106Sdes 264238106Sdes See the BSD CONVERSION NOTES section below for a few more details. 265238106Sdes 266238106Sdes6. The c++ directory has C++ classes that are built on top of ncurses and 267238106Sdes panels. You must have c++ (and its libraries) installed before you can 268238106Sdes compile and run the demo. 269238106Sdes 270238106Sdes Use --without-cxx-binding to tell configure to not build the C++ bindings 271238106Sdes and demo. 272238106Sdes 273238106Sdes If you do not have C++, you must use the --without-cxx option to tell 274238106Sdes the configure script to not attempt to determine the type of 'bool' 275238106Sdes which may be supported by C++. IF YOU USE THIS OPTION, BE ADVISED THAT 276238106Sdes YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++. 277238106Sdes 278238106Sdes 279238106SdesSUMMARY OF CONFIGURE OPTIONS: 280238106Sdes---------------------------- 281238106Sdes 282238106Sdes The configure script provides a short list of its options when you type 283238106Sdes 284238106Sdes ./configure --help 285238106Sdes 286238106Sdes The --help and several options are common to all configure scripts that are 287238106Sdes generated with autoconf. Those are all listed before the line 288238106Sdes 289238106Sdes --enable and --with options recognized: 290238106Sdes 291238106Sdes The other options are specific to this package. We list them in alphabetic 292238106Sdes order. 293238106Sdes 294238106Sdes --disable-assumed-color 295238106Sdes With ncurses 5.1, we introduced a new function, assume_default_colors() 296238106Sdes which allows applications to specify what the default foreground and 297238106Sdes background color are assumed to be. Most color applications use 298238106Sdes full-screen color; but a few do not color the background. While the 299238106Sdes assumed values can be overridden by invoking assume_default_colors(), 300238106Sdes you may find it useful to set the assumed values to the pre-5.1 301238106Sdes convention, using this configure option. 302238106Sdes 303238106Sdes --disable-big-core 304238106Sdes Assume machine has little memory. The configure script attempts to 305238106Sdes determine if your machine has enough memory (about 6Mb) to compile the 306238106Sdes terminfo database without writing portions to disk. Some allocators 307238106Sdes return deceptive results, so you may have to override the configure 308238106Sdes script. Or you may be building tic for a smaller machine. 309238106Sdes 310238106Sdes --disable-big-strings 311238106Sdes Disable compile-time optimization of predefined tables which puts 312238106Sdes all of their strings into a very long string, to reduce relocation 313238106Sdes overhead. 314238106Sdes 315238106Sdes --disable-database 316238106Sdes Use only built-in data. The ncurses libraries normally read terminfo 317238106Sdes and termcap data from disk. You can configure ncurses to have a 318238106Sdes built-in database, aka "fallback" entries. Embedded applications may 319238106Sdes have no need for an external database. Some, but not all of the 320238106Sdes programs are useful in this configuration, e.g., reset and tput versus 321238106Sdes infocmp and tic. 322238106Sdes 323238106Sdes --disable-ext-funcs 324238106Sdes Disable function-extensions. Configure ncurses without the functions 325238106Sdes that are not specified by XSI. See ncurses/modules for the exact 326238106Sdes list of library modules that would be suppressed. 327238106Sdes 328238106Sdes --disable-hashmap 329238106Sdes Compile without hashmap scrolling-optimization code. This algorithm is 330238106Sdes the default. 331238106Sdes 332238106Sdes --disable-home-terminfo 333238106Sdes The $HOME/.terminfo directory is normally added to ncurses' search 334238106Sdes list for reading/writing terminfo entries, since that directory is 335238106Sdes more likely writable than the system terminfo database. Use this 336238106Sdes option to disable the feature altogether. 337238106Sdes 338238106Sdes --disable-largefile 339238106Sdes Disable compiler flags needed to use large-file interfaces. 340238106Sdes 341238106Sdes --disable-leaks 342238106Sdes For testing, compile-in code that frees memory that normally would not 343238106Sdes be freed, to simplify analysis of memory-leaks. 344238106Sdes 345238106Sdes Any implementation of curses must not free the memory associated with 346238106Sdes a screen, since (even after calling endwin()), it must be available 347238106Sdes for use in the next call to refresh(). There are also chunks of 348238106Sdes memory held for performance reasons. That makes it hard to analyze 349238106Sdes curses applications for memory leaks. To work around this, build 350238106Sdes a debugging version of the ncurses library which frees those chunks 351238106Sdes which it can, and provides the _nc_free_and_exit() function to free 352238106Sdes the remainder on exit. The ncurses utility and test programs use this 353238106Sdes feature, e.g., via the ExitProgram() macro. 354238106Sdes 355238106Sdes --disable-lp64 356238106Sdes The header files will ignore use of the _LP64 symbol to make chtype 357238106Sdes and mmask_t types 32 bits (they may be long on 64-bit hosts, for 358238106Sdes compatibility with older releases). 359238106Sdes 360238106Sdes NOTE: this is potentially an ABI change, depending on existing 361238106Sdes packages. The default for this option is "disabled" for ncurses 362238106Sdes ABI 5, and "enabled" for ABI 6. 363238106Sdes 364238106Sdes --disable-macros 365238106Sdes For testing, use functions rather than macros. The program will run 366238106Sdes more slowly, but it is simpler to debug. This defines NCURSES_NOMACROS 367238106Sdes at build time. See also the --enable-expanded option. 368238106Sdes 369238106Sdes --disable-overwrite 370238106Sdes If you are installing ncurses on a system which contains another 371238106Sdes development version of curses, or which could be confused by the loader 372238106Sdes for another version, we recommend that you leave out the link to 373238106Sdes -lcurses. The ncurses library is always available as -lncurses. 374238106Sdes Disabling overwrite also causes the ncurses header files to be 375238106Sdes installed into a subdirectory, e.g., /usr/local/include/ncurses, 376238106Sdes rather than the include directory. This makes it simpler to avoid 377238106Sdes compile-time conflicts with other versions of curses.h 378238106Sdes 379238106Sdes --disable-relink 380238106Sdes If --enable-rpath is given, the generated makefiles normally will 381238106Sdes rebuild the libraries during install. Use this option to simply 382238106Sdes copy whatever the linked produced. 383238106Sdes 384238106Sdes This option is ignored if --enable-rpath is not given. 385238106Sdes 386238106Sdes --disable-root-environ 387238106Sdes Compile with environment restriction, so certain environment variables 388238106Sdes are not available when running as root, or via a setuid/setgid 389238106Sdes application. These are (for example $TERMINFO) those that allow the 390238106Sdes search path for the terminfo or termcap entry to be customized. 391238106Sdes 392238106Sdes --disable-scroll-hints 393238106Sdes Compile without scroll-hints code. This option is ignored when 394238106Sdes hashmap scrolling is configured, which is the default. 395238106Sdes 396238106Sdes --disable-tic-depends 397238106Sdes When building shared libraries, normally the tic library is linked to 398238106Sdes depend upon the ncurses library (and in turn, on the term-library if 399238106Sdes the --with-termlib option was given). The tic- and term-libraries 400238106Sdes ABI does not depend on the --enable-widec option. Some packagers have 401238106Sdes used this to reduce the number of library files which are packaged 402296415Sdes by using only one copy of those libraries. To make this work properly, 403296415Sdes the tic library must be built without an explicit dependency on the 404296415Sdes ncurses (or ncursesw) library. Use this configure option to do that. 405296415Sdes For example 406296415Sdes configure --with-ticlib --with-shared --disable-tic-depends 407296415Sdes 408296415Sdes --disable-tparm-varargs 409296415Sdes Portable programs should call tparm() using the fixed-length parameter 410296415Sdes list documented in X/Open. ncurses provides varargs support for this 411296415Sdes function. Use --disable-tparm-varargs to disable this support. 412296415Sdes 413296415Sdes --enable-assertions 414296415Sdes For testing, compile-in assertion code. This is used only for a few 415296415Sdes places where ncurses cannot easily recover by returning an error code. 416296415Sdes 417296415Sdes --enable-broken_linker 418296415Sdes A few platforms have what we consider a broken linker: it cannot link 419296415Sdes objects from an archive solely by referring to data objects in those 420238106Sdes files, but requires a function reference. This configure option 421238106Sdes changes several data references to functions to work around this 422238106Sdes problem. 423238106Sdes 424238106Sdes NOTE: With ncurses 5.1, this may not be necessary, since we are 425238106Sdes told that some linkers interpret uninitialized global data as a 426238106Sdes different type of reference which behaves as described above. We have 427238106Sdes explicitly initialized all of the global data to work around the 428238106Sdes problem. 429238106Sdes 430238106Sdes --enable-bsdpad 431238106Sdes Recognize BSD-style prefix padding. Some ancient BSD programs (such as 432238106Sdes nethack) call tputs("50") to implement delays. 433238106Sdes 434238106Sdes --enable-colorfgbg 435238106Sdes Compile with experimental $COLORFGBG code. That environment variable 436238106Sdes is set by some terminal emulators as a hint to applications, by 437238106Sdes advertising the default foreground and background colors. During 438238106Sdes initialization, ncurses sets color pair 0 to match this. 439238106Sdes 440238106Sdes --enable-const 441238106Sdes The curses interface as documented in XSI is rather old, in fact 442238106Sdes including features that precede ANSI C. The prototypes generally do 443238106Sdes not make effective use of "const". When using stricter compilers (or 444238106Sdes gcc with appropriate warnings), you may see warnings about the mismatch 445238106Sdes between const and non-const data. We provide a configure option which 446238106Sdes changes the interfaces to use const - quieting these warnings and 447238106Sdes reflecting the actual use of the parameters more closely. The ncurses 448238106Sdes library uses the symbol NCURSES_CONST for these instances of const, 449238106Sdes and if you have asked for compiler warnings, will add gcc's const-qual 450238106Sdes warning. There will still be warnings due to subtle inconsistencies 451238106Sdes in the interface, but at a lower level. 452238106Sdes 453238106Sdes NOTE: configuring ncurses with this option may detract from the 454238106Sdes portability of your applications by encouraging you to use const in 455238106Sdes places where the XSI curses interface would not allow them. Similar 456238106Sdes issues arise when porting to SVr4 curses, which uses const in even 457238106Sdes fewer places. 458238106Sdes 459238106Sdes --enable-echo 460238106Sdes Use the option --disable-echo to make the build-log less verbose by 461238106Sdes suppressing the display of the compile and link commands. This makes 462238106Sdes it easier to see the compiler warnings. (You can always use "make -n" 463238106Sdes to see the options that are used). 464238106Sdes 465238106Sdes --enable-expanded 466238106Sdes For testing, generate functions for certain macros to make them visible 467238106Sdes as such to the debugger. See also the --disable-macros option. 468238106Sdes 469238106Sdes --enable-ext-colors 470238106Sdes Extend the cchar_t structure to allow more than 16 colors to be 471238106Sdes encoded. This applies only to the wide-character (--enable-widec) 472238106Sdes configuration. 473238106Sdes 474238106Sdes NOTE: using this option will make libraries which are not binary- 475238106Sdes compatible with libncursesw 5.4. None of the interfaces change, but 476238106Sdes applications which have an array of cchar_t's must be recompiled. 477238106Sdes 478238106Sdes --enable-ext-mouse 479238106Sdes Modify the encoding of mouse state to make room for a 5th mouse button. 480238106Sdes That allows one to use ncurses with a wheel mouse with xterm or 481238106Sdes similar X terminal emulators. 482238106Sdes 483238106Sdes NOTE: using this option will make libraries which are not binary- 484238106Sdes compatible with libncursesw 5.4. None of the interfaces change, but 485238106Sdes applications which have mouse mask mmask_t's must be recompiled. 486238106Sdes 487238106Sdes --enable-getcap 488238106Sdes Use the 4.4BSD getcap code if available, or a bundled version of it to 489238106Sdes fetch termcap entries. Entries read in this way cannot use (make 490238106Sdes cross-references to) the terminfo tree, but it is faster than reading 491238106Sdes /etc/termcap. 492238106Sdes 493238106Sdes If configured for one of the *BSD systems, this automatically uses 494238106Sdes the hashed database system produced using cap_mkdb or similar tools. 495238106Sdes In that case, there is no advantage in using the --enable-getcap-cache 496238106Sdes option. 497238106Sdes 498238106Sdes See also the --with-hashed-db option. 499238106Sdes 500238106Sdes --enable-getcap-cache 501238106Sdes Cache translated termcaps under the directory $HOME/.terminfo 502238106Sdes 503238106Sdes NOTE: this sounds good - it makes ncurses run faster the second time. 504238106Sdes But look where the data comes from - an /etc/termcap containing lots of 505238106Sdes entries that are not up to date. If you configure with this option and 506238106Sdes forget to install the terminfo database before running an ncurses 507238106Sdes application, you will end up with a hidden terminfo database that 508238106Sdes generally does not support color and will miss some function keys. 509238106Sdes 510238106Sdes --enable-hard-tabs 511238106Sdes Compile-in cursor-optimization code that uses hard-tabs. We would make 512238106Sdes this a standard feature except for the concern that the terminfo entry 513238106Sdes may not be accurate, or that your stty settings have disabled the use 514238106Sdes of tabs. 515238106Sdes 516238106Sdes --enable-mixed-case 517238106Sdes Controls whether the filesystem on which the terminfo database resides 518238106Sdes supports mixed-case filenames (normal for UNIX, but not on other 519238106Sdes systems). If you do not specify this option, the configure script 520238106Sdes checks the current filesystem. 521238106Sdes 522238106Sdes --enable-no-padding 523238106Sdes Compile-in support for the $NCURSES_NO_PADDING environment variable, 524238106Sdes which allows you to suppress the effect of non-mandatory padding in 525238106Sdes terminfo entries. This is the default, unless you have disabled the 526238106Sdes extended functions. 527238106Sdes 528238106Sdes --enable-reentrant 529238106Sdes Compile experimental configuration which improves reentrant use of the 530238106Sdes library by reducing global and static variables. This option is also 531238106Sdes set if --with-pthread is used. 532238106Sdes 533238106Sdes --enable-rpath 534238106Sdes Use rpath option when generating shared libraries, and (with some 535238106Sdes restrictions) when linking the corresponding programs. This originally 536238106Sdes (in 1997) applied mainly to systems using the GNU linker (read the 537238106Sdes manpage). 538238106Sdes 539238106Sdes More recently it is useful for systems that require special treatment 540238106Sdes shared libraries in "unusual" locations. The "system" libraries reside 541238106Sdes in directories which are on the loader's default search-path. While 542238106Sdes you may be able to use workarounds such as the $LD_LIBRARY_PATH 543238106Sdes environment variable, they do not work with setuid applications since 544238106Sdes the LD_LIBRARY_PATH variable would be unset in that situation. 545238106Sdes 546238106Sdes This option does not apply to --with-libtool, since libtool makes 547238106Sdes extra assumptions about rpath. 548238106Sdes 549238106Sdes --enable-safe-sprintf 550238106Sdes Compile with experimental safe-sprintf code. You may consider using 551238106Sdes this if you are building ncurses for a system that has neither 552238106Sdes vsnprintf() or vsprintf(). It is slow, however. 553238106Sdes 554238106Sdes --enable-sigwinch 555238106Sdes Compile support for ncurses' SIGWINCH handler. If your application has 556238106Sdes its own SIGWINCH handler, ncurses will not use its own. The ncurses 557238106Sdes handler causes wgetch() to return KEY_RESIZE when the screen-size 558238106Sdes changes. This option is the default, unless you have disabled the 559238106Sdes extended functions. 560238106Sdes 561238106Sdes --enable-signed-char 562238106Sdes The term.h header declares a Booleans[] array typed "char". But it 563238106Sdes stores signed values there and "char" is not necessarily signed. 564238106Sdes Some packagers choose to alter the type of Booleans[] though this 565238106Sdes is not strictly compatible. This option allows one to implement this 566238106Sdes alteration without patching the source code. 567238106Sdes 568238106Sdes --enable-symlinks 569238106Sdes If your system supports symbolic links, make tic use symbolic links 570238106Sdes rather than hard links to save diskspace when writing aliases in the 571238106Sdes terminfo database. 572238106Sdes 573238106Sdes --enable-tcap-names 574238106Sdes Compile-in support for user-definable terminal capabilities. Use the 575238106Sdes -x option of tic and infocmp to treat unrecognized terminal 576238106Sdes capabilities as user-defined strings. This option is the default, 577238106Sdes unless you have disabled the extended functions. 578238106Sdes 579238106Sdes --enable-termcap 580238106Sdes Compile in support for reading terminal descriptions from termcap if no 581238106Sdes match is found in the terminfo database. See also the --enable-getcap 582238106Sdes and --enable-getcap-cache options. 583238106Sdes 584238106Sdes --enable-warnings 585238106Sdes Turn on GCC compiler warnings. There should be only a few. 586238106Sdes 587238106Sdes --enable-weak-symbols 588238106Sdes If the --with-pthread option is set, check if the compiler supports 589238106Sdes weak-symbols. If it does, then name the thread-capable library without 590238106Sdes the "t" (libncurses rather than libncursest), and provide for 591238106Sdes dynamically loading the pthreads entrypoints at runtime. This allows 592238106Sdes one to reduce the number of library files for ncurses. 593238106Sdes 594238106Sdes --enable-wgetch-events 595238106Sdes Compile with experimental wgetch-events code. See ncurses/README.IZ 596238106Sdes 597238106Sdes --enable-widec 598238106Sdes Compile with wide-character code. This makes a different version of 599238106Sdes the libraries (e.g., libncursesw.so), which stores characters as 600238106Sdes wide-characters, 601238106Sdes 602238106Sdes NOTE: applications compiled with this configuration are not compatible 603238106Sdes with those built for 8-bit characters. You cannot simply make a 604238106Sdes symbolic link to equate libncurses.so with libncursesw.so 605238106Sdes 606238106Sdes NOTE: the Ada95 binding may be built against either version of the the 607238106Sdes ncurses library, but you must decide which: the binding installs the 608238106Sdes same set of files for either version. Currently (2002/6/22) it does 609238106Sdes not use the extended features from the wide-character code, so it is 610238106Sdes probably better to not install the binding for that configuration. 611238106Sdes 612238106Sdes --enable-xmc-glitch 613238106Sdes Compile-in support experimental xmc (magic cookie) code. 614238106Sdes 615238106Sdes --with-abi-version=NUM 616238106Sdes Override the ABI version, which is used in shared library filenames. 617238106Sdes Normally this is the same as the release version; some ports have 618238106Sdes special requirements for compatibility. 619238106Sdes 620238106Sdes This option does not affect linking with libtool, which uses the 621238106Sdes release major/minor numbers. 622238106Sdes 623238106Sdes --with-ada-compiler=CMD 624238106Sdes Specify the Ada95 compiler command (default "gnatmake") 625238106Sdes 626238106Sdes --with-ada-include=DIR 627238106Sdes Tell where to install the Ada includes (default: 628238106Sdes PREFIX/lib/ada/adainclude) 629238106Sdes 630238106Sdes --with-ada-objects=DIR 631238106Sdes Tell where to install the Ada objects (default: PREFIX/lib/ada/adalib) 632238106Sdes 633238106Sdes --with-bool=TYPE 634238106Sdes If --without-cxx is specified, override the type used for the "bool" 635238106Sdes declared in curses.h (normally the type is automatically chosen to 636238106Sdes correspond with that in <stdbool.h>, or defaults to platform-specific 637238106Sdes sizes). 638238106Sdes 639238106Sdes --with-build-cc=XXX 640238106Sdes If cross-compiling, specify a host C compiler, which is needed to 641238106Sdes compile a few utilities which generate source modules for ncurses. 642238106Sdes If you do not give this option, the configure script checks if the 643238106Sdes $BUILD_CC variable is set, and otherwise defaults to gcc or cc. 644238106Sdes 645266114Sdes --with-build-cflags=XXX 646266114Sdes If cross-compiling, specify the host C compiler-flags. You might need 647266114Sdes to do this if the target compiler has unusual flags which confuse the 648266114Sdes host compiler. 649266114Sdes 650266114Sdes You can also set the environment variable $BUILD_CFLAGS rather than 651266114Sdes use this option. 652266114Sdes 653266114Sdes --with-build-cppflags=XXX 654266114Sdes If cross-compiling, specify the host C preprocessor-flags. You might 655287917Sdes need to do this if the target compiler has unusual flags which confuse 656287917Sdes the host compiler. 657287917Sdes 658287917Sdes You can also set the environment variable $BUILD_CPPFLAGS rather than 659287917Sdes use this option. 660287917Sdes 661287917Sdes --with-build-ldflags=XXX 662287917Sdes If cross-compiling, specify the host linker-flags. You might need to 663287917Sdes do this if the target linker has unusual flags which confuse the host 664287917Sdes compiler. 665238106Sdes 666238106Sdes You can also set the environment variable $BUILD_LDFLAGS rather than 667238106Sdes use this option. 668238106Sdes 669238106Sdes --with-build-libs=XXX 670238106Sdes If cross-compiling, the host libraries. You might need to do this if 671238106Sdes the target environment requires unusual libraries. 672238106Sdes 673238106Sdes You can also set the environment variable $BUILD_LIBS rather than 674238106Sdes use this option. 675238106Sdes 676238106Sdes --with-caps=XXX 677238106Sdes Specify an alternate terminfo capabilities file, which makes the 678238106Sdes configure script look for "include/Caps.XXX". A few systems, e.g., 679238106Sdes AIX 4.x use the same overall file-format as ncurses for terminfo 680238106Sdes data, but use different alignments within the tables to support 681238106Sdes legacy applications. For those systems, you can configure ncurses 682238106Sdes to use a terminfo database which is compatible with the native 683238106Sdes applications. 684238106Sdes 685238106Sdes --with-chtype=TYPE 686238106Sdes Override type of chtype, which stores the video attributes and (if 687238106Sdes --enable-widec is not given) a character. Prior to ncurses 5.5, this 688238106Sdes was always unsigned long, but with ncurses 5.5, it may be unsigned. 689238106Sdes Use this option if you need to preserve compatibility with 64-bit 690238106Sdes executables. 691238106Sdes 692238106Sdes --with-database=XXX 693238106Sdes Specify the terminfo source file to install. Usually you will wish 694238106Sdes to install ncurses' default (misc/terminfo.src). Certain systems 695238106Sdes have special requirements, e.g, OS/2 EMX has a customized terminfo 696238106Sdes source file. 697238106Sdes 698238106Sdes --with-dbmalloc 699238106Sdes For testing, compile and link with Conor Cahill's dbmalloc library. 700238106Sdes This also sets the --disable-leaks option. 701238106Sdes 702238106Sdes --with-debug 703238106Sdes Generate debug-libraries (default). These are named by adding "_g" 704238106Sdes to the root, e.g., libncurses_g.a 705238106Sdes 706238106Sdes --with-default-terminfo-dir=XXX 707238106Sdes Specify the default terminfo database directory. This is normally 708238106Sdes DATADIR/terminfo, e.g., /usr/share/terminfo. 709238106Sdes 710238106Sdes --with-dmalloc 711238106Sdes For testing, compile and link with Gray Watson's dmalloc library. 712238106Sdes This also sets the --disable-leaks option. 713238106Sdes 714238106Sdes --with-fallbacks=XXX 715238106Sdes Specify a list of fallback terminal descriptions which will be 716238106Sdes compiled into the ncurses library. See CONFIGURING FALLBACK ENTRIES. 717238106Sdes 718238106Sdes --with-gpm 719238106Sdes use Alessandro Rubini's GPM library to provide mouse support on the 720238106Sdes Linux console. Prior to ncurses 5.5, this introduced a dependency on 721238106Sdes the GPM library. 722238106Sdes 723238106Sdes Currently ncurses uses the dlsym() function to bind to the library at 724238106Sdes runtime, so it is only necessary that the library be present when 725238106Sdes ncurses is built, to obtain the filename (or soname) used in the 726238106Sdes corresponding dlopen() call. If you give a value for this option, 727238106Sdes e.g., 728266114Sdes 729266114Sdes --with-gpm=$HOME/tmp/test-gpm.so 730266114Sdes 731266114Sdes that overrides the configure check for the soname. 732266114Sdes 733266114Sdes See also --without-dlsym 734266114Sdes 735266114Sdes --with-hashed-db[=XXX] 736266114Sdes Use a hashed database for storing terminfo data rather than storing 737268839Sdes each compiled entry in a separate binary file within a directory 738268839Sdes tree. 739268839Sdes 740268839Sdes In particular, this uses the Berkeley database 1.8.5 interface, as 741268839Sdes provided by that and its successors db 2, 3, and 4. The actual 742268839Sdes interface is slightly different in the successor versions of the 743268839Sdes Berkeley database. The database should have been configured using 744268839Sdes "--enable-compat185". 745268839Sdes 746268839Sdes If you use this option for configuring ncurses, tic will only be able 747295535Sdes to write entries in the hashed database. infocmp can still read 748295535Sdes entries from a directory tree as well as reading entries from the 749295535Sdes hashed database. To do this, infocmp determines whether the $TERMINFO 750295535Sdes variable points to a directory or a file, and reads the directory-tree 751295535Sdes or hashed database respectively. 752295535Sdes 753295535Sdes You cannot have a directory containing both hashed-database and 754295535Sdes filesystem-based terminfo entries. 755295535Sdes 756295535Sdes Use the parameter value to give the install-prefix used for the 757238106Sdes datbase, e.g., 758238106Sdes --with-hashed-db=/usr/local/BigBase 759238106Sdes to find the corresponding include- and lib-directories under the 760238106Sdes given directory. 761238106Sdes 762238106Sdes See also the --enable-getcap option. 763238106Sdes 764238106Sdes --with-install-prefix=XXX 765238106Sdes Allows you to specify an alternate location for installing ncurses 766238106Sdes after building it. The value you specify is prepended to the "real" 767238106Sdes install location. This simplifies making binary packages. The 768238106Sdes makefile variable DESTDIR is set by this option. It is also possible 769238106Sdes to use 770238106Sdes make install DESTDIR=XXX 771238106Sdes since the makefiles pass that variable to subordinate makes. 772238106Sdes 773238106Sdes NOTE: a few systems build shared libraries with fixed pathnames; this 774238106Sdes option probably will not work for those configurations. 775238106Sdes 776238106Sdes --with-libtool[=XXX] 777238106Sdes Generate libraries with libtool. If this option is selected, then it 778238106Sdes overrides all other library model specifications. Note that libtool 779238106Sdes must already be installed, uses makefile rules dependent on GNU make, 780238106Sdes and does not promise to follow the version numbering convention of 781238106Sdes other shared libraries on your system. However, if the --with-shared 782238106Sdes option does not succeed, you may get better results with this option. 783238106Sdes 784238106Sdes If a parameter value is given, it must be the full pathname of the 785238106Sdes particular version of libtool, e.g., 786238106Sdes /usr/bin/libtool-1.2.3 787238106Sdes 788238106Sdes It is possible to rebuild the configure script to use the automake 789238106Sdes macros for libtool, e.g., AC_PROG_LIBTOOL. See the comments in 790238106Sdes aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure 791238106Sdes using the appropriate patch for autoconf from 792238106Sdes http://invisible-island.net/autoconf/ 793238106Sdes 794238106Sdes --with-manpage-aliases 795238106Sdes Tell the configure script you wish to create entries in the 796238106Sdes man-directory for aliases to manpages which list them, e.g., the 797238106Sdes functions in the panel manpage. This is the default. You can disable 798238106Sdes it if your man program does this. You can also disable 799238106Sdes --with-manpage-symlinks to install files containing a ".so" command 800238106Sdes rather than symbolic links. 801238106Sdes 802238106Sdes --with-manpage-format=XXX 803238106Sdes Tell the configure script how you would like to install man-pages. The 804238106Sdes option value must be one of these: gzip, compress, BSDI, normal, 805238106Sdes formatted. If you do not give this option, the configure script 806238106Sdes attempts to determine which is the case. 807238106Sdes 808238106Sdes --with-manpage-renames=XXX 809238106Sdes Tell the configure script that you wish to rename the manpages while 810238106Sdes installing. Currently the only distribution which does this is 811238106Sdes the Linux Debian. The option value specifies the name of a file 812238106Sdes that lists the renamed files, e.g., $srcdir/man/man_db.renames 813238106Sdes 814238106Sdes --with-manpage-symlinks 815238106Sdes Tell the configure script that you wish to make symbolic links in the 816238106Sdes man-directory for aliases to the man-pages. This is the default, but 817238106Sdes can be disabled for systems that provide this automatically. Doing 818238106Sdes this on systems that do not support symbolic links will result in 819238106Sdes copying the man-page for each alias. 820238106Sdes 821238106Sdes --with-manpage-tbl 822238106Sdes Tell the configure script that you with to preprocess the manpages 823238106Sdes by running them through tbl to generate tables understandable by 824238106Sdes nroff. 825282089Sdes 826282089Sdes --with-mmask-t=TYPE 827282089Sdes Override type of mmask_t, which stores the mouse mask. Prior to 828282089Sdes ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it 829282089Sdes may be unsigned. Use this option if you need to preserve compatibility 830282089Sdes with 64-bit executables. 831282089Sdes 832282089Sdes --with-normal 833282089Sdes Generate normal (i.e., static) libraries (default). 834238106Sdes 835238106Sdes Note: on Linux, the configure script will attempt to use the GPM 836238106Sdes library via the dlsym() function call. Use --without-dlsym to disable 837238106Sdes this feature, or --without-gpm, depending on whether you wish to use 838238106Sdes GPM. 839238106Sdes 840238106Sdes --with-ospeed=TYPE 841238106Sdes Override type of ospeed variable, which is part of the termcap 842238106Sdes compatibility interface. In termcap, this is a 'short', which works 843238106Sdes for a wide range of baudrates because ospeed is not the actual speed 844238106Sdes but the encoded value, e.g., B9600 would be a small number such as 13. 845238106Sdes However the encoding scheme originally allowed for values "only" up to 846238106Sdes 38400bd. A newer set of definitions past 38400bd is not encoded as 847238106Sdes compactly, and is not guaranteed to fit into a short (see the function 848238106Sdes cfgetospeed(), which returns a speed_t for this reason). In practice, 849238106Sdes applications that required knowledge of the ospeed variable, i.e., 850238106Sdes those using termcap, do not use the higher speeds. Your application 851238106Sdes (or system, in general) may or may not. 852238106Sdes 853238106Sdes --with-profile 854238106Sdes Generate profile-libraries These are named by adding "_p" to the root, 855238106Sdes e.g., libncurses_p.a 856238106Sdes 857238106Sdes --with-pthread 858238106Sdes Link with POSIX threads, set --enable-reentrant. The use_window() and 859238106Sdes use_screen() functions will use mutex's, allowing rudimentary support 860238106Sdes for multithreaded applications. 861238106Sdes 862238106Sdes --with-rcs-ids 863238106Sdes Compile-in RCS identifiers. Most of the C files have an identifier. 864238106Sdes 865238106Sdes --with-rel-version=NUM 866238106Sdes Override the release version, which may be used in shared library 867238106Sdes filenames. This consists of a major and minor version number separated 868238106Sdes by ".". Normally the major version number is the same as the ABI 869238106Sdes version; some ports have special requirements for compatibility. 870238106Sdes 871238106Sdes --with-shared 872238106Sdes Generate shared-libraries. The names given depend on the system for 873238106Sdes which you are building, typically using a ".so" suffix, along with 874238106Sdes symbolic links that refer to the release version. 875238106Sdes 876238106Sdes NOTE: Unless you override the configure script by setting the $CFLAGS 877238106Sdes environment variable, these will not be built with the -g debugging 878238106Sdes option. 879238106Sdes 880238106Sdes NOTE: For some configurations, e.g., installing a new version of 881238106Sdes ncurses shared libraries on a machine which already has ncurses 882238106Sdes shared libraries, you may encounter problems with the linker. 883238106Sdes For example, it may prevent you from running the build tree's 884238106Sdes copy of tic (for installing the terminfo database) because it 885238106Sdes loads the system's copy of the ncurses shared libraries. In that 886238106Sdes case, using the misc/shlib script may be helpful, since it sets 887238106Sdes $LD_LIBRARY_PATH to point to the build tree, e.g., 888238106Sdes ./misc/shlib make install 889238106Sdes 890238106Sdes --with-shlib-version=XXX 891238106Sdes Specify whether to use the release or ABI version for shared libraries. 892238106Sdes This is normally chosen automatically based on the type of system 893238106Sdes which you are building on. We use it for testing the configure script. 894238106Sdes 895238106Sdes --with-sysmouse 896238106Sdes use FreeBSD sysmouse interface provide mouse support on the console. 897238106Sdes 898238106Sdes --with-system-type=XXX 899238106Sdes For testing, override the derived host system-type which is used to 900238106Sdes decide things such as the linker commands used to build shared 901287917Sdes libraries. This is normally chosen automatically based on the type of 902287917Sdes system which you are building on. We use it for testing the configure 903287917Sdes script. 904287917Sdes 905287917Sdes --with-terminfo-dirs=XXX 906287917Sdes Specify a search-list of terminfo directories which will be compiled 907287917Sdes into the ncurses library (default: DATADIR/terminfo) 908287917Sdes 909287917Sdes --with-termlib[=XXX] 910287917Sdes When building the ncurses library, organize this as two parts: the 911238106Sdes curses library (libncurses) and the low-level terminfo library 912238106Sdes (libtinfo). This is done to accommodate applications that use only 913238106Sdes the latter. The terminfo library is about half the size of the total. 914238106Sdes 915238106Sdes If an option value is given, that overrides the name of the terminfo 916238106Sdes library. For instance, if the wide-character version is built, the 917238106Sdes terminfo library would be named libtinfow. But the libtinfow interface 918238106Sdes is upward compatible from libtinfo, so it would be possible to overlay 919238106Sdes libtinfo.so with a "wide" version of libtinfow.so by renaming it with 920238106Sdes this option. 921287917Sdes 922287917Sdes --with-termpath=XXX 923287917Sdes Specify a search-list of termcap files which will be compiled into the 924287917Sdes ncurses library (default: /etc/termcap:/usr/share/misc/termcap) 925287917Sdes 926287917Sdes --with-ticlib[=XXX] 927287917Sdes When building the ncurses library, build a separate library for 928238106Sdes the modules that are used only by the utility programs. Normally 929238106Sdes those would be bundled with the termlib or ncurses libraries. 930238106Sdes 931238106Sdes If an option value is given, that overrides the name of the tic 932238106Sdes library. As in termlib, there is no ABI difference between the 933238106Sdes "wide" libticw.so and libtic.so 934238106Sdes 935238106Sdes NOTE: Overriding the name of the tic library may be useful if you are 936238106Sdes also using the --with-termlib option to rename libtinfo. If you are 937238106Sdes not doing that, renaming the tic library can result in conflicting 938238106Sdes library dependencies for tic and other programs built with the tic 939238106Sdes library. 940238106Sdes 941238106Sdes --with-trace 942238106Sdes Configure the trace() function as part of the all models of the ncurses 943238106Sdes library. Normally it is part of the debug (libncurses_g) library only. 944238106Sdes 945238106Sdes --with-valgrind 946238106Sdes For testing, compile with debug option. 947238106Sdes This also sets the --disable-leaks option. 948238106Sdes 949238106Sdes --without-ada 950238106Sdes Suppress the configure script's check for Ada95, do not build the 951238106Sdes Ada95 binding and related demo. 952238106Sdes 953238106Sdes --without-curses-h 954238106Sdes Don't install the ncurses header with the name "curses.h". Rather, 955238106Sdes install as "ncurses.h" and modify the installed headers and manpages 956238106Sdes accordingly. 957238106Sdes 958238106Sdes --without-cxx 959238106Sdes XSI curses declares "bool" as part of the interface. C++ also declares 960238106Sdes "bool". Neither specifies the size and type of booleans, but both 961238106Sdes insist on the same name. We chose to accommodate this by making the 962238106Sdes configure script check for the size and type (e.g., unsigned or signed) 963238106Sdes that your C++ compiler uses for booleans. If you do not wish to use 964238106Sdes ncurses with C++, use this option to tell the configure script to not 965238106Sdes adjust ncurses bool to match C++. 966238106Sdes 967238106Sdes --without-cxx-binding 968238106Sdes Suppress the configure script's check for C++, do not build the 969238106Sdes C++ binding and related demo. 970238106Sdes 971238106Sdes --without-develop 972238106Sdes Disable development options. This does not include those that change 973238106Sdes the interface, such as --enable-widec. 974238106Sdes 975238106Sdes --without-dlsym 976238106Sdes Do not use dlsym() to load GPM dynamically. 977238106Sdes 978238106Sdes --without-progs 979238106Sdes Tell the configure script to suppress the build of ncurses' application 980238106Sdes programs (e.g., tic). The test applications will still be built if you 981238106Sdes type "make", though not if you simply do "make install". 982238106Sdes 983238106Sdes --without-xterm-new 984238106Sdes Tell the configure script to use "xterm-old" for the entry used in 985238106Sdes the terminfo database. This will work with variations such as 986238106Sdes X11R5 and X11R6 xterm. 987238106Sdes 988238106Sdes 989238106SdesCOMPATIBILITY WITH OLDER VERSIONS OF NCURSES: 990266114Sdes-------------------------------------------- 991266114Sdes 992238106Sdes Because ncurses implements the X/Open Curses Specification, its interface 993238106Sdes is fairly stable. That does not mean the interface does not change. 994266114Sdes Changes are made to the documented interfaces when we find differences 995266114Sdes between ncurses and X/Open or implementations which they certify (such as 996238106Sdes Solaris). We add extensions to those interfaces to solve problems not 997238106Sdes addressed by the original curses design, but those must not conflict with 998238106Sdes the X/Open documentation. 999238106Sdes 1000238106Sdes Here are some of the major interface changes, and related problems which 1001238106Sdes you may encounter when building a system with different versions of 1002238106Sdes ncurses: 1003238106Sdes 1004238106Sdes 5.7 (November 2, 2008) 1005238106Sdes Interface changes: 1006238106Sdes 1007238106Sdes + generate linkable stubs for some macros: 1008238106Sdes getattrs 1009238106Sdes 1010238106Sdes + Add new library configuration for tic-library (the non-curses portion 1011238106Sdes of the ncurses library used for the tic program as well as some 1012238106Sdes others such as tack. There is no API change, but makefiles would be 1013296415Sdes changed to use the tic-library built separately. 1014238106Sdes 1015238106Sdes tack, distributed separately from ncurses, uses some of the internal 1016238106Sdes _nc_XXX functions, which are declared in the tic.h header file. 1017238106Sdes 1018238106Sdes The reason for providing this separate library is that none of the 1019238106Sdes functions in it are suitable for threaded applications. 1020238106Sdes 1021238106Sdes + Add new library configuration (ncursest, ncurseswt) which provides 1022238106Sdes rudimentary support for POSIX threads. This introduces opaque 1023238106Sdes access functions to the WINDOW structure and adds a parameter to 1024238106Sdes several internal functions. 1025238106Sdes 1026238106Sdes + move most internal variables (except tic-library) into data blocks 1027238106Sdes _nc_globals and _nc_prescreen to simplify analysis. Those were 1028238106Sdes globally accessible, but since they were not part of the documented 1029238106Sdes API, there is no ABI change. 1030238106Sdes 1031296415Sdes + changed static tables of strings to be indices into long strings, to 1032238106Sdes improve startup performance. This changes parameter lists for some 1033238106Sdes of the internal functions. 1034238106Sdes 1035238106Sdes Added extensions: 1036238106Sdes 1037238106Sdes + add NCURSES_OPAQUE definition in curses.h to control whether internal 1038238106Sdes details of the WINDOW structure are visible to an application. This 1039238106Sdes is always defined when the threaded library is built, and is optional 1040238106Sdes otherwise. New functions for this: is_cleared, is_idcok, is_idlok, 1041238106Sdes is_immedok, is_keypad, is_leaveok, is_nodelay, is_notimeout, 1042238106Sdes is_scrollok, is_syncok, wgetparent and wgetscrreg. 1043238106Sdes 1044296415Sdes + the threaded library (ncursest) also disallows direct updating of 1045238106Sdes global curses-level variables, providing functions (via macros) for 1046238106Sdes obtaining their value. A few of those variables can be modified by 1047238106Sdes the application, using new functions: set_escdelay, set_tabsize 1048238106Sdes 1049238106Sdes + added functions use_window() and use_screen() which wrap a mutex 1050238106Sdes (if threading is configured) around a call to a user-supplied 1051238106Sdes function. 1052238106Sdes 1053238106Sdes Added internal functions: 1054238106Sdes _nc_get_alias_table 1055238106Sdes _nc_get_screensize 1056238106Sdes _nc_keyname 1057238106Sdes _nc_screen_of 1058238106Sdes _nc_set_no_padding 1059238106Sdes _nc_tracechar 1060238106Sdes _nc_tracemouse 1061238106Sdes _nc_unctrl 1062238106Sdes _nc_ungetch 1063287917Sdes 1064287917Sdes These are used for leak-testing, and are stubs for 1065287917Sdes ABI compatibility when ncurses is not configured for that 1066287917Sdes using the --disable-leaks configure script option: 1067287917Sdes 1068287917Sdes _nc_free_and_exit 1069287917Sdes _nc_leaks_tinfo 1070287917Sdes 1071287917Sdes Removed internal functions: 1072238106Sdes none 1073238106Sdes 1074238106Sdes Modified internal functions: 1075238106Sdes _nc_fifo_dump 1076238106Sdes _nc_find_entry 1077238106Sdes _nc_handle_sigwinch 1078238106Sdes _nc_init_keytry 1079238106Sdes _nc_keypad 1080238106Sdes _nc_locale_breaks_acs 1081238106Sdes _nc_timed_wait 1082238106Sdes _nc_update_screensize 1083238106Sdes 1084238106Sdes Use new typedef TRIES to replace "struct tries": 1085238106Sdes 1086238106Sdes _nc_add_to_try 1087238106Sdes _nc_expand_try 1088238106Sdes _nc_remove_key 1089238106Sdes _nc_remove_string 1090238106Sdes _nc_trace_tries 1091238106Sdes 1092238106Sdes 5.6 (December 17, 2006) 1093238106Sdes Interface changes: 1094238106Sdes 1095238106Sdes + generate linkable stubs for some macros: 1096238106Sdes 1097238106Sdes getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx, 1098238106Sdes getpary, getpary, 1099238106Sdes 1100238106Sdes and (for libncursesw) 1101238106Sdes 1102238106Sdes wgetbkgrnd 1103238106Sdes 1104238106Sdes Added extensions: 1105238106Sdes nofilter() 1106238106Sdes use_legacy_coding() 1107238106Sdes 1108238106Sdes Added internal functions: 1109238106Sdes _nc_first_db 1110238106Sdes _nc_get_source 1111238106Sdes _nc_handle_sigwinch 1112238106Sdes _nc_is_abs_path 1113238106Sdes _nc_is_dir_path 1114238106Sdes _nc_is_file_path 1115238106Sdes _nc_keep_tic_dir 1116238106Sdes _nc_keep_tic_dir 1117238106Sdes _nc_last_db 1118238106Sdes _nc_next_db 1119238106Sdes _nc_read_termtype 1120238106Sdes _nc_tic_dir 1121238106Sdes 1122238106Sdes Also (if using the hashed database configuration): 1123238106Sdes 1124238106Sdes _nc_db_close 1125238106Sdes _nc_db_first 1126238106Sdes _nc_db_get 1127238106Sdes _nc_db_have_data 1128238106Sdes _nc_db_have_index 1129238106Sdes _nc_db_next 1130238106Sdes _nc_db_open 1131238106Sdes _nc_db_put 1132238106Sdes 1133238106Sdes otherwise 1134238106Sdes 1135238106Sdes _nc_hashed_db 1136238106Sdes 1137238106Sdes Removed internal functions: 1138238106Sdes none 1139238106Sdes 1140238106Sdes Modified internal functions: 1141238106Sdes _nc_add_to_try 1142238106Sdes _nc_do_color 1143238106Sdes _nc_expand_try 1144238106Sdes _nc_remove_key 1145238106Sdes _nc_setupscreen 1146238106Sdes 1147238106Sdes 5.5 (October 10, 2005) 1148238106Sdes Interface changes: 1149238106Sdes 1150238106Sdes + terminfo installs "xterm-new" as "xterm" entry rather than 1151238106Sdes "xterm-old" (aka xterm-r6). 1152238106Sdes 1153238106Sdes + terminfo data is installed using the tic -x option (few systems 1154238106Sdes still use ncurses 4.2). 1155238106Sdes 1156238106Sdes + modify C++ binding to work with newer C++ compilers by providing 1157238106Sdes initializers and using modern casts. Old-style header names are 1158238106Sdes still used in this release to allow compiling with not-so-old 1159238106Sdes compilers. 1160238106Sdes 1161238106Sdes + form and menu libraries now work with wide-character data. 1162289063Sdes Applications which bypassed the form library and manipulated the 1163289063Sdes FIELD.buf data directly will not work properly with libformw, since 1164289063Sdes that no longer points to an array of char. The set_field_buffer() 1165289063Sdes and field_buffer() functions translate to/from the actual field 1166289063Sdes data. 1167289063Sdes 1168289063Sdes + change SP->_current_attr to a pointer, adjust ifdef's to ensure that 1169289063Sdes libtinfo.so and libtinfow.so have the same ABI. The reason for this 1170289063Sdes is that the corresponding data which belongs to the upper-level 1171238106Sdes ncurses library has a different size in each model. 1172238106Sdes 1173238106Sdes + winnstr() now returns multibyte character strings for the 1174238106Sdes wide-character configuration. 1175238106Sdes 1176238106Sdes + assume_default_colors() no longer requires that use_default_colors() 1177238106Sdes be called first. 1178238106Sdes 1179238106Sdes + data_ahead() now works with wide-characters. 1180238106Sdes 1181238106Sdes + slk_set() and slk_wset() now accept and store multibyte or 1182238106Sdes multicolumn characters. 1183238106Sdes 1184238106Sdes + start_color() now returns OK if colors have already been started. 1185238106Sdes start_color() also returns ERR if it cannot allocate memory. 1186238106Sdes 1187238106Sdes + pair_content() now returns -1 for consistency with init_pair() if it 1188238106Sdes corresponds to the default-color. 1189238106Sdes 1190238106Sdes + unctrl() now returns null if its parameter does not correspond 1191238106Sdes to an unsigned char. 1192238106Sdes 1193238106Sdes Added extensions: 1194238106Sdes Experimental mouse version 2 supports wheel mice with buttons 1195238106Sdes 4 and 5. This requires ABI 6 because it modifies the encoding 1196238106Sdes of mouse events. 1197238106Sdes 1198238106Sdes Experimental extended colors allows encoding of 256 foreground 1199238106Sdes and background colors, e.g., with the xterm-256color or 1200238106Sdes xterm-88color terminfo entries. This requires ABI 6 because 1201238106Sdes it changes the size of cchar_t. 1202238106Sdes 1203238106Sdes Added internal functions: 1204238106Sdes _nc_check_termtype2 1205238106Sdes _nc_resolve_uses2 1206282089Sdes _nc_retrace_cptr 1207287917Sdes _nc_retrace_cvoid_ptr 1208238106Sdes _nc_retrace_void_ptr 1209238106Sdes _nc_setup_term 1210287917Sdes 1211287917Sdes Removed internal functions: 1212238106Sdes none 1213238106Sdes 1214238106Sdes Modified internal functions: 1215238106Sdes _nc_insert_ch 1216238106Sdes _nc_save_str 1217238106Sdes _nc_trans_string 1218238106Sdes 1219238106Sdes 5.4 (February 8, 2004) 1220238106Sdes Interface changes: 1221238106Sdes 1222238106Sdes + add the remaining functions for X/Open curses wide-character support. 1223238106Sdes These are only available if the library is configured using the 1224238106Sdes --enable-widec option. 1225238106Sdes pecho_wchar() 1226238106Sdes slk_wset() 1227238106Sdes 1228238106Sdes + write getyx() and related 2-return macros in terms of getcury(), 1229238106Sdes getcurx(), etc. 1230238106Sdes 1231238106Sdes + simplify ifdef for bool declaration in curses.h 1232238106Sdes 1233238106Sdes + modify ifdef's in curses.h that disabled use of __attribute__() for 1234238106Sdes g++, since recent versions implement the cases which ncurses uses. 1235238106Sdes 1236238106Sdes + change some interfaces to use const: 1237238106Sdes define_key() 1238238106Sdes mvprintw() 1239238106Sdes mvwprintw() 1240238106Sdes printw() 1241238106Sdes vw_printw() 1242238106Sdes winsnstr() 1243238106Sdes wprintw() 1244238106Sdes 1245238106Sdes Added extensions: 1246238106Sdes key_defined() 1247238106Sdes 1248238106Sdes Added internal functions: 1249238106Sdes _nc_get_locale() 1250238106Sdes _nc_insert_ch() 1251238106Sdes _nc_is_charable() wide 1252238106Sdes _nc_locale_breaks_acs() 1253238106Sdes _nc_pathlast() 1254238106Sdes _nc_to_char() wide 1255238106Sdes _nc_to_widechar() wide 1256238106Sdes _nc_tparm_analyze() 1257238106Sdes _nc_trace_bufcat() debug 1258238106Sdes _nc_unicode_locale() 1259238106Sdes 1260238106Sdes Removed internal functions: 1261238106Sdes _nc_outstr() 1262238106Sdes _nc_sigaction() 1263238106Sdes 1264238106Sdes Modified internal functions: 1265238106Sdes _nc_remove_string() 1266266114Sdes _nc_retrace_chtype() 1267266114Sdes 1268266114Sdes 5.3 (October 12, 2002) 1269266114Sdes Interface changes: 1270266114Sdes 1271266114Sdes + change type for bool used in headers to NCURSES_BOOL, which usually 1272266114Sdes is the same as the compiler's definition for 'bool'. 1273276605Sdes 1274276605Sdes + add all but two functions for X/Open curses wide-character support. 1275276605Sdes These are only available if the library is configured using the 1276276605Sdes --enable-widec option. Missing functions are 1277276605Sdes pecho_wchar() 1278276605Sdes slk_wset() 1279276605Sdes 1280276605Sdes + add environment variable $NCURSES_ASSUMED_COLORS to modify the 1281276605Sdes assume_default_colors() extension. 1282276605Sdes 1283276605Sdes Added extensions: 1284276605Sdes is_term_resized() 1285276605Sdes resize_term() 1286276605Sdes 1287276605Sdes Added internal functions: 1288276605Sdes _nc_altcharset_name() debug 1289287917Sdes _nc_reset_colors() 1290287917Sdes _nc_retrace_bool() debug 1291287917Sdes _nc_retrace_unsigned() debug 1292287917Sdes _nc_rootname() 1293287917Sdes _nc_trace_ttymode() debug 1294287917Sdes _nc_varargs() debug 1295287917Sdes _nc_visbufn() debug 1296287917Sdes _nc_wgetch() 1297287917Sdes 1298287917Sdes Removed internal functions: 1299287917Sdes _nc_background() 1300287917Sdes 1301287917Sdes Modified internal functions: 1302287917Sdes _nc_freeall() debug 1303287917Sdes 1304287917Sdes 5.2 (October 21, 2000) 1305287917Sdes Interface changes: 1306287917Sdes 1307287917Sdes + revert termcap ospeed variable to 'short' (see discussion of the 1308287917Sdes --with-ospeed configure option). 1309287917Sdes 1310287917Sdes 5.1 (July 8, 2000) 1311287917Sdes Interface changes: 1312287917Sdes 1313287917Sdes + made the extended terminal capabilities 1314287917Sdes (configure --enable-tcap-names) a standard feature. This should 1315287917Sdes be transparent to applications that do not require it. 1316287917Sdes 1317287917Sdes + removed the trace() function and related trace support from the 1318287917Sdes production library. 1319287917Sdes 1320287917Sdes + modified curses.h.in, undef'ing some symbols to avoid conflict 1321287917Sdes with C++ STL. 1322287917Sdes 1323287917Sdes Added extensions: assume_default_colors(). 1324287917Sdes 1325287917Sdes 5.0 (October 23, 1999) 1326287917Sdes Interface changes: 1327287917Sdes 1328287917Sdes + implemented the wcolor_set() and slk_color() functions. 1329287917Sdes 1330287917Sdes + move macro winch to a function, to hide details of struct ldat 1331287917Sdes 1332287917Sdes + corrected prototypes for slk_* functions, using chtype rather than 1333287917Sdes attr_t. 1334287917Sdes 1335287917Sdes + the slk_attr_{set,off,on} functions need an additional void* 1336287917Sdes parameter according to XSI. 1337287917Sdes 1338287917Sdes + modified several prototypes to correspond with 1997 version of X/Open 1339287917Sdes Curses: [w]attr_get(), [w]attr_set(), border_set() have different 1340287917Sdes parameters. Some functions were renamed or misspelled: 1341287917Sdes erase_wchar(), in_wchntr(), mvin_wchntr(). Some developers have used 1342287917Sdes attr_get(). 1343287917Sdes 1344287917Sdes Added extensions: keybound(), curses_version(). 1345287917Sdes 1346287917Sdes Terminfo database changes: 1347287917Sdes 1348287917Sdes + change translation for termcap 'rs' to terminfo 'rs2', which is 1349287917Sdes the documented equivalent, rather than 'rs1'. 1350287917Sdes 1351287917Sdes The problems are subtler in recent releases. 1352287917Sdes 1353287917Sdes a) This release provides users with the ability to define their own 1354292206Sdes terminal capability extensions, like termcap. To accomplish this, 1355292206Sdes we redesigned the TERMTYPE struct (in term.h). Very few 1356292206Sdes applications use this struct. They must be recompiled to work with 1357292206Sdes the 5.0 library. 1358292206Sdes 1359292206Sdes a) If you use the extended terminfo names (i.e., you used configure 1360292206Sdes --enable-tcap-names), the resulting terminfo database can have some 1361292206Sdes entries which are not readable by older versions of ncurses. This 1362292206Sdes is a bug in the older versions: 1363292206Sdes 1364238106Sdes + the terminfo database stores booleans, numbers and strings in 1365238106Sdes arrays. The capabilities that are listed in the arrays are 1366238106Sdes specified by X/Open. ncurses recognizes a number of obsolete and 1367238106Sdes extended names which are stored past the end of the specified 1368238106Sdes entries. 1369238106Sdes 1370238106Sdes + a change to read_entry.c in 951001 made the library do an lseek() 1371238106Sdes call incorrectly skipping data which is already read from the 1372238106Sdes string array. This happens when the number of strings in the 1373238106Sdes terminfo data file is greater than STRCOUNT, the number of 1374238106Sdes specified and obsolete or extended strings. 1375238106Sdes 1376238106Sdes + as part of alignment with the X/Open final specification, in the 1377238106Sdes 990109 patch we added two new terminfo capabilities: 1378238106Sdes set_a_attributes and set_pglen_inch). This makes the indices for 1379238106Sdes the obsolete and extended capabilities shift up by 2. 1380238106Sdes 1381238106Sdes + the last two capabilities in the obsolete/extended list are memu 1382238106Sdes and meml, which are found in most terminfo descriptions for xterm. 1383238106Sdes 1384238106Sdes When trying to read this terminfo entry, the spurious lseek() 1385238106Sdes causes the library to attempt to read the final portion of the 1386238106Sdes terminfo data (the text of the string capabilities) 4 characters 1387238106Sdes past its starting point, and reads 4 characters too few. The 1388238106Sdes library rejects the data, and applications are unable to 1389238106Sdes initialize that terminal type. 1390238106Sdes 1391238106Sdes FIX: remove memu and meml from the xterm description. They are 1392238106Sdes obsolete, not used by ncurses. (It appears that the feature was 1393238106Sdes added to xterm to make it more like hpterm). 1394238106Sdes 1395238106Sdes This is not a problem if you do not use the -x option of tic to 1396238106Sdes create a terminfo database with extended names. Note that the 1397238106Sdes user-defined terminal capabilities are not affected by this bug, 1398238106Sdes since they are stored in a table after the older terminfo data ends, 1399238106Sdes and are invisible to the older libraries. 1400238106Sdes 1401238106Sdes c) Some developers did not wish to use the C++ binding, and used the 1402238106Sdes configure --without-cxx option. This causes problems if someone 1403238106Sdes uses the ncurses library from C++ because that configure test 1404238106Sdes determines the type for C++'s bool and makes ncurses match it, since 1405238106Sdes both C++ and curses are specified to declare bool. Calling ncurses 1406238106Sdes functions with the incorrect type for bool will cause execution 1407238106Sdes errors. In 5.0 we added a configure option "--without-cxx-binding" 1408238106Sdes which controls whether the binding itself is built and installed. 1409238106Sdes 1410238106Sdes 4.2 (March 2, 1998) 1411238106Sdes Interface changes: 1412238106Sdes 1413238106Sdes + correct prototype for termattrs() as per XPG4 version 2. 1414238106Sdes 1415238106Sdes + add placeholder prototypes for color_set(), erasewchar(), 1416238106Sdes term_attrs(), wcolor_set() as per XPG4 version 2. 1417238106Sdes 1418238106Sdes + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in 1419238106Sdes SVr4 headers. 1420238106Sdes 1421238106Sdes New extensions: keyok() and define_key(). 1422238106Sdes 1423238106Sdes Terminfo database changes: 1424238106Sdes 1425238106Sdes + corrected definition in curses.h for ACS_LANTERN, which was 'I' 1426238106Sdes rather than 'i'. 1427238106Sdes 1428238106Sdes 4.1 (May 15, 1997) 1429238106Sdes 1430238106Sdes We added these extensions: use_default_colors(). Also added 1431238106Sdes configure option --enable-const, to support the use of const where 1432238106Sdes X/Open should have, but did not, specify. 1433238106Sdes 1434238106Sdes The terminfo database content changed the representation of color for 1435238106Sdes most entries that use ANSI colors. SVr4 curses treats the setaf/setab 1436238106Sdes and setf/setb capabilities differently, interchanging the red/blue 1437238106Sdes colors in the latter. 1438238106Sdes 1439238106Sdes 4.0 (December 24, 1996) 1440238106Sdes 1441238106Sdes We bumped to version 4.0 because the newly released dynamic loader 1442238106Sdes (ld.so.1.8.5) on Linux did not load shared libraries whose ABI and REL 1443238106Sdes versions were inconsistent. At that point, ncurses ABI was 3.4 and the 1444238106Sdes REL was 1.9.9g, so we made them consistent. 1445238106Sdes 1446238106Sdes 1.9.9g (December 1, 1996) 1447238106Sdes 1448238106Sdes This fixed most of the problems with 1.9.9e, and made these interface 1449276699Sdes changes: 1450238106Sdes 1451238106Sdes + remove tparam(), which had been provided for compatibility with 1452238106Sdes some termcap. tparm() is standard, and does not conflict with 1453238106Sdes application's fallback for missing tparam(). 1454238106Sdes 1455238106Sdes + turn off hardware echo in initscr(). This changes the sense of the 1456238106Sdes echo() function, which was initialized to echoing rather than 1457238106Sdes nonechoing (the latter is specified). There were several other 1458238106Sdes corrections to the terminal I/O settings which cause applications to 1459238106Sdes behave differently. 1460238106Sdes 1461238106Sdes + implemented several functions (such as attr_on()) which were 1462238106Sdes available only as macros. 1463238106Sdes 1464238106Sdes + corrected several typos in curses.h.in (i.e., the mvXXXX macros). 1465238106Sdes 1466238106Sdes + corrected prototypes for delay_output(), 1467238106Sdes has_color, immedok() and idcok(). 1468238106Sdes 1469238106Sdes + corrected misspelled getbkgd(). Some applications used the 1470238106Sdes misspelled name. 1471238106Sdes 1472238106Sdes + added _yoffset to WINDOW. The size of WINDOW does not impact 1473238106Sdes applications, since they use only pointers to WINDOW structs. 1474238106Sdes 1475238106Sdes These changes were made to the terminfo database: 1476238106Sdes 1477276699Sdes + removed boolean 'getm' which was available as an extended name. 1478276699Sdes 1479276699Sdes We added these extensions: wresize(), resizeterm(), has_key() and 1480276699Sdes mcprint(). 1481276699Sdes 1482276699Sdes 1.9.9e (March 24, 1996) 1483276699Sdes 1484276699Sdes not recommended (a last-minute/untested change left the forms and 1485276699Sdes menus libraries unusable since they do not repaint the screen). 1486276699Sdes Foreground/background colors are combined incorrectly, working properly 1487238106Sdes only on a black background. When this was released, the X/Open 1488238106Sdes specification was available only in draft form. 1489238106Sdes 1490238106Sdes Some applications (such as lxdialog) were "fixed" to work with the 1491238106Sdes incorrect color scheme. 1492238106Sdes 1493238106Sdes 1494238106SdesIF YOU ARE A SYSTEM INTEGRATOR: 1495238106Sdes------------------------------ 1496238106Sdes 1497238106Sdes Configuration and Installation: 1498238106Sdes 1499238106Sdes On platforms where ncurses is assumed to be installed in /usr/lib, 1500238106Sdes the configure script uses "/usr" as a default: 1501238106Sdes 1502238106Sdes Linux, FreeBSD, NetBSD, OpenBSD, Cygwin 1503238106Sdes 1504238106Sdes For other platforms, the default is "/usr/local". See the discussion 1505238106Sdes of the "--disable-overwrite" option. 1506238106Sdes 1507238106Sdes The location of the terminfo is set indirectly by the "--datadir" 1508238106Sdes configure option, e.g., /usr/share/terminfo, given a datadir of 1509238106Sdes /usr/share. You may want to override this if you are installing 1510238106Sdes ncurses libraries in nonstandard locations, but wish to share the 1511238106Sdes terminfo database. 1512238106Sdes 1513238106Sdes Normally the ncurses library is configured in a pure-terminfo mode; 1514238106Sdes that is, with the --disable-termcap option. This makes the ncurses 1515276605Sdes library smaller and faster. The ncurses library includes a termcap 1516276605Sdes emulation that queries the terminfo database, so even applications that 1517276605Sdes use raw termcap to query terminal characteristics will win (providing 1518276605Sdes you recompile and relink them!). 1519276605Sdes 1520276605Sdes If you must configure with termcap fallback enabled, you may also wish 1521276605Sdes to use the --enable-getcap option. This speeds up termcap-based 1522276605Sdes startups, at the expense of not allowing personal termcap entries to 1523276605Sdes reference the terminfo tree. See comments in 1524276605Sdes ncurses/tinfo/read_termcap.c for further details. 1525276605Sdes 1526276605Sdes Note that if you have $TERMCAP set, ncurses will use that value 1527276605Sdes to locate termcap data. In particular, running from xterm will 1528276605Sdes set $TERMCAP to the contents of the xterm's termcap entry. 1529276605Sdes If ncurses sees that, it will not examine /etc/termcap. 1530276605Sdes 1531276605Sdes Keyboard Mapping: 1532276605Sdes 1533276605Sdes The terminfo file assumes that Shift-Tab generates \E[Z (the ECMA-48 1534276605Sdes reverse-tabulation sequence) rather than ^I. Here are the loadkeys -d 1535276605Sdes mappings that will set this up: 1536276605Sdes 1537276605Sdes keycode 15 = Tab Tab 1538276605Sdes alt keycode 15 = Meta_Tab 1539276605Sdes shift keycode 15 = F26 1540276605Sdes string F26 ="\033[Z" 1541276605Sdes 1542276605Sdes Naming the Console Terminal 1543276605Sdes 1544276605Sdes In various systems there has been a practice of designating the system 1545276605Sdes console driver type as `console'. Please do not do this! It 1546276605Sdes complicates peoples' lives, because it can mean that several different 1547276605Sdes terminfo entries from different operating systems all logically want to 1548276605Sdes be called `console'. 1549276605Sdes 1550276605Sdes Please pick a name unique to your console driver and set that up 1551276605Sdes in the /etc/inittab table or local equivalent. Send the entry to the 1552276605Sdes terminfo maintainer (listed in the misc/terminfo file) to be included 1553276605Sdes in the terminfo file, if it's not already there. See the 1554276605Sdes term(7) manual page included with this distribution for more on 1555276605Sdes conventions for choosing type names. 1556276605Sdes 1557276605Sdes Here are some recommended primary console names: 1558276605Sdes 1559276605Sdes linux -- Linux console driver 1560276605Sdes freebsd -- FreeBSD 1561276605Sdes netbsd -- NetBSD 1562276605Sdes bsdos -- BSD/OS 1563276605Sdes 1564276605Sdes If you are responsible for integrating ncurses for one of these 1565276605Sdes distribution, please either use the recommended name or get back 1566276605Sdes to us explaining why you don't want to, so we can work out nomenclature 1567276605Sdes that will make users' lives easier rather than harder. 1568276605Sdes 1569276605Sdes 1570276605SdesRECENT XTERM VERSIONS: 1571276605Sdes--------------------- 1572276605Sdes 1573276605Sdes The terminfo database file included with this distribution assumes you 1574276605Sdes are running a modern xterm based on XFree86 (i.e., xterm-new). The 1575276605Sdes earlier X11R6 entry (xterm-r6) and X11R5 entry (xterm-r5) is provided 1576276605Sdes as well. See the --without-xterm-new configure script option if you 1577276605Sdes are unable to update your system. 1578276605Sdes 1579276605Sdes 1580276605SdesCONFIGURING FALLBACK ENTRIES: 1581276605Sdes---------------------------- 1582276605Sdes 1583276605Sdes In order to support operation of ncurses programs before the terminfo 1584276605Sdes tree is accessible (that is, in single-user mode or at OS installation 1585276605Sdes time) the ncurses library can be compiled to include an array of 1586276605Sdes pre-fetched fallback entries. This must be done on a machine which 1587276605Sdes has ncurses' infocmp and terminfo database installed. 1588276605Sdes 1589276605Sdes These entries are checked by setupterm() only when the conventional 1590276605Sdes fetches from the terminfo tree and the termcap fallback (if configured) 1591276605Sdes have been tried and failed. Thus, the presence of a fallback will not 1592276605Sdes shadow modifications to the on-disk entry for the same type, when that 1593276605Sdes entry is accessible. 1594276605Sdes 1595276605Sdes By default, there are no entries on the fallback list. After you have 1596276605Sdes built the ncurses suite for the first time, you can change the list 1597276605Sdes (the process needs infocmp(1)). To do so, use the script 1598276605Sdes ncurses/tinfo/MKfallback.sh. A configure script option 1599276605Sdes --with-fallbacks does this (it accepts a comma-separated list of the 1600276605Sdes names you wish, and does not require a rebuild). 1601276605Sdes 1602276605Sdes If you wanted (say) to have linux, vt100, and xterm fallbacks, you 1603276605Sdes would use the commands 1604276605Sdes 1605276605Sdes cd ncurses; 1606276605Sdes tinfo/MKfallback.sh linux vt100 xterm >fallback.c 1607276605Sdes 1608276605Sdes Then just rebuild and reinstall the library as you would normally. 1609276605Sdes You can restore the default empty fallback list with 1610276605Sdes 1611276605Sdes tinfo/MKfallback.sh >fallback.c 1612276605Sdes 1613276605Sdes The overhead for an empty fallback list is one trivial stub function. 1614276605Sdes Any non-empty fallback list is const-ed and therefore lives in sharable 1615276605Sdes text space. You can look at the comment trailing each initializer in 1616276605Sdes the generated ncurses/fallback.c file to see the core cost of the 1617276605Sdes fallbacks. A good rule of thumb for modern vt100-like entries is that 1618276605Sdes each one will cost about 2.5K of text space. 1619276605Sdes 1620276605Sdes 1621276605SdesBSD CONVERSION NOTES: 1622276605Sdes-------------------- 1623276605Sdes 1624276605Sdes If you need to support really ancient BSD programs, you probably 1625276605Sdes want to configure with the --enable-bsdpad option. What this does 1626276605Sdes is enable code in tputs() that recognizes a numeric prefix on a 1627276605Sdes capability as a request for that much trailing padding in milliseconds. 1628276605Sdes There are old BSD programs that do things like tputs("50"). 1629276605Sdes 1630276605Sdes (If you are distributing ncurses as a support-library component of 1631238106Sdes an application you probably want to put the remainder of this section 1632238106Sdes in the package README file.) 1633238106Sdes 1634238106Sdes The following note applies only if you have configured ncurses with 1635238106Sdes --enable-termcap. 1636238106Sdes 1637238106Sdes------------------------------- CUT HERE -------------------------------- 1638238106Sdes 1639238106SdesIf you are installing this application privately (either because you 1640238106Sdeshave no root access or want to experiment with it before doing a root 1641238106Sdesinstallation), there are a couple of details you need to be aware of. 1642238106SdesThey have to do with the ncurses library, which uses terminfo rather 1643238106Sdesthan termcap for describing terminal characteristics. 1644238106Sdes 1645238106SdesThough the ncurses library is terminfo-based, it will interpret your 1646238106SdesTERMCAP variable (if present), any local termcap files you reference 1647238106Sdesthrough it, and the system termcap file. However, in order to avoid 1648238106Sdesslowing down your application startup, it will only do this once per 1649terminal type! 1650 1651The first time you load a given terminal type from your termcap 1652database, the library initialization code will automatically write it 1653in terminfo format to a subdirectory under $HOME/.terminfo. After 1654that, the initialization code will find it there and do a (much 1655faster) terminfo fetch. 1656 1657Usually, all this means is that your home directory will silently grow 1658an invisible .terminfo subdirectory which will get filled in with 1659terminfo descriptions of terminal types as you invoke them. If anyone 1660ever installs a global terminfo tree on your system, this will quietly 1661stop happening and your $HOME/.terminfo will become redundant. 1662 1663The objective of all this logic is to make converting from BSD termcap 1664as painless as possible without slowing down your application (termcap 1665compilation is expensive). 1666 1667If you don't have a TERMCAP variable or custom personal termcap file, 1668you can skip the rest of this dissertation. 1669 1670If you *do* have a TERMCAP variable and/or a custom personal termcap file 1671that defines a terminal type, that definition will stop being visible 1672to this application after the first time you run it, because it will 1673instead see the terminfo entry that it wrote to $HOME/terminfo the 1674first time around. 1675 1676Subsequently, editing the TERMCAP variable or personal TERMCAP file 1677will have no effect unless you explicitly remove the terminfo entry 1678under $HOME/terminfo. If you do that, the entry will be recompiled 1679from your termcap resources the next time it is invoked. 1680 1681To avoid these complications, use infocmp(1) and tic(1) to edit the 1682terminfo directory directly. 1683 1684------------------------------- CUT HERE -------------------------------- 1685 1686USING NCURSES WITH AFS: 1687 AFS treats each directory as a separate logical filesystem, you 1688 can't hard-link across them. The --enable-symlinks option copes 1689 with this by making tic use symbolic links. 1690 1691USING NCURSES WITH GPM: 1692 Ncurses 4.1 and up can be configured to use GPM (General Purpose 1693 Mouse) which is used on Linux console. Be aware that GPM is commonly 1694 installed as a shared library which contains a wrapper for the curses 1695 wgetch() function (libcurses.o). Some integrators have simplified 1696 linking applications by combining all or part of libcurses.so into the 1697 libgpm.so file, producing symbol conflicts with ncurses (specifically 1698 the wgetch function). This was originally the BSD curses, but 1699 generally whatever curses library exists on the system. 1700 1701 You may be able to work around this problem by linking as follows: 1702 1703 cc -o foo foo.o -lncurses -lgpm -lncurses 1704 1705 but the linker may not cooperate, producing mysterious errors. 1706 See the FAQ, as well as the discussion under the --with-gpm option: 1707 1708 http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib 1709 1710BUILDING NCURSES WITH A CROSS-COMPILER 1711 Ncurses can be built with a cross-compiler. Some parts must be built 1712 with the host's compiler since they are used for building programs 1713 (e.g., ncurses/make_hash and ncurses/make_keys) that generate tables 1714 that are compiled into the ncurses library. The essential thing to do 1715 is set the BUILD_CC environment variable to your host's compiler, and 1716 run the configure script configuring for the cross-compiler. 1717 1718 The configure options --with-build-cc, etc., are provided to make this 1719 simpler. Since make_hash and make_keys use only ANSI C features, it 1720 is normally not necessary to provide the other options such as 1721 --with-build-libs, but they are provided for completeness. 1722 1723 Note that all of the generated source-files which are part of ncurses 1724 will be made if you use 1725 1726 make sources 1727 1728 This would be useful in porting to an environment which has little 1729 support for the tools used to generate the sources, e.g., sed, awk and 1730 Bourne-shell. 1731 1732 When ncurses has been successfully cross-compiled, you may want to use 1733 "make install" (with a suitable target directory) to construct an 1734 install tree. Note that in this case (as with the --with-fallbacks 1735 option), ncurses uses the development platform's tic to do the 1736 "make install.data" portion. 1737 1738BUGS: 1739 Send any feedback to the ncurses mailing list at 1740 bug-ncurses@gnu.org. To subscribe send mail to 1741 bug-ncurses-request@gnu.org with body that reads: 1742 subscribe ncurses <your-email-address-here> 1743 1744 The Hacker's Guide in the doc directory includes some guidelines 1745 on how to report bugs in ways that will get them fixed most quickly. 1746 1747-- vile:txtmode 1748