1Basic Installation
2==================
3
4These are installation instructions for Readline-8.1.
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
187`--enable-bracketed-paste-default'
188    Enable bracketed paste by default, so the initial value of the
189    `enable-bracketed-paste' Readline variable is `on'. The default
190    is `yes'.
191
192Shared Libraries
193================
194
195There is support for building shared versions of the readline and
196history libraries.  The configure script creates a Makefile in
197the `shlib' subdirectory, and typing `make shared' will cause
198shared versions of the readline and history libraries to be built
199on supported platforms.
200
201If `configure' is given the `--enable-shared' option, it will attempt
202to build the shared libraries by default on supported platforms.
203
204Configure calls the script support/shobj-conf to test whether or
205not shared library creation is supported and to generate the values
206of variables that are substituted into shlib/Makefile.  If you
207try to build shared libraries on an unsupported platform, `make'
208will display a message asking you to update support/shobj-conf for
209your platform.
210
211If you need to update support/shobj-conf, you will need to create
212a `stanza' for your operating system and compiler.  The script uses
213the value of host_os and ${CC} as determined by configure.  For
214instance, FreeBSD 4.2 with any version of gcc is identified as
215`freebsd4.2-gcc*'.
216
217In the stanza for your operating system-compiler pair, you will need to
218define several variables.  They are:
219
220SHOBJ_CC	The C compiler used to compile source files into shareable
221		object files.  This is normally set to the value of ${CC}
222		by configure, and should not need to be changed.
223
224SHOBJ_CFLAGS	Flags to pass to the C compiler ($SHOBJ_CC) to create
225		position-independent code.  If you are using gcc, this
226		should probably be set to `-fpic'.
227
228SHOBJ_LD	The link editor to be used to create the shared library from
229		the object files created by $SHOBJ_CC.  If you are using
230		gcc, a value of `gcc' will probably work.
231
232SHOBJ_LDFLAGS	Flags to pass to SHOBJ_LD to enable shared object creation.
233		If you are using gcc, `-shared' may be all that is necessary.
234		These should be the flags needed for generic shared object
235		creation.
236
237SHLIB_XLDFLAGS	Additional flags to pass to SHOBJ_LD for shared library
238		creation.  Many systems use the -R option to the link
239		editor to embed a path within the library for run-time
240		library searches.  A reasonable value for such systems would
241		be `-R$(libdir)'.
242
243SHLIB_LIBS	Any additional libraries that shared libraries should be
244		linked against when they are created.
245
246SHLIB_LIBPREF	The prefix to use when generating the filename of the shared
247		library.  The default is `lib'; Cygwin uses `cyg'.
248
249SHLIB_LIBSUFF	The suffix to add to `libreadline' and `libhistory' when
250		generating the filename of the shared library.  Many systems
251		use `so'; HP-UX uses `sl'.
252
253SHLIB_LIBVERSION The string to append to the filename to indicate the version
254		of the shared library.  It should begin with $(SHLIB_LIBSUFF),
255		and possibly include version information that allows the
256		run-time loader to load the version of the shared library
257		appropriate for a particular program.  Systems using shared
258		libraries similar to SunOS 4.x use major and minor library
259		version numbers; for those systems a value of
260		`$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' is appropriate.
261		Systems based on System V Release 4 don't use minor version
262		numbers; use `$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' on those systems.
263		Other Unix versions use different schemes.
264
265SHLIB_DLLVERSION The version number for shared libraries that determines API
266		compatibility between readline versions and the underlying
267		system.  Used only on Cygwin.  Defaults to $SHLIB_MAJOR, but
268		can be overridden at configuration time by defining DLLVERSION
269		in the environment.
270
271SHLIB_DOT	The character used to separate the name of the shared library
272		from the suffix and version information.  The default is `.';
273		systems like Cygwin which don't separate version information
274		from the library name should set this to the empty string.
275
276SHLIB_STATUS	Set this to `supported' when you have defined the other
277		necessary variables.  Make uses this to determine whether
278		or not shared library creation should be attempted.  If
279		shared libraries are not supported, this will be set to
280		`unsupported'.
281
282You should look at the existing stanzas in support/shobj-conf for ideas.
283
284Once you have updated support/shobj-conf, re-run configure and type
285`make shared' or `make'.  The shared libraries will be created in the
286shlib subdirectory.
287
288If shared libraries are created, `make install' will install them.
289You may install only the shared libraries by running `make
290install-shared' from the top-level build directory.  Running `make
291install' in the shlib subdirectory will also work.  If you don't want
292to install any created shared libraries, run `make install-static'.
293