1------------------------------------------------------------------------------- 2-- Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. -- 3-- -- 4-- Permission is hereby granted, free of charge, to any person obtaining a -- 5-- copy of this software and associated documentation files (the -- 6-- "Software"), to deal in the Software without restriction, including -- 7-- without limitation the rights to use, copy, modify, merge, publish, -- 8-- distribute, distribute with modifications, sublicense, and/or sell copies -- 9-- of the Software, and to permit persons to whom the Software is furnished -- 10-- to do so, subject to the following conditions: -- 11-- -- 12-- The above copyright notice and this permission notice shall be included -- 13-- in all copies or substantial portions of the Software. -- 14-- -- 15-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- 16-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- 17-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- 18-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- 19-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- 20-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- 21-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- 22-- -- 23-- Except as contained in this notice, the name(s) of the above copyright -- 24-- holders shall not be used in advertising or otherwise to promote the -- 25-- sale, use or other dealings in this Software without prior written -- 26-- authorization. -- 27------------------------------------------------------------------------------- 28-- $Id: INSTALL,v 1.122 2007/12/01 19:37:47 tom Exp $ 29--------------------------------------------------------------------- 30 How to install Ncurses/Terminfo on your system 31--------------------------------------------------------------------- 32 33 ************************************************************ 34 * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. * 35 ************************************************************ 36 37You should be reading the file INSTALL in a directory called ncurses-d.d, where 38d.d is the current version number. There should be several subdirectories, 39including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs', 40and `test'. See the README file for a roadmap to the package. 41 42If you are a Linux or FreeBSD or NetBSD distribution integrator or packager, 43please read and act on the section titled IF YOU ARE A SYSTEM INTEGRATOR 44below. 45 46If you are converting from BSD curses and do not have root access, be sure 47to read the BSD CONVERSION NOTES section below. 48 49If you are trying to build applications using gpm with ncurses, 50read the USING NCURSES WITH GPM section below. 51 52If you are running over the Andrew File System see the note below on 53USING NCURSES WITH AFS. 54 55If you are cross-compiling, see the note below on BUILDING NCURSES WITH A 56CROSS-COMPILER. 57 58If you want to build the Ada95 binding, go to the Ada95 directory and 59follow the instructions there. The Ada95 binding is not covered below. 60 61If you are using anything but (a) Linux, or (b) one of the 4.4BSD-based 62i386 Unixes, go read the Portability section in the TO-DO file before you 63do anything else. 64 65 66REQUIREMENTS: 67------------ 68 69You will need the following to build and install ncurses under UNIX: 70 71 * ANSI C compiler (gcc, for instance) 72 * sh (bash will do) 73 * awk (mawk or gawk will do) 74 * sed 75 * BSD or System V style install (a script is enclosed) 76 77Ncurses has been also built in the OS/2 EMX environment. 78 79 80INSTALLATION PROCEDURE: 81---------------------- 82 831. First, decide whether you want ncurses to replace your existing library (in 84 which case you'll need super-user privileges) or be installed in parallel 85 with it. 86 87 The --prefix option to configure changes the root directory for installing 88 ncurses. The default is normally in subdirectories of /usr/local, except 89 for systems where ncurses is normally installed as a system library, e.g., 90 Linux, the various BSD systems and Cygwin. Use --prefix=/usr to replace 91 your default curses distribution. 92 93 The package gets installed beneath the --prefix directory as follows: 94 95 In $(prefix)/bin: tic, infocmp, captoinfo, tset, 96 reset, clear, tput, toe 97 In $(prefix)/lib: libncurses*.* libcurses.a 98 In $(prefix)/share/terminfo: compiled terminal descriptions 99 In $(prefix)/include: C header files 100 Under $(prefix)/man: the manual pages 101 102 Note that the configure script attempts to locate previous installation of 103 ncurses, and will set the default prefix according to where it finds the 104 ncurses headers. 105 106 Do not use commands such as 107 108 make install prefix=XXX 109 110 to change the prefix after configuration, since the prefix value is used 111 for some absolute pathnames such as TERMINFO. Instead do this 112 113 make install DESTDIR=XXX 114 115 See also the discussion of --with-install-prefix. 116 1172. Type `./configure' in the top-level directory of the distribution to 118 configure ncurses for your operating system and create the Makefiles. 119 Besides --prefix, various configuration options are available to customize 120 the installation; use `./configure --help' to list the available options. 121 122 If your operating system is not supported, read the PORTABILITY section in 123 the file ncurses/README for information on how to create a configuration 124 file for your system. 125 126 The `configure' script generates makefile rules for one or more object 127 models and their associated libraries: 128 129 libncurses.a (normal) 130 131 libcurses.a (normal, a link to libncurses.a) 132 This gets left out if you configure with --disable-overwrite. 133 134 libncurses.so (shared) 135 136 libncurses_g.a (debug) 137 138 libncurses_p.a (profile) 139 140 libncurses.la (libtool) 141 142 If you configure using the --enable-widec option, a "w" is appended to the 143 library names (e.g., libncursesw.a), and the resulting libraries support 144 wide-characters, e.g., via a UTF-8 locale. The corresponding header files 145 are compatible with the non-wide-character configuration; wide-character 146 features are provided by ifdef's in the header files. The wide-character 147 library interfaces are not binary-compatible with the non-wide-character 148 version. Building and running the wide-character code relies on a fairly 149 recent implementation of libiconv. We have built this configuration on 150 Linux using libiconv, sometimes requiring libutf8. 151 152 If you do not specify any models, the normal and debug libraries will be 153 configured. Typing `configure' with no arguments is equivalent to: 154 155 ./configure --with-normal --with-debug --enable-overwrite 156 157 Typing 158 159 ./configure --with-shared 160 161 makes the shared libraries the default, resulting in 162 163 ./configure --with-shared --with-normal --with-debug --enable-overwrite 164 165 If you want only shared libraries, type 166 167 ./configure --with-shared --without-normal --without-debug 168 169 Rules for generating shared libraries are highly dependent upon the choice 170 of host system and compiler. We've been testing shared libraries on Linux 171 and SunOS with gcc, but more work needs to be done to make shared libraries 172 work on other systems. 173 174 If you have libtool installed, you can type 175 176 ./configure --with-libtool 177 178 to generate the appropriate static and/or shared libraries for your 179 platform using libtool. 180 181 You can make curses and terminfo fall back to an existing file of termcap 182 definitions by configuring with --enable-termcap. If you do this, the 183 library will search /etc/termcap before the terminfo database, and will 184 also interpret the contents of the TERM environment variable. See the 185 section BSD CONVERSION NOTES below. 186 1873. Type `make'. Ignore any warnings, no error messages should be produced. 188 This should compile the ncurses library, the terminfo compiler tic(1), 189 captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1) 190 programs (see the manual pages for explanation of what they do), some test 191 programs, and the panels, menus, and forms libraries. 192 1934. Run ncurses and several other test programs in the test directory to 194 verify that ncurses functions correctly before doing an install that 195 may overwrite system files. Read the file test/README for details on 196 the test programs. 197 198 NOTE: You must have installed the terminfo database, or set the 199 environment variable $TERMINFO to point to a SVr4-compatible terminfo 200 database before running the test programs. Not all vendors' terminfo 201 databases are SVr4-compatible, but most seem to be. Exceptions include 202 DEC's Digital Unix (formerly known as OSF/1). 203 204 If you run the test programs WITHOUT installing terminfo, ncurses may 205 read the termcap file and cache that in $HOME/.terminfo, which will 206 thereafter be used instead of the terminfo database. See the comments 207 on "--enable-getcap-cache", to see why this is a Bad Thing. 208 209 It is possible to configure ncurses to use other terminfo database formats. 210 A few are provided as examples in the include-directory (see --with-caps). 211 212 The ncurses program is designed specifically to test the ncurses library. 213 You can use it to verify that the screen highlights work correctly, that 214 cursor addressing and window scrolling works OK, etc. 215 2165. Once you've tested, you can type `make install' to install libraries, 217 the programs, the terminfo database and the manual pages. Alternately, you 218 can type `make install' in each directory you want to install. In the 219 top-level directory, you can do a partial install using these commands: 220 221 'make install.progs' installs tic, infocmp, etc... 222 'make install.includes' installs the headers. 223 'make install.libs' installs the libraries (and the headers). 224 'make install.data' installs the terminfo data. (Note: `tic' must 225 be installed before the terminfo data can be 226 compiled). 227 'make install.man' installs the manual pages. 228 229 ############################################################################ 230 # CAVEAT EMPTOR: `install.data' run as root will NUKE any existing # 231 # terminfo database. If you have any custom or unusual entries SAVE them # 232 # before you install ncurses. I have a file called terminfo.custom for # 233 # this purpose. Don't forget to run tic on the file once you're done. # 234 ############################################################################ 235 236 The terminfo(5) manual page must be preprocessed with tbl(1) before 237 being formatted by nroff(1). Modern man(1) implementations tend to do 238 this by default, but you may want to look at your version's manual page 239 to be sure. You may also install the manual pages after preprocessing 240 with tbl(1) by specifying the configure option --with-manpage-tbl. 241 242 If the system already has a curses library that you need to keep using 243 you'll need to distinguish between it and ncurses. See the discussion of 244 --disable-overwrite. If ncurses is installed outside the standard 245 directories (/usr/include and /usr/lib) then all your users will need to 246 use the -I option to compile programs and -L to link them. 247 248 If you have another curses installed in your system and you accidentally 249 compile using its curses.h you'll end up with a large number of 250 undefined symbols at link time. 251 252 IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory 253 and run the `capconvert' script. This script will deduce various things 254 about your environment and use them to build you a private terminfo tree, 255 so you can use ncurses applications. 256 257 If more than one user at your site does this, the space for the duplicate 258 trees is wasted. Try to get your site administrators to install a system- 259 wide terminfo tree instead. 260 261 See the BSD CONVERSION NOTES section below for a few more details. 262 2636. The c++ directory has C++ classes that are built on top of ncurses and 264 panels. You must have c++ (and its libraries) installed before you can 265 compile and run the demo. 266 267 Use --without-cxx-binding to tell configure to not build the C++ bindings 268 and demo. 269 270 If you do not have C++, you must use the --without-cxx option to tell 271 the configure script to not attempt to determine the type of 'bool' 272 which may be supported by C++. IF YOU USE THIS OPTION, BE ADVISED THAT 273 YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++. 274 275 276SUMMARY OF CONFIGURE OPTIONS: 277---------------------------- 278 279 The configure script provides a short list of its options when you type 280 281 ./configure --help 282 283 The --help and several options are common to all configure scripts that are 284 generated with autoconf. Those are all listed before the line 285 286 --enable and --with options recognized: 287 288 The other options are specific to this package. We list them in alphabetic 289 order. 290 291 --disable-assumed-color 292 With ncurses 5.1, we introduced a new function, assume_default_colors() 293 which allows applications to specify what the default foreground and 294 background color are assumed to be. Most color applications use 295 full-screen color; but a few do not color the background. While the 296 assumed values can be overridden by invoking assume_default_colors(), 297 you may find it useful to set the assumed values to the pre-5.1 298 convention, using this configure option. 299 300 --disable-big-core 301 Assume machine has little memory. The configure script attempts to 302 determine if your machine has enough memory (about 6Mb) to compile the 303 terminfo database without writing portions to disk. Some allocators 304 return deceptive results, so you may have to override the configure 305 script. Or you may be building tic for a smaller machine. 306 307 --disable-big-strings 308 Disable compile-time optimization of predefined tables which puts 309 all of their strings into a very long string, to reduce relocation 310 overhead. 311 312 --disable-database 313 Use only built-in data. The ncurses libraries normally read terminfo 314 and termcap data from disk. You can configure ncurses to have a 315 built-in database, aka "fallback" entries. Embedded applications may 316 have no need for an external database. Some, but not all of the 317 programs are useful in this configuration, e.g., reset and tput versus 318 infocmp and tic. 319 320 --disable-ext-funcs 321 Disable function-extensions. Configure ncurses without the functions 322 that are not specified by XSI. See ncurses/modules for the exact 323 list of library modules that would be suppressed. 324 325 --disable-hashmap 326 Compile without hashmap scrolling-optimization code. This algorithm is 327 the default. 328 329 --disable-home-terminfo 330 The $HOME/.terminfo directory is normally added to ncurses' search 331 list for reading/writing terminfo entries, since that directory is 332 more likely writable than the system terminfo database. Use this 333 option to disable the feature altogether. 334 335 --disable-largefile 336 Disable compiler flags needed to use large-file interfaces. 337 338 --disable-leaks 339 For testing, compile-in code that frees memory that normally would not 340 be freed, to simplify analysis of memory-leaks. 341 342 Any implementation of curses must not free the memory associated with 343 a screen, since (even after calling endwin()), it must be available 344 for use in the next call to refresh(). There are also chunks of 345 memory held for performance reasons. That makes it hard to analyze 346 curses applications for memory leaks. To work around this, build 347 a debugging version of the ncurses library which frees those chunks 348 which it can, and provides the _nc_free_and_exit() function to free 349 the remainder on exit. The ncurses utility and test programs use this 350 feature, e.g., via the ExitProgram() macro. 351 352 --disable-lp64 353 The header files will ignore use of the _LP64 symbol to make chtype 354 and mmask_t types 32 bits (they may be long on 64-bit hosts, for 355 compatibility with older releases). 356 357 NOTE: this is potentially an ABI change, depending on existing 358 packages. The default for this option is "disabled" for ncurses 359 ABI 5, and "enabled" for ABI 6. 360 361 --disable-macros 362 For testing, use functions rather than macros. The program will run 363 more slowly, but it is simpler to debug. This defines NCURSES_NOMACROS 364 at build time. See also the --enable-expanded option. 365 366 --disable-overwrite 367 If you are installing ncurses on a system which contains another 368 development version of curses, or which could be confused by the loader 369 for another version, we recommend that you leave out the link to 370 -lcurses. The ncurses library is always available as -lncurses. 371 Disabling overwrite also causes the ncurses header files to be 372 installed into a subdirectory, e.g., /usr/local/include/ncurses, 373 rather than the include directory. This makes it simpler to avoid 374 compile-time conflicts with other versions of curses.h 375 376 --disable-relink 377 If --enable-rpath is given, the generated makefiles normally will 378 rebuild the libraries during install. Use this option to simply 379 copy whatever the linked produced. 380 381 This option is ignored if --enable-rpath is not given. 382 383 --disable-root-environ 384 Compile with environment restriction, so certain environment variables 385 are not available when running as root, or via a setuid/setgid 386 application. These are (for example $TERMINFO) those that allow the 387 search path for the terminfo or termcap entry to be customized. 388 389 --disable-scroll-hints 390 Compile without scroll-hints code. This option is ignored when 391 hashmap scrolling is configured, which is the default. 392 393 --disable-tparm-varargs 394 Portable programs should call tparm() using the fixed-length parameter 395 list documented in X/Open. ncurses provides varargs support for this 396 function. Use --disable-tparm-varargs to disable this support. 397 398 --enable-assertions 399 For testing, compile-in assertion code. This is used only for a few 400 places where ncurses cannot easily recover by returning an error code. 401 402 --enable-broken_linker 403 A few platforms have what we consider a broken linker: it cannot link 404 objects from an archive solely by referring to data objects in those 405 files, but requires a function reference. This configure option 406 changes several data references to functions to work around this 407 problem. 408 409 NOTE: With ncurses 5.1, this may not be necessary, since we are 410 told that some linkers interpret uninitialized global data as a 411 different type of reference which behaves as described above. We have 412 explicitly initialized all of the global data to work around the 413 problem. 414 415 --enable-bsdpad 416 Recognize BSD-style prefix padding. Some ancient BSD programs (such as 417 nethack) call tputs("50") to implement delays. 418 419 --enable-colorfgbg 420 Compile with experimental $COLORFGBG code. That environment variable 421 is set by some terminal emulators as a hint to applications, by 422 advertising the default foreground and background colors. During 423 initialization, ncurses sets color pair 0 to match this. 424 425 --enable-const 426 The curses interface as documented in XSI is rather old, in fact 427 including features that precede ANSI C. The prototypes generally do 428 not make effective use of "const". When using stricter compilers (or 429 gcc with appropriate warnings), you may see warnings about the mismatch 430 between const and non-const data. We provide a configure option which 431 changes the interfaces to use const - quieting these warnings and 432 reflecting the actual use of the parameters more closely. The ncurses 433 library uses the symbol NCURSES_CONST for these instances of const, 434 and if you have asked for compiler warnings, will add gcc's const-qual 435 warning. There will still be warnings due to subtle inconsistencies 436 in the interface, but at a lower level. 437 438 NOTE: configuring ncurses with this option may detract from the 439 portability of your applications by encouraging you to use const in 440 places where the XSI curses interface would not allow them. Similar 441 issues arise when porting to SVr4 curses, which uses const in even 442 fewer places. 443 444 --enable-echo 445 Use the option --disable-echo to make the build-log less verbose by 446 suppressing the display of the compile and link commands. This makes 447 it easier to see the compiler warnings. (You can always use "make -n" 448 to see the options that are used). 449 450 --enable-expanded 451 For testing, generate functions for certain macros to make them visible 452 as such to the debugger. See also the --disable-macros option. 453 454 --enable-ext-colors 455 Extend the cchar_t structure to allow more than 16 colors to be 456 encoded. This applies only to the wide-character (--enable-widec) 457 configuration. 458 459 NOTE: using this option will make libraries which are not binary- 460 compatible with libncursesw 5.4. None of the interfaces change, but 461 applications which have an array of cchar_t's must be recompiled. 462 463 --enable-ext-mouse 464 Modify the encoding of mouse state to make room for a 5th mouse button. 465 That allows one to use ncurses with a wheel mouse with xterm or 466 similar X terminal emulators. 467 468 NOTE: using this option will make libraries which are not binary- 469 compatible with libncursesw 5.4. None of the interfaces change, but 470 applications which have mouse mask mmask_t's must be recompiled. 471 472 --enable-getcap 473 Use the 4.4BSD getcap code if available, or a bundled version of it to 474 fetch termcap entries. Entries read in this way cannot use (make 475 cross-references to) the terminfo tree, but it is faster than reading 476 /etc/termcap. 477 478 If configured for one of the *BSD systems, this automatically uses 479 the hashed database system produced using cap_mkdb or similar tools. 480 In that case, there is no advantage in using the --enable-getcap-cache 481 option. 482 483 See also the --with-hashed-db option. 484 485 --enable-getcap-cache 486 Cache translated termcaps under the directory $HOME/.terminfo 487 488 NOTE: this sounds good - it makes ncurses run faster the second time. 489 But look where the data comes from - an /etc/termcap containing lots of 490 entries that are not up to date. If you configure with this option and 491 forget to install the terminfo database before running an ncurses 492 application, you will end up with a hidden terminfo database that 493 generally does not support color and will miss some function keys. 494 495 --enable-hard-tabs 496 Compile-in cursor-optimization code that uses hard-tabs. We would make 497 this a standard feature except for the concern that the terminfo entry 498 may not be accurate, or that your stty settings have disabled the use 499 of tabs. 500 501 --enable-mixed-case 502 Controls whether the filesystem on which the terminfo database resides 503 supports mixed-case filenames (normal for UNIX, but not on other 504 systems). If you do not specify this option, the configure script 505 checks the current filesystem. 506 507 --enable-no-padding 508 Compile-in support for the $NCURSES_NO_PADDING environment variable, 509 which allows you to suppress the effect of non-mandatory padding in 510 terminfo entries. This is the default, unless you have disabled the 511 extended functions. 512 513 --enable-reentrant 514 Compile experimental configuration which improves reentrant use of the 515 library by reducing global and static variables. 516 517 --enable-rpath 518 Use rpath option when generating shared libraries, and (with some 519 restrictions) when linking the corresponding programs. This originally 520 (in 1997) applied mainly to systems using the GNU linker (read the 521 manpage). 522 523 More recently it is useful for systems that require special treatment 524 shared libraries in "unusual" locations. The "system" libraries reside 525 in directories which are on the loader's default search-path. While 526 you may be able to use workarounds such as the $LD_LIBRARY_PATH 527 environment variable, they do not work with setuid applications since 528 the LD_LIBRARY_PATH variable would be unset in that situation. 529 530 This option does not apply to --with-libtool, since libtool makes 531 extra assumptions about rpath. 532 533 --enable-safe-sprintf 534 Compile with experimental safe-sprintf code. You may consider using 535 this if you are building ncurses for a system that has neither 536 vsnprintf() or vsprintf(). It is slow, however. 537 538 --enable-sigwinch 539 Compile support for ncurses' SIGWINCH handler. If your application has 540 its own SIGWINCH handler, ncurses will not use its own. The ncurses 541 handler causes wgetch() to return KEY_RESIZE when the screen-size 542 changes. This option is the default, unless you have disabled the 543 extended functions. 544 545 --enable-signed-char 546 The term.h header declares a Booleans[] array typed "char". But it 547 stores signed values there and "char" is not necessarily signed. 548 Some packagers choose to alter the type of Booleans[] though this 549 is not strictly compatible. This option allows one to implement this 550 alteration without patching the source code. 551 552 --enable-symlinks 553 If your system supports symbolic links, make tic use symbolic links 554 rather than hard links to save diskspace when writing aliases in the 555 terminfo database. 556 557 --enable-tcap-names 558 Compile-in support for user-definable terminal capabilities. Use the 559 -x option of tic and infocmp to treat unrecognized terminal 560 capabilities as user-defined strings. This option is the default, 561 unless you have disabled the extended functions. 562 563 --enable-termcap 564 Compile in support for reading terminal descriptions from termcap if no 565 match is found in the terminfo database. See also the --enable-getcap 566 and --enable-getcap-cache options. 567 568 --enable-warnings 569 Turn on GCC compiler warnings. There should be only a few. 570 571 --enable-wgetch-events 572 Compile with experimental wgetch-events code. See ncurses/README.IZ 573 574 --enable-widec 575 Compile with wide-character code. This makes a different version of 576 the libraries (e.g., libncursesw.so), which stores characters as 577 wide-characters, 578 579 NOTE: applications compiled with this configuration are not compatible 580 with those built for 8-bit characters. You cannot simply make a 581 symbolic link to equate libncurses.so with libncursesw.so 582 583 NOTE: the Ada95 binding may be built against either version of the the 584 ncurses library, but you must decide which: the binding installs the 585 same set of files for either version. Currently (2002/6/22) it does 586 not use the extended features from the wide-character code, so it is 587 probably better to not install the binding for that configuration. 588 589 --enable-xmc-glitch 590 Compile-in support experimental xmc (magic cookie) code. 591 592 --with-abi-version=NUM 593 Override the ABI version, which is used in shared library filenames. 594 Normally this is the same as the release version; some ports have 595 special requirements for compatibility. 596 597 --with-ada-compiler=CMD 598 Specify the Ada95 compiler command (default "gnatmake") 599 600 --with-ada-include=DIR 601 Tell where to install the Ada includes (default: 602 PREFIX/lib/ada/adainclude) 603 604 --with-ada-objects=DIR 605 Tell where to install the Ada objects (default: PREFIX/lib/ada/adalib) 606 607 --with-bool=TYPE 608 If --without-cxx is specified, override the type used for the "bool" 609 declared in curses.h (normally the type is automatically chosen to 610 correspond with that in <stdbool.h>, or defaults to platform-specific 611 sizes). 612 613 --with-build-cc=XXX 614 If cross-compiling, specify a host C compiler, which is needed to 615 compile a few utilities which generate source modules for ncurses. 616 If you do not give this option, the configure script checks if the 617 $BUILD_CC variable is set, and otherwise defaults to gcc or cc. 618 619 --with-build-cflags=XXX 620 If cross-compiling, specify the host C compiler-flags. You might need 621 to do this if the target compiler has unusual flags which confuse the 622 host compiler. 623 624 --with-build-cppflags=XXX 625 If cross-compiling, specify the host C preprocessor-flags. You might 626 need to do this if the target compiler has unusual flags which confuse 627 the host compiler. 628 629 --with-build-ldflags=XXX 630 If cross-compiling, specify the host linker-flags. You might need to 631 do this if the target linker has unusual flags which confuse the host 632 compiler. 633 634 --with-build-libs=XXX 635 If cross-compiling, the host libraries. You might need to do this if 636 the target environment requires unusual libraries. 637 638 --with-caps=XXX 639 Specify an alternate terminfo capabilities file, which makes the 640 configure script look for "include/Caps.XXX". A few systems, e.g., 641 AIX 4.x use the same overall file-format as ncurses for terminfo 642 data, but use different alignments within the tables to support 643 legacy applications. For those systems, you can configure ncurses 644 to use a terminfo database which is compatible with the native 645 applications. 646 647 --with-chtype=TYPE 648 Override type of chtype, which stores the video attributes and (if 649 --enable-widec is not given) a character. Prior to ncurses 5.5, this 650 was always unsigned long, but with ncurses 5.5, it may be unsigned. 651 Use this option if you need to preserve compatibility with 64-bit 652 executables. 653 654 --with-database=XXX 655 Specify the terminfo source file to install. Usually you will wish 656 to install ncurses' default (misc/terminfo.src). Certain systems 657 have special requirements, e.g, OS/2 EMX has a customized terminfo 658 source file. 659 660 --with-dbmalloc 661 For testing, compile and link with Conor Cahill's dbmalloc library. 662 This also sets the --disable-leaks option. 663 664 --with-debug 665 Generate debug-libraries (default). These are named by adding "_g" 666 to the root, e.g., libncurses_g.a 667 668 --with-default-terminfo-dir=XXX 669 Specify the default terminfo database directory. This is normally 670 DATADIR/terminfo, e.g., /usr/share/terminfo. 671 672 --with-dmalloc 673 For testing, compile and link with Gray Watson's dmalloc library. 674 This also sets the --disable-leaks option. 675 676 --with-fallbacks=XXX 677 Specify a list of fallback terminal descriptions which will be 678 compiled into the ncurses library. See CONFIGURING FALLBACK ENTRIES. 679 680 --with-gpm 681 use Alessandro Rubini's GPM library to provide mouse support on the 682 Linux console. Prior to ncurses 5.5, this introduced a dependency on 683 the GPM library. 684 685 Currently ncurses uses the dlsym() function to bind to the library at 686 runtime, so it is only necessary that the library be present when 687 ncurses is built, to obtain the filename (or soname) used in the 688 corresponding dlopen() call. If you give a value for this option, 689 e.g., 690 691 --with-gpm=$HOME/tmp/test-gpm.so 692 693 that overrides the configure check for the soname. 694 695 See also --without-dlsym 696 697 --with-hashed-db[=XXX] 698 Use a hashed database for storing terminfo data rather than storing 699 each compiled entry in a separate binary file within a directory 700 tree. 701 702 In particular, this uses the Berkeley database 1.8.5 interface, as 703 provided by that and its successors db 2, 3, and 4. The actual 704 interface is slightly different in the successor versions of the 705 Berkeley database. The database should have been configured using 706 "--enable-compat185". 707 708 If you use this option for configuring ncurses, tic will only be able 709 to write entries in the hashed database. infocmp can still read 710 entries from a directory tree as well as reading entries from the 711 hashed database. To do this, infocmp determines whether the $TERMINFO 712 variable points to a directory or a file, and reads the directory-tree 713 or hashed database respectively. 714 715 You cannot have a directory containing both hashed-database and 716 filesystem-based terminfo entries. 717 718 Use the parameter value to give the install-prefix used for the 719 datbase, e.g., 720 --with-hashed-db=/usr/local/BigBase 721 to find the corresponding include- and lib-directories under the 722 given directory. 723 724 See also the --enable-getcap option. 725 726 --with-install-prefix=XXX 727 Allows you to specify an alternate location for installing ncurses 728 after building it. The value you specify is prepended to the "real" 729 install location. This simplifies making binary packages. The 730 makefile variable DESTDIR is set by this option. It is also possible 731 to use 732 make install DESTDIR=XXX 733 since the makefiles pass that variable to subordinate makes. 734 735 NOTE: a few systems build shared libraries with fixed pathnames; this 736 option probably will not work for those configurations. 737 738 --with-libtool[=XXX] 739 Generate libraries with libtool. If this option is selected, then it 740 overrides all other library model specifications. Note that libtool 741 must already be installed, uses makefile rules dependent on GNU make, 742 and does not promise to follow the version numbering convention of 743 other shared libraries on your system. However, if the --with-shared 744 option does not succeed, you may get better results with this option. 745 746 If a parameter value is given, it must be the full pathname of the 747 particular version of libtool, e.g., 748 /usr/bin/libtool-1.2.3 749 750 It is possible to rebuild the configure script to use the automake 751 macros for libtool, e.g., AC_PROG_LIBTOOL. See the comments in 752 aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure 753 using the appropriate patch for autoconf from 754 http://invisible-island.net/autoconf/ 755 756 --with-manpage-aliases 757 Tell the configure script you wish to create entries in the 758 man-directory for aliases to manpages which list them, e.g., the 759 functions in the panel manpage. This is the default. You can disable 760 it if your man program does this. You can also disable 761 --with-manpage-symlinks to install files containing a ".so" command 762 rather than symbolic links. 763 764 --with-manpage-format=XXX 765 Tell the configure script how you would like to install man-pages. The 766 option value must be one of these: gzip, compress, BSDI, normal, 767 formatted. If you do not give this option, the configure script 768 attempts to determine which is the case. 769 770 --with-manpage-renames=XXX 771 Tell the configure script that you wish to rename the manpages while 772 installing. Currently the only distribution which does this is 773 the Linux Debian. The option value specifies the name of a file 774 that lists the renamed files, e.g., $srcdir/man/man_db.renames 775 776 --with-manpage-symlinks 777 Tell the configure script that you wish to make symbolic links in the 778 man-directory for aliases to the man-pages. This is the default, but 779 can be disabled for systems that provide this automatically. Doing 780 this on systems that do not support symbolic links will result in 781 copying the man-page for each alias. 782 783 --with-manpage-tbl 784 Tell the configure script that you with to preprocess the manpages 785 by running them through tbl to generate tables understandable by 786 nroff. 787 788 --with-mmask-t=TYPE 789 Override type of mmask_t, which stores the mouse mask. Prior to 790 ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it 791 may be unsigned. Use this option if you need to preserve compatibility 792 with 64-bit executables. 793 794 --with-ospeed=TYPE 795 Override type of ospeed variable, which is part of the termcap 796 compatibility interface. In termcap, this is a 'short', which works 797 for a wide range of baudrates because ospeed is not the actual speed 798 but the encoded value, e.g., B9600 would be a small number such as 13. 799 However the encoding scheme originally allowed for values "only" up to 800 38400bd. A newer set of definitions past 38400bd is not encoded as 801 compactly, and is not guaranteed to fit into a short (see the function 802 cfgetospeed(), which returns a speed_t for this reason). In practice, 803 applications that required knowledge of the ospeed variable, i.e., 804 those using termcap, do not use the higher speeds. Your application 805 (or system, in general) may or may not. 806 807 --with-normal 808 Generate normal (i.e., static) libraries (default). 809 810 Note: on Linux, the configure script will attempt to use the GPM 811 library via the dlsym() function call. Use --without-dlsym to disable 812 this feature, or --without-gpm, depending on whether you wish to use 813 GPM. 814 815 --with-profile 816 Generate profile-libraries These are named by adding "_p" to the root, 817 e.g., libncurses_p.a 818 819 --with-rcs-ids 820 Compile-in RCS identifiers. Most of the C files have an identifier. 821 822 --with-rel-version=NUM 823 Override the release version, which may be used in shared library 824 filenames. This consists of a major and minor version number separated 825 by ".". Normally the major version number is the same as the ABI 826 version; some ports have special requirements for compatibility. 827 828 --with-shared 829 Generate shared-libraries. The names given depend on the system for 830 which you are building, typically using a ".so" suffix, along with 831 symbolic links that refer to the release version. 832 833 NOTE: Unless you override the configure script by setting the $CFLAGS 834 environment variable, these will not be built with the -g debugging 835 option. 836 837 NOTE: For some configurations, e.g., installing a new version of 838 ncurses shared libraries on a machine which already has ncurses 839 shared libraries, you may encounter problems with the linker. 840 For example, it may prevent you from running the build tree's 841 copy of tic (for installing the terminfo database) because it 842 loads the system's copy of the ncurses shared libraries. In that 843 case, using the misc/shlib script may be helpful, since it sets 844 $LD_LIBRARY_PATH to point to the build tree, e.g., 845 ./misc/shlib make install 846 847 --with-shlib-version=XXX 848 Specify whether to use the release or ABI version for shared libraries. 849 This is normally chosen automatically based on the type of system 850 which you are building on. We use it for testing the configure script. 851 852 --with-sysmouse 853 use FreeBSD sysmouse interface provide mouse support on the console. 854 855 --with-system-type=XXX 856 For testing, override the derived host system-type which is used to 857 decide things such as the linker commands used to build shared 858 libraries. This is normally chosen automatically based on the type of 859 system which you are building on. We use it for testing the configure 860 script. 861 862 --with-terminfo-dirs=XXX 863 Specify a search-list of terminfo directories which will be compiled 864 into the ncurses library (default: DATADIR/terminfo) 865 866 --with-termlib[=XXX] 867 When building the ncurses library, organize this as two parts: the 868 curses library (libncurses) and the low-level terminfo library 869 (libtinfo). This is done to accommodate applications that use only 870 the latter. The terminfo library is about half the size of the total. 871 872 If an option value is given, that overrides the name of the terminfo 873 library. For instance, if the wide-character version is built, the 874 terminfo library would be named libtinfow. But the libtinfow interface 875 is upward compatible from libtinfo, so it would be possible to overlay 876 libtinfo.so with a "wide" version of libtinfow.so by renaming it with 877 this option. 878 879 --with-termpath=XXX 880 Specify a search-list of termcap files which will be compiled into the 881 ncurses library (default: /etc/termcap:/usr/share/misc/termcap) 882 883 --with-ticlib[=XXX] 884 When building the ncurses library, build a separate library for 885 the modules that are used only by the utility programs. Normally 886 those would be bundled with the termlib or ncurses libraries. 887 888 If an option value is given, that overrides the name of the tic 889 library. As in termlib, there is no ABI difference between the 890 "wide" libticw.so and libtic.so 891 892 --with-trace 893 Configure the trace() function as part of the all models of the ncurses 894 library. Normally it is part of the debug (libncurses_g) library only. 895 896 --with-valgrind 897 For testing, compile with debug option. 898 This also sets the --disable-leaks option. 899 900 --without-ada 901 Suppress the configure script's check for Ada95, do not build the 902 Ada95 binding and related demo. 903 904 --without-curses-h 905 Don't install the ncurses header with the name "curses.h". Rather, 906 install as "ncurses.h" and modify the installed headers and manpages 907 accordingly. 908 909 --without-cxx 910 XSI curses declares "bool" as part of the interface. C++ also declares 911 "bool". Neither specifies the size and type of booleans, but both 912 insist on the same name. We chose to accommodate this by making the 913 configure script check for the size and type (e.g., unsigned or signed) 914 that your C++ compiler uses for booleans. If you do not wish to use 915 ncurses with C++, use this option to tell the configure script to not 916 adjust ncurses bool to match C++. 917 918 --without-cxx-binding 919 Suppress the configure script's check for C++, do not build the 920 C++ binding and related demo. 921 922 --without-develop 923 Disable development options. This does not include those that change 924 the interface, such as --enable-widec. 925 926 --without-dlsym 927 Do not use dlsym() to load GPM dynamically. 928 929 --without-progs 930 Tell the configure script to suppress the build of ncurses' application 931 programs (e.g., tic). The test applications will still be built if you 932 type "make", though not if you simply do "make install". 933 934 --without-xterm-new 935 Tell the configure script to use "xterm-old" for the entry used in 936 the terminfo database. This will work with variations such as 937 X11R5 and X11R6 xterm. 938 939 940COMPATIBILITY WITH OLDER VERSIONS OF NCURSES: 941-------------------------------------------- 942 943 Because ncurses implements the X/Open Curses Specification, its interface 944 is fairly stable. That does not mean the interface does not change. 945 Changes are made to the documented interfaces when we find differences 946 between ncurses and X/Open or implementations which they certify (such as 947 Solaris). We add extensions to those interfaces to solve problems not 948 addressed by the original curses design, but those must not conflict with 949 the X/Open documentation. 950 951 Here are some of the major interface changes, and related problems which 952 you may encounter when building a system with different versions of 953 ncurses: 954 955 5.6 (December 17, 2006) 956 Interface changes: 957 958 + generate linkable stubs for some macros: 959 960 getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx, 961 getpary, getpary, 962 963 and (for libncursesw) 964 965 wgetbkgrnd 966 967 Added extensions: 968 nofilter() 969 use_legacy_coding() 970 971 Added internal functions: 972 _nc_first_db 973 _nc_get_source 974 _nc_handle_sigwinch 975 _nc_is_abs_path 976 _nc_is_dir_path 977 _nc_is_file_path 978 _nc_keep_tic_dir 979 _nc_keep_tic_dir 980 _nc_last_db 981 _nc_next_db 982 _nc_read_termtype 983 _nc_tic_dir 984 985 Also (if using the hashed database configuration): 986 987 _nc_db_close 988 _nc_db_first 989 _nc_db_get 990 _nc_db_have_data 991 _nc_db_have_index 992 _nc_db_next 993 _nc_db_open 994 _nc_db_put 995 996 otherwise 997 998 _nc_hashed_db 999 1000 Removed internal functions: 1001 none 1002 1003 Modified internal functions: 1004 _nc_add_to_try 1005 _nc_do_color 1006 _nc_expand_try 1007 _nc_remove_key 1008 _nc_setupscreen 1009 1010 5.5 (October 10, 2005) 1011 Interface changes: 1012 1013 + terminfo installs "xterm-new" as "xterm" entry rather than 1014 "xterm-old" (aka xterm-r6). 1015 1016 + terminfo data is installed using the tic -x option (few systems 1017 still use ncurses 4.2). 1018 1019 + modify C++ binding to work with newer C++ compilers by providing 1020 initializers and using modern casts. Old-style header names are 1021 still used in this release to allow compiling with not-so-old 1022 compilers. 1023 1024 + form and menu libraries now work with wide-character data. 1025 Applications which bypassed the form library and manipulated the 1026 FIELD.buf data directly will not work properly with libformw, since 1027 that no longer points to an array of char. The set_field_buffer() 1028 and field_buffer() functions translate to/from the actual field 1029 data. 1030 1031 + change SP->_current_attr to a pointer, adjust ifdef's to ensure that 1032 libtinfo.so and libtinfow.so have the same ABI. The reason for this 1033 is that the corresponding data which belongs to the upper-level 1034 ncurses library has a different size in each model. 1035 1036 + winnstr() now returns multibyte character strings for the 1037 wide-character configuration. 1038 1039 + assume_default_colors() no longer requires that use_default_colors() 1040 be called first. 1041 1042 + data_ahead() now works with wide-characters. 1043 1044 + slk_set() and slk_wset() now accept and store multibyte or 1045 multicolumn characters. 1046 1047 + start_color() now returns OK if colors have already been started. 1048 start_color() also returns ERR if it cannot allocate memory. 1049 1050 + pair_content() now returns -1 for consistency with init_pair() if it 1051 corresponds to the default-color. 1052 1053 + unctrl() now returns null if its parameter does not correspond 1054 to an unsigned char. 1055 1056 Added extensions: 1057 Experimental mouse version 2 supports wheel mice with buttons 1058 4 and 5. This requires ABI 6 because it modifies the encoding 1059 of mouse events. 1060 1061 Experimental extended colors allows encoding of 256 foreground 1062 and background colors, e.g., with the xterm-256color or 1063 xterm-88color terminfo entries. This requires ABI 6 because 1064 it changes the size of cchar_t. 1065 1066 Added internal functions: 1067 _nc_check_termtype2 1068 _nc_resolve_uses2 1069 _nc_retrace_cptr 1070 _nc_retrace_cvoid_ptr 1071 _nc_retrace_void_ptr 1072 _nc_setup_term 1073 1074 Removed internal functions: 1075 none 1076 1077 Modified internal functions: 1078 _nc_insert_ch 1079 _nc_save_str 1080 _nc_trans_string 1081 1082 5.4 (February 8, 2004) 1083 Interface changes: 1084 1085 + add the remaining functions for X/Open curses wide-character support. 1086 These are only available if the library is configured using the 1087 --enable-widec option. 1088 pecho_wchar() 1089 slk_wset() 1090 1091 + write getyx() and related 2-return macros in terms of getcury(), 1092 getcurx(), etc. 1093 1094 + simplify ifdef for bool declaration in curses.h 1095 1096 + modify ifdef's in curses.h that disabled use of __attribute__() for 1097 g++, since recent versions implement the cases which ncurses uses. 1098 1099 + change some interfaces to use const: 1100 define_key() 1101 mvprintw() 1102 mvwprintw() 1103 printw() 1104 vw_printw() 1105 winsnstr() 1106 wprintw() 1107 1108 Added extensions: 1109 key_defined() 1110 1111 Added internal functions: 1112 _nc_get_locale() 1113 _nc_insert_ch() 1114 _nc_is_charable() wide 1115 _nc_locale_breaks_acs() 1116 _nc_pathlast() 1117 _nc_to_char() wide 1118 _nc_to_widechar() wide 1119 _nc_tparm_analyze() 1120 _nc_trace_bufcat() debug 1121 _nc_unicode_locale() 1122 1123 Removed internal functions: 1124 _nc_outstr() 1125 _nc_sigaction() 1126 1127 Modified internal functions: 1128 _nc_remove_string() 1129 _nc_retrace_chtype() 1130 1131 5.3 (October 12, 2002) 1132 Interface changes: 1133 1134 + change type for bool used in headers to NCURSES_BOOL, which usually 1135 is the same as the compiler's definition for 'bool'. 1136 1137 + add all but two functions for X/Open curses wide-character support. 1138 These are only available if the library is configured using the 1139 --enable-widec option. Missing functions are 1140 pecho_wchar() 1141 slk_wset() 1142 1143 + add environment variable $NCURSES_ASSUMED_COLORS to modify the 1144 assume_default_colors() extension. 1145 1146 Added extensions: 1147 is_term_resized() 1148 resize_term() 1149 1150 Added internal functions: 1151 _nc_altcharset_name() debug 1152 _nc_reset_colors() 1153 _nc_retrace_bool() debug 1154 _nc_retrace_unsigned() debug 1155 _nc_rootname() 1156 _nc_trace_ttymode() debug 1157 _nc_varargs() debug 1158 _nc_visbufn() debug 1159 _nc_wgetch() 1160 1161 Removed internal functions: 1162 _nc_background() 1163 1164 Modified internal functions: 1165 _nc_freeall() debug 1166 1167 5.2 (October 21, 2000) 1168 Interface changes: 1169 1170 + revert termcap ospeed variable to 'short' (see discussion of the 1171 --with-ospeed configure option). 1172 1173 5.1 (July 8, 2000) 1174 Interface changes: 1175 1176 + made the extended terminal capabilities 1177 (configure --enable-tcap-names) a standard feature. This should 1178 be transparent to applications that do not require it. 1179 1180 + removed the trace() function and related trace support from the 1181 production library. 1182 1183 + modified curses.h.in, undef'ing some symbols to avoid conflict 1184 with C++ STL. 1185 1186 Added extensions: assume_default_colors(). 1187 1188 5.0 (October 23, 1999) 1189 Interface changes: 1190 1191 + implemented the wcolor_set() and slk_color() functions. 1192 1193 + move macro winch to a function, to hide details of struct ldat 1194 1195 + corrected prototypes for slk_* functions, using chtype rather than 1196 attr_t. 1197 1198 + the slk_attr_{set,off,on} functions need an additional void* 1199 parameter according to XSI. 1200 1201 + modified several prototypes to correspond with 1997 version of X/Open 1202 Curses: [w]attr_get(), [w]attr_set(), border_set() have different 1203 parameters. Some functions were renamed or misspelled: 1204 erase_wchar(), in_wchntr(), mvin_wchntr(). Some developers have used 1205 attr_get(). 1206 1207 Added extensions: keybound(), curses_version(). 1208 1209 Terminfo database changes: 1210 1211 + change translation for termcap 'rs' to terminfo 'rs2', which is 1212 the documented equivalent, rather than 'rs1'. 1213 1214 The problems are subtler in recent releases. 1215 1216 a) This release provides users with the ability to define their own 1217 terminal capability extensions, like termcap. To accomplish this, 1218 we redesigned the TERMTYPE struct (in term.h). Very few 1219 applications use this struct. They must be recompiled to work with 1220 the 5.0 library. 1221 1222 a) If you use the extended terminfo names (i.e., you used configure 1223 --enable-tcap-names), the resulting terminfo database can have some 1224 entries which are not readable by older versions of ncurses. This 1225 is a bug in the older versions: 1226 1227 + the terminfo database stores booleans, numbers and strings in 1228 arrays. The capabilities that are listed in the arrays are 1229 specified by X/Open. ncurses recognizes a number of obsolete and 1230 extended names which are stored past the end of the specified 1231 entries. 1232 1233 + a change to read_entry.c in 951001 made the library do an lseek() 1234 call incorrectly skipping data which is already read from the 1235 string array. This happens when the number of strings in the 1236 terminfo data file is greater than STRCOUNT, the number of 1237 specified and obsolete or extended strings. 1238 1239 + as part of alignment with the X/Open final specification, in the 1240 990109 patch we added two new terminfo capabilities: 1241 set_a_attributes and set_pglen_inch). This makes the indices for 1242 the obsolete and extended capabilities shift up by 2. 1243 1244 + the last two capabilities in the obsolete/extended list are memu 1245 and meml, which are found in most terminfo descriptions for xterm. 1246 1247 When trying to read this terminfo entry, the spurious lseek() 1248 causes the library to attempt to read the final portion of the 1249 terminfo data (the text of the string capabilities) 4 characters 1250 past its starting point, and reads 4 characters too few. The 1251 library rejects the data, and applications are unable to 1252 initialize that terminal type. 1253 1254 FIX: remove memu and meml from the xterm description. They are 1255 obsolete, not used by ncurses. (It appears that the feature was 1256 added to xterm to make it more like hpterm). 1257 1258 This is not a problem if you do not use the -x option of tic to 1259 create a terminfo database with extended names. Note that the 1260 user-defined terminal capabilities are not affected by this bug, 1261 since they are stored in a table after the older terminfo data ends, 1262 and are invisible to the older libraries. 1263 1264 c) Some developers did not wish to use the C++ binding, and used the 1265 configure --without-cxx option. This causes problems if someone 1266 uses the ncurses library from C++ because that configure test 1267 determines the type for C++'s bool and makes ncurses match it, since 1268 both C++ and curses are specified to declare bool. Calling ncurses 1269 functions with the incorrect type for bool will cause execution 1270 errors. In 5.0 we added a configure option "--without-cxx-binding" 1271 which controls whether the binding itself is built and installed. 1272 1273 4.2 (March 2, 1998) 1274 Interface changes: 1275 1276 + correct prototype for termattrs() as per XPG4 version 2. 1277 1278 + add placeholder prototypes for color_set(), erasewchar(), 1279 term_attrs(), wcolor_set() as per XPG4 version 2. 1280 1281 + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in 1282 SVr4 headers. 1283 1284 New extensions: keyok() and define_key(). 1285 1286 Terminfo database changes: 1287 1288 + corrected definition in curses.h for ACS_LANTERN, which was 'I' 1289 rather than 'i'. 1290 1291 4.1 (May 15, 1997) 1292 1293 We added these extensions: use_default_colors(). Also added 1294 configure option --enable-const, to support the use of const where 1295 X/Open should have, but did not, specify. 1296 1297 The terminfo database content changed the representation of color for 1298 most entries that use ANSI colors. SVr4 curses treats the setaf/setab 1299 and setf/setb capabilities differently, interchanging the red/blue 1300 colors in the latter. 1301 1302 4.0 (December 24, 1996) 1303 1304 We bumped to version 4.0 because the newly released dynamic loader 1305 (ld.so.1.8.5) on Linux did not load shared libraries whose ABI and REL 1306 versions were inconsistent. At that point, ncurses ABI was 3.4 and the 1307 REL was 1.9.9g, so we made them consistent. 1308 1309 1.9.9g (December 1, 1996) 1310 1311 This fixed most of the problems with 1.9.9e, and made these interface 1312 changes: 1313 1314 + remove tparam(), which had been provided for compatibility with 1315 some termcap. tparm() is standard, and does not conflict with 1316 application's fallback for missing tparam(). 1317 1318 + turn off hardware echo in initscr(). This changes the sense of the 1319 echo() function, which was initialized to echoing rather than 1320 nonechoing (the latter is specified). There were several other 1321 corrections to the terminal I/O settings which cause applications to 1322 behave differently. 1323 1324 + implemented several functions (such as attr_on()) which were 1325 available only as macros. 1326 1327 + corrected several typos in curses.h.in (i.e., the mvXXXX macros). 1328 1329 + corrected prototypes for delay_output(), 1330 has_color, immedok() and idcok(). 1331 1332 + corrected misspelled getbkgd(). Some applications used the 1333 misspelled name. 1334 1335 + added _yoffset to WINDOW. The size of WINDOW does not impact 1336 applications, since they use only pointers to WINDOW structs. 1337 1338 These changes were made to the terminfo database: 1339 1340 + removed boolean 'getm' which was available as an extended name. 1341 1342 We added these extensions: wresize(), resizeterm(), has_key() and 1343 mcprint(). 1344 1345 1.9.9e (March 24, 1996) 1346 1347 not recommended (a last-minute/untested change left the forms and 1348 menus libraries unusable since they do not repaint the screen). 1349 Foreground/background colors are combined incorrectly, working properly 1350 only on a black background. When this was released, the X/Open 1351 specification was available only in draft form. 1352 1353 Some applications (such as lxdialog) were "fixed" to work with the 1354 incorrect color scheme. 1355 1356 1357IF YOU ARE A SYSTEM INTEGRATOR: 1358------------------------------ 1359 1360 Configuration and Installation: 1361 1362 On platforms where ncurses is assumed to be installed in /usr/lib, 1363 the configure script uses "/usr" as a default: 1364 1365 Linux, FreeBSD, NetBSD, OpenBSD, Cygwin 1366 1367 For other platforms, the default is "/usr/local". See the discussion 1368 of the "--disable-overwrite" option. 1369 1370 The location of the terminfo is set indirectly by the "--datadir" 1371 configure option, e.g., /usr/share/terminfo, given a datadir of 1372 /usr/share. You may want to override this if you are installing 1373 ncurses libraries in nonstandard locations, but wish to share the 1374 terminfo database. 1375 1376 Normally the ncurses library is configured in a pure-terminfo mode; 1377 that is, with the --disable-termcap option. This makes the ncurses 1378 library smaller and faster. The ncurses library includes a termcap 1379 emulation that queries the terminfo database, so even applications that 1380 use raw termcap to query terminal characteristics will win (providing 1381 you recompile and relink them!). 1382 1383 If you must configure with termcap fallback enabled, you may also wish 1384 to use the --enable-getcap option. This speeds up termcap-based 1385 startups, at the expense of not allowing personal termcap entries to 1386 reference the terminfo tree. See comments in 1387 ncurses/tinfo/read_termcap.c for further details. 1388 1389 Note that if you have $TERMCAP set, ncurses will use that value 1390 to locate termcap data. In particular, running from xterm will 1391 set $TERMCAP to the contents of the xterm's termcap entry. 1392 If ncurses sees that, it will not examine /etc/termcap. 1393 1394 Keyboard Mapping: 1395 1396 The terminfo file assumes that Shift-Tab generates \E[Z (the ECMA-48 1397 reverse-tabulation sequence) rather than ^I. Here are the loadkeys -d 1398 mappings that will set this up: 1399 1400 keycode 15 = Tab Tab 1401 alt keycode 15 = Meta_Tab 1402 shift keycode 15 = F26 1403 string F26 ="\033[Z" 1404 1405 Naming the Console Terminal 1406 1407 In various systems there has been a practice of designating the system 1408 console driver type as `console'. Please do not do this! It 1409 complicates peoples' lives, because it can mean that several different 1410 terminfo entries from different operating systems all logically want to 1411 be called `console'. 1412 1413 Please pick a name unique to your console driver and set that up 1414 in the /etc/inittab table or local equivalent. Send the entry to the 1415 terminfo maintainer (listed in the misc/terminfo file) to be included 1416 in the terminfo file, if it's not already there. See the 1417 term(7) manual page included with this distribution for more on 1418 conventions for choosing type names. 1419 1420 Here are some recommended primary console names: 1421 1422 linux -- Linux console driver 1423 freebsd -- FreeBSD 1424 netbsd -- NetBSD 1425 bsdos -- BSD/OS 1426 1427 If you are responsible for integrating ncurses for one of these 1428 distribution, please either use the recommended name or get back 1429 to us explaining why you don't want to, so we can work out nomenclature 1430 that will make users' lives easier rather than harder. 1431 1432 1433RECENT XTERM VERSIONS: 1434--------------------- 1435 1436 The terminfo database file included with this distribution assumes you 1437 are running a modern xterm based on XFree86 (i.e., xterm-new). The 1438 earlier X11R6 entry (xterm-r6) and X11R5 entry (xterm-r5) is provided 1439 as well. See the --without-xterm-new configure script option if you 1440 are unable to update your system. 1441 1442 1443CONFIGURING FALLBACK ENTRIES: 1444---------------------------- 1445 1446 In order to support operation of ncurses programs before the terminfo 1447 tree is accessible (that is, in single-user mode or at OS installation 1448 time) the ncurses library can be compiled to include an array of 1449 pre-fetched fallback entries. This must be done on a machine which 1450 has ncurses' infocmp and terminfo database installed. 1451 1452 These entries are checked by setupterm() only when the conventional 1453 fetches from the terminfo tree and the termcap fallback (if configured) 1454 have been tried and failed. Thus, the presence of a fallback will not 1455 shadow modifications to the on-disk entry for the same type, when that 1456 entry is accessible. 1457 1458 By default, there are no entries on the fallback list. After you have 1459 built the ncurses suite for the first time, you can change the list 1460 (the process needs infocmp(1)). To do so, use the script 1461 ncurses/tinfo/MKfallback.sh. A configure script option 1462 --with-fallbacks does this (it accepts a comma-separated list of the 1463 names you wish, and does not require a rebuild). 1464 1465 If you wanted (say) to have linux, vt100, and xterm fallbacks, you 1466 would use the commands 1467 1468 cd ncurses; 1469 tinfo/MKfallback.sh linux vt100 xterm >fallback.c 1470 1471 Then just rebuild and reinstall the library as you would normally. 1472 You can restore the default empty fallback list with 1473 1474 tinfo/MKfallback.sh >fallback.c 1475 1476 The overhead for an empty fallback list is one trivial stub function. 1477 Any non-empty fallback list is const-ed and therefore lives in sharable 1478 text space. You can look at the comment trailing each initializer in 1479 the generated ncurses/fallback.c file to see the core cost of the 1480 fallbacks. A good rule of thumb for modern vt100-like entries is that 1481 each one will cost about 2.5K of text space. 1482 1483 1484BSD CONVERSION NOTES: 1485-------------------- 1486 1487 If you need to support really ancient BSD programs, you probably 1488 want to configure with the --enable-bsdpad option. What this does 1489 is enable code in tputs() that recognizes a numeric prefix on a 1490 capability as a request for that much trailing padding in milliseconds. 1491 There are old BSD programs that do things like tputs("50"). 1492 1493 (If you are distributing ncurses as a support-library component of 1494 an application you probably want to put the remainder of this section 1495 in the package README file.) 1496 1497 The following note applies only if you have configured ncurses with 1498 --enable-termcap. 1499 1500------------------------------- CUT HERE -------------------------------- 1501 1502If you are installing this application privately (either because you 1503have no root access or want to experiment with it before doing a root 1504installation), there are a couple of details you need to be aware of. 1505They have to do with the ncurses library, which uses terminfo rather 1506than termcap for describing terminal characteristics. 1507 1508Though the ncurses library is terminfo-based, it will interpret your 1509TERMCAP variable (if present), any local termcap files you reference 1510through it, and the system termcap file. However, in order to avoid 1511slowing down your application startup, it will only do this once per 1512terminal type! 1513 1514The first time you load a given terminal type from your termcap 1515database, the library initialization code will automatically write it 1516in terminfo format to a subdirectory under $HOME/.terminfo. After 1517that, the initialization code will find it there and do a (much 1518faster) terminfo fetch. 1519 1520Usually, all this means is that your home directory will silently grow 1521an invisible .terminfo subdirectory which will get filled in with 1522terminfo descriptions of terminal types as you invoke them. If anyone 1523ever installs a global terminfo tree on your system, this will quietly 1524stop happening and your $HOME/.terminfo will become redundant. 1525 1526The objective of all this logic is to make converting from BSD termcap 1527as painless as possible without slowing down your application (termcap 1528compilation is expensive). 1529 1530If you don't have a TERMCAP variable or custom personal termcap file, 1531you can skip the rest of this dissertation. 1532 1533If you *do* have a TERMCAP variable and/or a custom personal termcap file 1534that defines a terminal type, that definition will stop being visible 1535to this application after the first time you run it, because it will 1536instead see the terminfo entry that it wrote to $HOME/terminfo the 1537first time around. 1538 1539Subsequently, editing the TERMCAP variable or personal TERMCAP file 1540will have no effect unless you explicitly remove the terminfo entry 1541under $HOME/terminfo. If you do that, the entry will be recompiled 1542from your termcap resources the next time it is invoked. 1543 1544To avoid these complications, use infocmp(1) and tic(1) to edit the 1545terminfo directory directly. 1546 1547------------------------------- CUT HERE -------------------------------- 1548 1549USING NCURSES WITH AFS: 1550 AFS treats each directory as a separate logical filesystem, you 1551 can't hard-link across them. The --enable-symlinks option copes 1552 with this by making tic use symbolic links. 1553 1554USING NCURSES WITH GPM: 1555 Ncurses 4.1 and up can be configured to use GPM (General Purpose 1556 Mouse) which is used on Linux console. Be aware that GPM is commonly 1557 installed as a shared library which contains a wrapper for the curses 1558 wgetch() function (libcurses.o). Some integrators have simplified 1559 linking applications by combining all or part of libcurses.so into the 1560 libgpm.so file, producing symbol conflicts with ncurses (specifically 1561 the wgetch function). This was originally the BSD curses, but 1562 generally whatever curses library exists on the system. 1563 1564 You may be able to work around this problem by linking as follows: 1565 1566 cc -o foo foo.o -lncurses -lgpm -lncurses 1567 1568 but the linker may not cooperate, producing mysterious errors. 1569 See the FAQ, as well as the discussion under the --with-gpm option: 1570 1571 http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib 1572 1573BUILDING NCURSES WITH A CROSS-COMPILER 1574 Ncurses can be built with a cross-compiler. Some parts must be built 1575 with the host's compiler since they are used for building programs 1576 (e.g., ncurses/make_hash and ncurses/make_keys) that generate tables 1577 that are compiled into the ncurses library. The essential thing to do 1578 is set the BUILD_CC environment variable to your host's compiler, and 1579 run the configure script configuring for the cross-compiler. 1580 1581 The configure options --with-build-cc, etc., are provided to make this 1582 simpler. Since make_hash and make_keys use only ANSI C features, it 1583 is normally not necessary to provide the other options such as 1584 --with-build-libs, but they are provided for completeness. 1585 1586 Note that all of the generated source-files which are part of ncurses 1587 will be made if you use 1588 1589 make sources 1590 1591 This would be useful in porting to an environment which has little 1592 support for the tools used to generate the sources, e.g., sed, awk and 1593 Bourne-shell. 1594 1595 When ncurses has been successfully cross-compiled, you may want to use 1596 "make install" (with a suitable target directory) to construct an 1597 install tree. Note that in this case (as with the --with-fallbacks 1598 option), ncurses uses the development platform's tic to do the 1599 "make install.data" portion. 1600 1601BUGS: 1602 Send any feedback to the ncurses mailing list at 1603 bug-ncurses@gnu.org. To subscribe send mail to 1604 bug-ncurses-request@gnu.org with body that reads: 1605 subscribe ncurses <your-email-address-here> 1606 1607 The Hacker's Guide in the doc directory includes some guidelines 1608 on how to report bugs in ways that will get them fixed most quickly. 1609 1610-- vile:txtmode 1611