INSTALL 69 KB

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