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