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