1Basic Installation 2================== 3 4These are installation instructions for Readline-4.3. 5 6The simplest way to compile readline is: 7 8 1. `cd' to the directory containing the readline source code and type 9 `./configure' to configure readline for your system. If you're 10 using `csh' on an old version of System V, you might need to type 11 `sh ./configure' instead to prevent `csh' from trying to execute 12 `configure' itself. 13 14 Running `configure' takes some time. While running, it prints some 15 messages telling which features it is checking for. 16 17 2. Type `make' to compile readline and build the static readline 18 and history libraries. If supported, the shared readline and history 19 libraries will be built also. See below for instructions on compiling 20 the other parts of the distribution. Typing `make everything' will 21 cause the static and shared libraries (if supported) and the example 22 programs to be built. 23 24 3. Type `make install' to install the static readline and history 25 libraries, the readline include files, the documentation, and, if 26 supported, the shared readline and history libraries. 27 28 4. You can remove the created libraries and object files from the 29 build directory by typing `make clean'. To also remove the 30 files that `configure' created (so you can compile readline for 31 a different kind of computer), type `make distclean'. There is 32 also a `make maintainer-clean' target, but that is intended mainly 33 for the readline developers, and should be used with care. 34 35The `configure' shell script attempts to guess correct values for 36various system-dependent variables used during compilation. It 37uses those values to create a `Makefile' in the build directory, 38and Makefiles in the `doc', `shlib', and `examples' 39subdirectories. It also creates a `config.h' file containing 40system-dependent definitions. Finally, it creates a shell script 41`config.status' that you can run in the future to recreate the 42current configuration, a file `config.cache' that saves the 43results of its tests to speed up reconfiguring, and a file 44`config.log' containing compiler output (useful mainly for 45debugging `configure'). 46 47If you need to do unusual things to compile readline, please try 48to figure out how `configure' could check whether to do them, and 49mail diffs or instructions to <bug-readline@gnu.org> so they can 50be considered for the next release. If at some point 51`config.cache' contains results you don't want to keep, you may 52remove or edit it. 53 54The file `configure.in' is used to create `configure' by a 55program called `autoconf'. You only need `configure.in' if you 56want to change it or regenerate `configure' using a newer version 57of `autoconf'. The readline `configure.in' requires autoconf 58version 2.50 or newer. 59 60Compilers and Options 61===================== 62 63Some systems require unusual options for compilation or linking that 64the `configure' script does not know about. You can give `configure' 65initial values for variables by setting them in the environment. Using 66a Bourne-compatible shell, you can do that on the command line like 67this: 68 69 CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure 70 71Or on systems that have the `env' program, you can do it like this: 72 73 env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure 74 75Compiling For Multiple Architectures 76==================================== 77 78You can compile readline for more than one kind of computer at the 79same time, by placing the object files for each architecture in their 80own directory. To do this, you must use a version of `make' that 81supports the `VPATH' variable, such as GNU `make'. `cd' to the 82directory where you want the object files and executables to go and run 83the `configure' script. `configure' automatically checks for the 84source code in the directory that `configure' is in and in `..'. 85 86If you have to use a `make' that does not supports the `VPATH' 87variable, you have to compile readline for one architecture at a 88time in the source code directory. After you have installed 89readline for one architecture, use `make distclean' before 90reconfiguring for another architecture. 91 92Installation Names 93================== 94 95By default, `make install' will install the readline libraries in 96`/usr/local/lib', the include files in 97`/usr/local/include/readline', the man pages in `/usr/local/man', 98and the info files in `/usr/local/info'. You can specify an 99installation prefix other than `/usr/local' by giving `configure' 100the option `--prefix=PATH' or by supplying a value for the 101DESTDIR variable when running `make install'. 102 103You can specify separate installation prefixes for 104architecture-specific files and architecture-independent files. 105If you give `configure' the option `--exec-prefix=PATH', the 106readline Makefiles will use PATH as the prefix for installing the 107libraries. Documentation and other data files will still use the 108regular prefix. 109 110Specifying the System Type 111========================== 112 113There may be some features `configure' can not figure out 114automatically, but need to determine by the type of host readline 115will run on. Usually `configure' can figure that out, but if it 116prints a message saying it can not guess the host type, give it 117the `--host=TYPE' option. TYPE can either be a short name for 118the system type, such as `sun4', or a canonical name with three 119fields: CPU-COMPANY-SYSTEM (e.g., i386-unknown-freebsd4.2). 120 121See the file `config.sub' for the possible values of each field. 122 123Sharing Defaults 124================ 125 126If you want to set default values for `configure' scripts to share, 127you can create a site shell script called `config.site' that gives 128default values for variables like `CC', `cache_file', and `prefix'. 129`configure' looks for `PREFIX/share/config.site' if it exists, then 130`PREFIX/etc/config.site' if it exists. Or, you can set the 131`CONFIG_SITE' environment variable to the location of the site script. 132A warning: the readline `configure' looks for a site script, but not 133all `configure' scripts do. 134 135Operation Controls 136================== 137 138`configure' recognizes the following options to control how it 139operates. 140 141`--cache-file=FILE' 142 Use and save the results of the tests in FILE instead of 143 `./config.cache'. Set FILE to `/dev/null' to disable caching, for 144 debugging `configure'. 145 146`--help' 147 Print a summary of the options to `configure', and exit. 148 149`--quiet' 150`--silent' 151`-q' 152 Do not print messages saying which checks are being made. 153 154`--srcdir=DIR' 155 Look for the package's source code in directory DIR. Usually 156 `configure' can determine that directory automatically. 157 158`--version' 159 Print the version of Autoconf used to generate the `configure' 160 script, and exit. 161 162`configure' also accepts some other, not widely useful, options. 163 164Optional Features 165================= 166 167The readline `configure' recognizes a single `--with-PACKAGE' option: 168 169`--with-curses' 170 This tells readline that it can find the termcap library functions 171 (tgetent, et al.) in the curses library, rather than a separate 172 termcap library. Readline uses the termcap functions, but does not 173 link with the termcap or curses library itself, allowing applications 174 which link with readline the to choose an appropriate library. 175 This option tells readline to link the example programs with the 176 curses library rather than libtermcap. 177 178`configure' also recognizes two `--enable-FEATURE' options: 179 180`--enable-shared' 181 Build the shared libraries by default on supported platforms. The 182 default is `yes'. 183 184`--enable-static' 185 Build the static libraries by default. The default is `yes'. 186 187Shared Libraries 188================ 189 190There is support for building shared versions of the readline and 191history libraries. The configure script creates a Makefile in 192the `shlib' subdirectory, and typing `make shared' will cause 193shared versions of the readline and history libraries to be built 194on supported platforms. 195 196If `configure' is given the `--enable-shared' option, it will attempt 197to build the shared libraries by default on supported platforms. 198 199Configure calls the script support/shobj-conf to test whether or 200not shared library creation is supported and to generate the values 201of variables that are substituted into shlib/Makefile. If you 202try to build shared libraries on an unsupported platform, `make' 203will display a message asking you to update support/shobj-conf for 204your platform. 205 206If you need to update support/shobj-conf, you will need to create 207a `stanza' for your operating system and compiler. The script uses 208the value of host_os and ${CC} as determined by configure. For 209instance, FreeBSD 4.2 with any version of gcc is identified as 210`freebsd4.2-gcc*'. 211 212In the stanza for your operating system-compiler pair, you will need to 213define several variables. They are: 214 215SHOBJ_CC The C compiler used to compile source files into shareable 216 object files. This is normally set to the value of ${CC} 217 by configure, and should not need to be changed. 218 219SHOBJ_CFLAGS Flags to pass to the C compiler ($SHOBJ_CC) to create 220 position-independent code. If you are using gcc, this 221 should probably be set to `-fpic'. 222 223SHOBJ_LD The link editor to be used to create the shared library from 224 the object files created by $SHOBJ_CC. If you are using 225 gcc, a value of `gcc' will probably work. 226 227SHOBJ_LDFLAGS Flags to pass to SHOBJ_LD to enable shared object creation. 228 If you are using gcc, `-shared' may be all that is necessary. 229 These should be the flags needed for generic shared object 230 creation. 231 232SHLIB_XLDFLAGS Additional flags to pass to SHOBJ_LD for shared library 233 creation. Many systems use the -R option to the link 234 editor to embed a path within the library for run-time 235 library searches. A reasonable value for such systems would 236 be `-R$(libdir)'. 237 238SHLIB_LIBS Any additional libraries that shared libraries should be 239 linked against when they are created. 240 241SHLIB_LIBSUFF The suffix to add to `libreadline' and `libhistory' when 242 generating the filename of the shared library. Many systems 243 use `so'; HP-UX uses `sl'. 244 245SHLIB_LIBVERSION The string to append to the filename to indicate the version 246 of the shared library. It should begin with $(SHLIB_LIBSUFF), 247 and possibly include version information that allows the 248 run-time loader to load the version of the shared library 249 appropriate for a particular program. Systems using shared 250 libraries similar to SunOS 4.x use major and minor library 251 version numbers; for those systems a value of 252 `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate. 253 Systems based on System V Release 4 don't use minor version 254 numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems. 255 Other Unix versions use different schemes. 256 257SHLIB_STATUS Set this to `supported' when you have defined the other 258 necessary variables. Make uses this to determine whether 259 or not shared library creation should be attempted. If 260 shared libraries are not supported, this will be set to 261 `unsupported'. 262 263You should look at the existing stanzas in support/shobj-conf for ideas. 264 265Once you have updated support/shobj-conf, re-run configure and type 266`make shared' or `make'. The shared libraries will be created in the 267shlib subdirectory. 268 269If shared libraries are created, `make install' will install them. 270You may install only the shared libraries by running `make 271install-shared' from the top-level build directory. Running `make 272install' in the shlib subdirectory will also work. If you don't want 273to install any created shared libraries, run `make install-static'. 274