X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=INSTALL;h=95f5a39316838b502ee6d3d90f32630b3a00c4ae;hp=bfb076afc9e85460168b9211fd4b780dd38a530b;hb=21b36e89c00f2188954d680bf9fea60328b4538c;hpb=79695a2ff354087dca5006351286f741ee8c82c4 diff --git a/INSTALL b/INSTALL index bfb076af..95f5a393 100644 --- a/INSTALL +++ b/INSTALL @@ -1,5 +1,6 @@ ------------------------------------------------------------------------------- --- Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. -- +-- Copyright 2018-2019,2020 Thomas E. Dickey -- +-- Copyright 1998-2017,2018 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- @@ -25,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: INSTALL,v 1.204 2018/02/10 17:46:44 tom Exp $ +-- $Id: INSTALL,v 1.226 2020/09/06 23:41:16 tom Exp $ --------------------------------------------------------------------- How to install Ncurses/Terminfo on your system --------------------------------------------------------------------- @@ -40,7 +41,7 @@ including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs', and `test'. See the README file for a roadmap to the package. If you are a distribution integrator or packager, please read and act on the -section titled IF YOU ARE A SYSTEM INTEGRATOR below. +section titled FOR SYSTEM INTEGRATORS below. If you are converting from BSD curses and do not have root access, be sure to read the BSD CONVERSION NOTES section below. @@ -48,11 +49,7 @@ to read the BSD CONVERSION NOTES section below. If you are trying to build applications using gpm with ncurses, read the USING NCURSES WITH GPM section below. -If you are running over the Andrew File System see the note below on -USING NCURSES WITH AFS. - -If you are cross-compiling, see the note below on BUILDING NCURSES WITH A -CROSS-COMPILER. +If you are cross-compiling, see the note below on BUILDING WITH A CROSS-COMPILER. If you want to build the Ada95 binding, go to the Ada95 directory and follow the instructions there. The Ada95 binding is not covered below. @@ -269,8 +266,8 @@ INSTALLATION PROCEDURE: YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++. -SUMMARY OF CONFIGURE OPTIONS: ----------------------------- +CONFIGURE OPTIONS: +----------------- The configure script provides a short list of its options when you type @@ -310,7 +307,7 @@ SUMMARY OF CONFIGURE OPTIONS: and termcap data from disk. You can configure ncurses to have a built-in database, aka "fallback" entries. Embedded applications may have no need for an external database. Some, but not all of the - programs are useful in this configuration, e.g., reset and tput versus + programs are useful in this configuration, e.g., tset and tput versus infocmp and tic. --disable-db-install @@ -438,12 +435,45 @@ SUMMARY OF CONFIGURE OPTIONS: Without some special effort, it will either fail to compile at all, or the compiler may find a different unctrl.h file. + In addition to the curses library, a system may provide its own + versions of the add-on libraries (form, menu, panel), which would + not be compatible with ncurses. These options allow you to rename + ncurses' add-on libraries to avoid conflicts when linking: + + --with-form-libname=XXX + --with-menu-libname=XXX + --with-panel-libname=XXX + + Rather than renaming them abitrarily, a prefix or suffix is + recommended. An "n" prefix provides consistency with ncurses versus + curses, i.e., + + --with-form-libname=nform + --with-menu-libname=nmenu + --with-panel-libname=npanel + + --disable-pkg-ldflags + Omit options in $EXTRA_LDFLAGS from the pkg-config ".pc" and + corresponding ncurses*-config script which normally are listed via + the "--libs" option. These options are normally used to facilitate + linking to ncurses when it was configured to use the rpath feature. + + See also --enable-rpath and --disable-rpath-hack. + --disable-relink If --enable-rpath is given, the generated makefiles normally will - rebuild the libraries during install. Use this option to simply - copy whatever the linked produced. + rebuild shared libraries during install. Use this option to simply + copy whatever the linker produced. + + Static libraries cannot simply be copied because tools use timestamps + to determine if the library's symbol table is up to date. If your + install program supports the "-p" (preserve timestamp) option, that + is used when --disable-relink is given, to avoid rebuilding the symbol + table. - This option is ignored if --enable-rpath is not given. + Finally, some tools ignore the subsecond timestamps supported by some + filesystems. This option adds a 1-second sleep to help those tools + avoid unnecessary relinking during the install process. --disable-root-environ Compile with environment restriction, so certain environment variables @@ -484,7 +514,7 @@ SUMMARY OF CONFIGURE OPTIONS: --disable-wattr-macros The 6.0 ABI adds support for extended colors and for extended mouse. - The former is a noticeable problem when developers inadvertantly + The former is a noticeable problem when developers inadvertently compile using the ncurses6 header files and link with an ncurses5 library, because the wattr* macros use a new field in the WINDOW structure. These macros are used in several applications. @@ -552,6 +582,9 @@ SUMMARY OF CONFIGURE OPTIONS: For testing, generate functions for certain macros to make them visible as such to the debugger. See also the --disable-macros option. + --enable-exp-win32 + When configuring for MinGW, use the experimental Windows 10 driver. + --enable-ext-colors Extend the cchar_t structure to allow more than 16 colors to be encoded. This applies only to the wide-character (--enable-widec) @@ -578,6 +611,12 @@ SUMMARY OF CONFIGURE OPTIONS: ncurses. This does not change the ABI (the binary interface seen by calling applications). + --enable-fvisibility + Use the gcc "-fvisibility=hidden" option to make symbols which are not + explicitly exported, "hidden". Doing this may reduce the number of + symbols exported in the C++ binding; it should have less effect on the + C libraries when symbol-versioning is used. + --enable-getcap Use the 4.4BSD getcap code if available, or a bundled version of it to fetch termcap entries. Entries read in this way cannot use (make @@ -670,13 +709,6 @@ SUMMARY OF CONFIGURE OPTIONS: vsnprintf() or vsprintf(). It is slow, however, and is used only on very old systems which lack vsnprintf(). - --enable-sigwinch - Compile support for ncurses' SIGWINCH handler. If your application has - its own SIGWINCH handler, ncurses will not use its own. The ncurses - handler causes wgetch() to return KEY_RESIZE when the screen-size - changes. This option is the default, unless you have disabled the - extended functions. - --enable-signed-char The term.h header declares a Booleans[] array typed "char". But it stores signed values there and "char" is not necessarily signed. @@ -684,6 +716,13 @@ SUMMARY OF CONFIGURE OPTIONS: is not strictly compatible. This option allows one to implement this alteration without patching the source code. + --enable-sigwinch + Compile support for ncurses' SIGWINCH handler. If your application has + its own SIGWINCH handler, ncurses will not use its own. The ncurses + handler causes wgetch() to return KEY_RESIZE when the screen-size + changes. This option is the default, unless you have disabled the + extended functions. + --enable-sp-funcs Compile-in support for extended functions which accept a SCREEN pointer, reducing the need for juggling the global SP value with set_term() and @@ -770,6 +809,9 @@ SUMMARY OF CONFIGURE OPTIONS: Tell where to install the Ada includes (default: PREFIX/lib/ada/adainclude) + --with-ada-libname=NAME + Override the name of the Ada binding (default: "AdaCurses") + --with-ada-objects=DIR Tell where to install the Ada objects (default: PREFIX/lib/ada/adalib) @@ -786,10 +828,6 @@ SUMMARY OF CONFIGURE OPTIONS: correspond with that in , or defaults to platform-specific sizes). - --with-build-cpp=XXX - This option is provided by the same macro used for $BUILD_CC, etc., - but is not directly used by ncurses. - --with-build-cc=XXX If cross-compiling, specify a host C compiler, which is needed to compile a few utilities which generate source modules for ncurses. @@ -804,6 +842,10 @@ SUMMARY OF CONFIGURE OPTIONS: You can also set the environment variable $BUILD_CFLAGS rather than use this option. + --with-build-cpp=XXX + This option is provided by the same macro used for $BUILD_CC, etc., + but is not directly used by ncurses. + --with-build-cppflags=XXX If cross-compiling, specify the host C preprocessor-flags. You might need to do this if the target compiler has unusual flags which confuse @@ -852,6 +894,9 @@ SUMMARY OF CONFIGURE OPTIONS: Specify a suffix for the ncursesw6-config file, etc., used to work around conflicts with packages. + --with-cxx-libname=NAME + Override the basename of the ncurses++ library (default: "ncurses++") + --with-cxx-shared When --with-shared is set, build libncurses++ as a shared library. This implicitly relies upon building with gcc/g++, since other @@ -895,6 +940,11 @@ SUMMARY OF CONFIGURE OPTIONS: Specify a list of fallback terminal descriptions which will be compiled into the ncurses library. See CONFIGURING FALLBACK ENTRIES. + See also "--with-tic-path" and "--with-infocmp-path". + + --with-form-libname=NAME + Override the basename of the form library (default: "form") + --with-gpm use Alessandro Rubini's GPM library to provide mouse support on the Linux console. Prior to ncurses 5.5, this introduced a dependency on @@ -946,6 +996,10 @@ SUMMARY OF CONFIGURE OPTIONS: See also the --enable-getcap option. + --with-infocmp-path[=XXX] + Use this option to override the automatic detection of tic in your + $PATH when building fallbacks (see "--with-fallbacks"). + --with-install-prefix=XXX Allows you to specify an alternate location for installing ncurses after building it. The value you specify is prepended to the "real" @@ -987,9 +1041,6 @@ SUMMARY OF CONFIGURE OPTIONS: https://invisible-island.net/autoconf/ --with-libtool-opts=XXX - Specify additional libtool options. - - --with-libtool-opts Allow user to pass additional libtool options into the library creation and link steps. The main use for this is to do something like ./configure --with-libtool-opts=-static @@ -1028,6 +1079,9 @@ SUMMARY OF CONFIGURE OPTIONS: by running them through tbl to generate tables understandable by nroff. + --with-menu-libname=NAME + Override the basename of the menu library (default: "menu") + --with-mmask-t=TYPE Override type of mmask_t, which stores the mouse mask. Prior to ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it @@ -1055,11 +1109,23 @@ SUMMARY OF CONFIGURE OPTIONS: those using termcap, do not use the higher speeds. Your application (or system, in general) may or may not. + --with-panel-libname=NAME + Override the basename of the panel library (default: "panel") + --with-pc-suffix=SUFFIX If ".pc" files are installed, optionally add a suffix to the files and corresponding package names to separate unusual configurations. If no option value is given (or if it is "none"), no suffix is added. + --with-pcre2 + Add PCRE2 (Perl-compatible regular expressions v2) to the build if it + is available and the user requests it. Assume the application will + otherwise use the POSIX interface. + + This is useful for MinGW builds because the usual POSIX interface is + not supplied by the development environment, while ncurses' form + library uses a regular expression feature for one of the field types. + --with-pkg-config=[DIR] Check for pkg-config, optionally specifying its path. @@ -1159,6 +1225,10 @@ SUMMARY OF CONFIGURE OPTIONS: Specify a search-list of termcap files which will be compiled into the ncurses library (default: /etc/termcap:/usr/share/misc/termcap) + --with-tic-path[=XXX] + Use this option to override the automatic detection of tic in your + $PATH when building fallbacks (see "--with-fallbacks"). + --with-ticlib[=XXX] When building the ncurses library, build a separate library for the modules that are used only by the utility programs. Normally @@ -1187,6 +1257,10 @@ SUMMARY OF CONFIGURE OPTIONS: Configure the trace() function as part of the all models of the ncurses library. Normally it is part of the debug (libncurses_g) library only. + --with-valgrind + For testing, compile with debug option. + This also sets the --disable-leaks option. + --with-versioned-syms[=XXX] The Solaris, GNU and reportedly some other linkers (ld) accept a "--version-script" option which tells the linker to annotate the @@ -1218,18 +1292,6 @@ SUMMARY OF CONFIGURE OPTIONS: may prefer to use a different ".map" file by setting this option's value. - --with-xterm-kbs=XXX - Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII - backspace) or DEL (^?, or 127). XXX can be BS (or bs, 8) or DEL - (or del, 127). - - During installation, the makefile and scripts modifies the "xterm+kbs" - terminfo entry to use this setting. - - --with-valgrind - For testing, compile with debug option. - This also sets the --disable-leaks option. - --with-wrap-prefix=XXX When using the --enable-reentrant option, ncurses redefines variables that would be global in curses, e.g., LINES, as a macro that calls a @@ -1246,6 +1308,14 @@ SUMMARY OF CONFIGURE OPTIONS: This overrides a configure check which usually works, but is needed due to the lack of standardization for X11's files. + --with-xterm-kbs=XXX + Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII + backspace) or DEL (^?, or 127). XXX can be BS (or bs, 8) or DEL + (or del, 127). + + During installation, the makefile and scripts modifies the "xterm+kbs" + terminfo entry to use this setting. + --without-ada Suppress the configure script's check for Ada95, do not build the Ada95 binding and related demo. @@ -1300,8 +1370,8 @@ SUMMARY OF CONFIGURE OPTIONS: X11R5 and X11R6 xterm. -COMPATIBILITY WITH OLDER VERSIONS OF NCURSES: --------------------------------------------- +COMPATIBILITY WITH OLDER RELEASES: +--------------------------------- Because ncurses implements X/Open Curses, its interface is fairly stable. That does not mean the interface does not change. Changes are made to the @@ -1315,6 +1385,43 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES: you may encounter when building a system with different versions of ncurses: + 6.2 (Feb 12, 2020) + Interface changes: + + + the terminal database must be compiled with ncurses 6.2 tic; + older versions of tic/infocmp will not work. Aside from that, + the compiled database will work with older applications. + + + "*.pc" and "ncurses*-config" files give the same information. + + + vwprintw and vwscanw are deprecated. + + Added extensions: + + + These make it simpler to substitute a debug-configuration of the + library for non-debug: + curses_trace + exit_curses + exit_terminfo + + Added internal functions (other than "_sp" variants): + + + These provide fast-lookup of common user-defined capabilities: + _nc_find_user_entry + _nc_get_userdefs_table + _nc_get_hash_user + + + This is added to work around compiler-warnings: + _nc_fmt_funcptr + + Removed internal functions: + + + _nc_import_termtype + + Modified internal functions: + + + _nc_reserve_pairs no longer returns a value + 6.1 (Jan 27, 2018) Interface changes: @@ -1988,8 +2095,8 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES: incorrect color scheme. -IF YOU ARE A SYSTEM INTEGRATOR: ------------------------------- +FOR SYSTEM INTEGRATORS: +---------------------- Configuration and Installation: @@ -2065,7 +2172,7 @@ IF YOU ARE A SYSTEM INTEGRATOR: that will make users' lives easier rather than harder. -RECENT XTERM VERSIONS: +MODERN XTERM VERSIONS: --------------------- The terminfo database file included with this distribution assumes you @@ -2081,9 +2188,13 @@ CONFIGURING FALLBACK ENTRIES: In order to support operation of ncurses programs before the terminfo tree is accessible (that is, in single-user mode or at OS installation time) the ncurses library can be compiled to include an array of - pre-fetched fallback entries. This must be done on a machine which - has ncurses' infocmp and terminfo database installed (as well as - ncurses' tic and infocmp programs). + pre-fetched fallback entries. + + NOTE: This must be done on a machine which has ncurses' infocmp and + terminfo database installed (as well as ncurses' tic and infocmp + programs). That is because the fallback sources are generated and + compiled into the library before the build-tree's copy of infocmp is + available. These entries are checked by setupterm() only when the conventional fetches from the terminfo tree and the termcap fallback (if configured) @@ -2106,9 +2217,10 @@ CONFIGURING FALLBACK ENTRIES: $TERMINFO \ ../misc/terminfo.src \ `which tic` \ + `which infocmp` \ linux vt100 xterm >fallback.c - The first three parameters of the script are normally supplied by + The first four parameters of the script are normally supplied by the configured makefiles via the "--with-fallbacks" option. They are @@ -2116,6 +2228,8 @@ CONFIGURING FALLBACK ENTRIES: 2) the source for the terminfo entries 3) the location of the tic program, used to create a terminfo database. + 4) the location of the infocmp program, used to print a terminfo + description. Then just rebuild and reinstall the library as you would normally. You can restore the default empty fallback list with @@ -2124,10 +2238,11 @@ CONFIGURING FALLBACK ENTRIES: $TERMINFO \ ../misc/terminfo.src \ `which tic` \ + `which infocmp` \ >fallback.c The overhead for an empty fallback list is one trivial stub function. - Any non-empty fallback list is const-ed and therefore lives in sharable + Any non-empty fallback list is const'd and therefore lives in shareable text space. You can look at the comment trailing each initializer in the generated ncurses/fallback.c file to see the core cost of the fallbacks. A good rule of thumb for modern vt100-like entries is that @@ -2198,12 +2313,8 @@ terminfo directory directly. ------------------------------- CUT HERE -------------------------------- -USING NCURSES WITH AFS: - AFS treats each directory as a separate logical filesystem, you - can't hard-link across them. The --enable-symlinks option copes - with this by making tic use symbolic links. - -USING NCURSES WITH GPM: +USING GPM: +--------- Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse) which is used with Linux console. Be aware that GPM is commonly installed as a shared library which contains a wrapper for the curses @@ -2222,7 +2333,9 @@ USING NCURSES WITH GPM: https://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib -BUILDING NCURSES WITH A CROSS-COMPILER + +BUILDING WITH A CROSS-COMPILER: +------------------------------ Ncurses can be built with a cross-compiler. Some parts must be built with the host's compiler since they are used for building programs (e.g., ncurses/make_hash and ncurses/make_keys) that generate tables @@ -2247,14 +2360,26 @@ BUILDING NCURSES WITH A CROSS-COMPILER When ncurses has been successfully cross-compiled, you may want to use "make install" (with a suitable target directory) to construct an install tree. Note that in this case (as with the --with-fallbacks - option), ncurses uses the development platform's tic to do the - "make install.data" portion. + option), ncurses uses the development platform's tic to do the "make + install.data" portion. The system's tic program is used to install the terminal database, - even for cross-compiles. For best results, the tic program should - be from the most current version of ncurses. - -BUGS: + even for cross-compiles. For best results, the tic program should be + from the most current version of ncurses. + + NOTE: the system's tic program may use a different terminfo database + format than the target system. For instance, as described in term(5), + the conventional terminfo layout uses a directory hierarchy with one + letter names, while some platforms use two-letter names to work with + case-insensitive filesystems. The configure script searches for a tic + program using the AC_CHECK_TOOL macro, which will prefer programs + using the canonical host prefix in their name. You can use this fact + to provide a cross-compiler support utility tic, otherwise you can + override the configure script's choice using --with-tic-path + + +BUG REPORTS: +----------- Send any feedback to the ncurses mailing list at bug-ncurses@gnu.org. To subscribe send mail to bug-ncurses-request@gnu.org with body that reads: