1# Id: README,v 8.29 2001/05/13 20:52:36 skimo Exp (Berkeley) Date: 2001/05/13 20:52:36 2 3Nvi uses the GNU autoconf program for configuration and compilation. You 4should enter: 5 6 ../dist/configure 7 make 8 9and nvi will configure the system and build one or two binaries: nvi and 10tknvi. You can use any path to the configure script, e.g., to build for 11an x86 architecture, I suggest that you do: 12 13 mkdir build.x86 14 cd build.x86 15 ../dist/configure 16 make 17 18There are options that you can specify to the configure command. See 19the next section for a description of these options. 20 21If you want to rebuild or reconfigure nvi, for example, because you change 22your mind as to the curses library that you want to use, create a new 23directory and reconfigure it using "configure" and whatever options you 24choose, don't try to selectively edit the files. 25 26By default, nvi is installed as "vi", with hard links to "ex" and "view". 27To install them using different names, use the configure program options. 28For example, to install them as "nvi", "nex" and "nview", use: 29 30 configure --program-prefix=n 31 32See the section below on installation for details. 33 34Note, if you're building nvi on a LynxOS system, you should read the 35README.LynxOS file in this directory for additional build instructions 36that are specific to that operating system. 37 38If you have trouble with this procedure, send email to the addresses 39listed in ../README. In that email, please provide a complete script 40of the output for all of the above commands that you entered. 41 42=-=-=-=-=-=-= 43NVI'S OPTIONS TO THE CONFIGURE PROGRAM 44=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 45 46There are many options that you can enter to the configuration program. 47To see a complete list of the options, enter "configure --help". Only 48a few of them are nvi specific. These options are as follows: 49 50 --disable-re DON'T use the nvi-provided RE routines. 51 --enable-debug Build a debugging version. 52 --enable-perlinterp Include a Perl interpreter in vi. 53 --enable-tclinterp Include a Tk/Tcl interpreter in vi. 54 --enable-gtk Build a gtk front-end. 55 --enable-motif Build a motif front-end. 56 --enable-threads Turn on thread support. 57 --enable-widechar Build a wide character aware vi (experimental). 58 --with-curses=DIR Path to curses installation. 59 --with-db3=db3prefix Path to db3 installation. 60 --enable-dynamic-loading Load DB 3 dynamically. 61 62disable-re: 63 By default, nvi loads its own versions of the POSIX 1003.2 Regular 64 Expression routines (which are Henry Spencer's implementation). 65 If your C library contains an implementation of the POSIX 1003.2 66 RE routines (note, this is NOT the same as the historic UNIX RE 67 routines), and you want to use them instead, enter: 68 69 --disable-re 70 71 as an argument to configure, and the RE routines will be taken 72 from whatever libraries you load. Please ensure that your RE 73 routines implement Henry Spencer's extensions for doing vi-style 74 "word" searches. 75 76enable-debug: 77 If you want to build nvi with no optimization (i.e. without -O 78 as a compiler flag), with -g as a compiler flag, and with DEBUG 79 defined during compilation, enter: 80 81 --enable-debug 82 83 as an argument to configure. 84 85enable-perlinterp: 86 If you have the Perl 5 libraries and you want to compile in the 87 Perl interpreter, enter: 88 89 --enable-perlinterp 90 91 as an argument to configure. (Note: this is NOT possible with 92 Perl 4, or even with Perl 5 versions earlier than 5.002.) 93 94enable-tclinterp: 95 If you have the Tk/Tcl libraries and you want to compile in the 96 Tcl/Tk interpreter, enter: 97 98 --enable-tclinterp 99 100 as an argument to configure. If your Tk/Tcl include files and 101 libraries aren't in the standard library and include locations, 102 see the next section of this README file for more information. 103 104enable-gtk: 105 If you have the Gtk libraries and you want to build the Gtk 106 nvi front-end, enter: 107 108 --enable-gtk 109 110 as an argument to configure. If your Gtk include files and 111 libraries aren't in the standard library and include locations, 112 see the next section of this README file for more information. 113 See also the enable-threads option. 114 115enable-motif: 116 If you have the Motif libraries and you want to build the Motif 117 nvi front-end, enter: 118 119 --enable-motif 120 121 as an argument to configure. If your Motif include files and 122 libraries aren't in the standard library and include locations, 123 see the next section of this README file for more information. 124 125enable-threads: 126 If you want to be able to use multiple windows in the Gtk 127 front-end, you should specify this option. 128 129with-curses: 130 Specifies the path where curses is installed. 131 132with-db3: 133 Specifies the path where DB3 is installed. 134 See README.DB3 for more information about DB3. 135 136enable-dynamic-loading: 137 Dynamically load DB3 library. 138 See README.DB3 for more information about DB3. 139 140enable-widechar: 141 Enables support for wide characters. 142 Note that this is still rather experimental. 143 144 If you try this out on Solaris, you will want to point nvi 145 to the curses in /usr/xpg4/ which is CSI compliant. 146 147=-=-=-=-=-=-= 148ADDING OR CHANGING COMPILERS, OR COMPILE OR LOAD LINE FLAGS 149=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 150 151If you want to use a specific compiler, specify the CC environment 152variable before running configure. For example: 153 154 env CC=gcc configure 155 156Using anything other than the native compiler will almost certainly 157mean that you'll want to check the compile and load line flags, too. 158 159If you want to specify additional load line flags, specify the ADDLDFLAGS 160environment variable before running configure. For example: 161 162 env ADDLDFLAGS="-Q" configure 163 164would specify the -Q flag in the load line when the nvi programs are 165loaded. 166 167If you don't want configure to use the default load line flags for the 168system, specify the LDFLAGS environment variable before running configure. 169For example: 170 171 env LDFLAGS="-32" configure 172 173will cause configure to set the load line flags to "-32", and not set 174them based on the current system. 175 176If you want to specify additional compile line flags, specify the 177ADDCPPFLAGS environment variable before running configure. For example: 178 179 env ADDCPPFLAGS="-I../foo" configure 180 181would cause the compiler to be passed the -I../foo flag when compiling 182test programs during configuration as well as when building nvi object 183files. 184 185If you don't want configure to use the default compile line flags for the 186system, specify the CPPFLAGS environment variable before running configure. 187For example: 188 189 env CPPFLAGS="-I.." configure 190 191will cause configure to use "-I.." as the compile line flags instead of 192the default values. 193 194=-=-=-=-=-=-= 195ADDING LIBRARIES AND INCLUDE FILES 196=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 197 198If the Tk/Tcl or any other include files or libraries are in non-standard 199places on your system, you will need to specify the directory path where 200they can be found. 201 202If you want to specify additional library paths, set the ADDLIBS environment 203variable before running configure. For example: 204 205 env ADDLIBS="-L/a/b -L/e/f -ldb" configure 206 207would specify two additional directories to search for libraries, /a/b 208and /e/f, and one additional library to load, "db". 209 210If you want to specify additional include paths, specify the ADDCPPFLAGS 211environment variable before running configure. For example: 212 213 env ADDCPPFLAGS="-I/usr/local/include" LIBS="-ldb" configure 214 215would search /usr/local/include for include files, as well as load the db 216library as described above. 217 218As a final example, let's say that you've downloaded ncurses from the net 219and you've built it in a directory named ncurses which is at the same 220level in the filesystem hierarchy as nvi. You would enter something like: 221 222 env ADDCPPFLAGS="-I../../ncurses/include" \ 223 ADDLIBS="-L../../ncurses/libraries" configure 224 225to cause nvi to look for the curses include files and the curses library 226in the ncurses environment. 227 228Notes: 229 Make sure that you prepend -L to any library directory names, and 230 that you prepend -I to any include file directory names! Also, 231 make sure that you quote the paths as shown above, i.e. with 232 single or double quotes around the values you're specifying for 233 ADDCPPFLAGS and ADDLIBS. 234 235 =-=-=-=-=-= 236 You should NOT need to add any libraries or include files to load 237 the Perl5 interpreter. The configure script will obtain that 238 information directly from the Perl5 program. This means that the 239 configure script must be able to find perl in its path. It looks 240 for "perl5" first, and then "perl". If you're building a Perl 241 interpreter and neither is found, it's a fatal error. 242 243 =-=-=-=-=-= 244 You do not need to specify additional libraries to load Tk/Tcl, 245 Perl or curses, as the nvi configuration script adds the 246 appropriate libraries to the load line whenever you specify 247 --enable-tknvi or other Perl or Tk/Tcl related option, or build 248 the Tk/Tcl or curses version of nvi. The library names that are 249 automatically loaded are as follows: 250 251 for Perl: -lperl 252 for Tk/Tcl: -ltk -ltcl -lm 253 for curses: -lcurses 254 255 In addition, the configure script loads: 256 257 ... the X libraries when loading the Tk/Tcl libraries, 258 if they exist. 259 260 ... the -ltermcap or -ltermlib libraries when loading 261 any curses library, if they exist. 262 263 =-=-=-=-=-= 264 The env command is available on most systems, and simply sets one 265 or more environment variables before running a command. If the 266 env command is not available to you, you can set the environment 267 variables in your shell before running configure. For example, 268 in sh or ksh, you could do: 269 270 ADDLIBS="-L/a/b -L/e/f -ldb" configure 271 272 and in csh or tcsh, you could do: 273 274 setenv ADDLIBS "-L/a/b -L/e/f -ldb" 275 configure 276 277 See your shell manual page for further information. 278 279=-=-=-=-=-=-= 280INSTALLING NVI 281=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 282 283Nvi installs the following files into the following locations, with 284the following default values: 285 286Variables: Default value: 287prefix /usr/local 288exec_prefix $(prefix) 289bindir $(prefix)/bin 290datadir $(prefix)/share 291mandir $(prefix)/man 292 293File(s): Default location 294---------------------------------------- 295vi $(bindir)/vi 296vi.1 $(mandir)/man1/vi.1 297vi.0 $(mandir)/cat1/vi.0 298Perl scripts $(datadir)/vi/perl/ 299Tcl scripts $(datadir)/vi/tcl/ 300Message Catalogs $(datadir)/vi/catalog/ 301 302Notes: 303 There are two hard links to the vi program, named ex and view. 304 Similarly, there are two hard links to the unformatted vi manual 305 page, named ex.1 and view.1, and two hard links to the formatted 306 manual page, named ex.0 and view.0. These links are created when 307 the program and man pages are installed. 308 309 If you want to install vi, ex, view and the man pages as nvi, nex, 310 nview, use the configure option --program-prefix=n. Other, more 311 complex transformations are possible -- use configure --help to 312 see more options. 313 314 To move the entire installation tree somewhere besides /usr/local, 315 change the value of both "exec_prefix" and "prefix". To move the 316 binaries to a different place, change the value of "bindir". 317 Similarly, to put the datafiles (the message catalogs, Perl and 318 Tcl scripts) or the man pages in a different place, change the 319 value of "datadir" or "mandir". These values can be changed as 320 part of configuration: 321 322 configure --exec_prefix=/usr/contrib --prefix=/usr/share 323 324 or when doing the install itself: 325 326 make exec_prefix=/usr/contrib prefix=/usr/contrib install 327 328 The datafile directory (e.g., /usr/local/share/vi by default) is 329 completely removed and then recreated as part of the installation 330 process. 331 332=-=-=-=-=-=-= 333NVI AND THE CURSES LIBRARY 334=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 335 336The major portability problem for nvi is selecting a curses library. 337Unfortunately, it is common to find broken versions of curses -- the 338original System V curses was broken, resulting in all vendors whose 339implementations are derived from System V having broken implementations 340in turn. 341 342If you use the vendor's or other curses library, and you see any of the 343following symptoms: 344 345 + Core dumps in curses routines. 346 + Missing routines when compiling. 347 + Repainting the wrong characters on the screen. 348 + Displaying inverse video in the wrong places. 349 + Failure to reset your terminal to the correct modes on exit. 350 351you have a broken curses implementation, and you should reconfigure nvi 352to use another curses library. 353 354An alternative for your vendor's curses is ncurses, available from 355ftp://ftp.gnu.org/pub/gnu/ncurses/ 356 357One final note. If you see the following symptoms: 358 359 + Line-by-line screen repainting instead of scrolling. 360 361it usually means that your termcap or terminfo information is insufficient 362for the terminal. 363