1 1.1 christos Copyright 1994, 1995, 1996, 1999, 2000, 2001 Free Software Foundation, 2 1.1 christos Inc. 3 1.1 christos 4 1.1 christos This file is free documentation; the Free Software Foundation gives 5 1.1 christos unlimited permission to copy, distribute and modify it. 6 1.1 christos 7 1.1 christos Basic Installation 8 1.1 christos ================== 9 1.1 christos 10 1.1 christos These are generic installation instructions. 11 1.1 christos 12 1.1 christos The `configure' shell script attempts to guess correct values for 13 1.1 christos various system-dependent variables used during compilation. It uses 14 1.1 christos those values to create a `Makefile' in each directory of the package. 15 1.1 christos It may also create one or more `.h' files containing system-dependent 16 1.1 christos definitions. Finally, it creates a shell script `config.status' that 17 1.1 christos you can run in the future to recreate the current configuration, and a 18 1.1 christos file `config.log' containing compiler output (useful mainly for 19 1.1 christos debugging `configure'). 20 1.1 christos 21 1.1 christos It can also use an optional file (typically called `config.cache' 22 1.1 christos and enabled with `--cache-file=config.cache' or simply `-C') that saves 23 1.1 christos the results of its tests to speed up reconfiguring. (Caching is 24 1.1 christos disabled by default to prevent problems with accidental use of stale 25 1.1 christos cache files.) 26 1.1 christos 27 1.1 christos If you need to do unusual things to compile the package, please try 28 1.1 christos to figure out how `configure' could check whether to do them, and mail 29 1.1 christos diffs or instructions to the address given in the `README' so they can 30 1.1 christos be considered for the next release. If you are using the cache, and at 31 1.1 christos some point `config.cache' contains results you don't want to keep, you 32 1.1 christos may remove or edit it. 33 1.1 christos 34 1.1 christos The file `configure.ac' (or `configure.in') is used to create 35 1.1 christos `configure' by a program called `autoconf'. You only need 36 1.1 christos `configure.ac' if you want to change it or regenerate `configure' using 37 1.1 christos a newer version of `autoconf'. 38 1.1 christos 39 1.1 christos The simplest way to compile this package is: 40 1.1 christos 41 1.1 christos 1. `cd' to the directory containing the package's source code and type 42 1.1 christos `./configure' to configure the package for your system. If you're 43 1.1 christos using `csh' on an old version of System V, you might need to type 44 1.1 christos `sh ./configure' instead to prevent `csh' from trying to execute 45 1.1 christos `configure' itself. 46 1.1 christos 47 1.1 christos Running `configure' takes awhile. While running, it prints some 48 1.1 christos messages telling which features it is checking for. 49 1.1 christos 50 1.1 christos 2. Type `make' to compile the package. 51 1.1 christos 52 1.1 christos 3. Optionally, type `make check' to run any self-tests that come with 53 1.1 christos the package. 54 1.1 christos 55 1.1 christos 4. Type `make install' to install the programs and any data files and 56 1.1 christos documentation. 57 1.1 christos 58 1.1 christos 5. You can remove the program binaries and object files from the 59 1.1 christos source code directory by typing `make clean'. To also remove the 60 1.1 christos files that `configure' created (so you can compile the package for 61 1.1 christos a different kind of computer), type `make distclean'. There is 62 1.1 christos also a `make maintainer-clean' target, but that is intended mainly 63 1.1 christos for the package's developers. If you use it, you may have to get 64 1.1 christos all sorts of other programs in order to regenerate files that came 65 1.1 christos with the distribution. 66 1.1 christos 67 1.1 christos Compilers and Options 68 1.1 christos ===================== 69 1.1 christos 70 1.1 christos Some systems require unusual options for compilation or linking that 71 1.1 christos the `configure' script does not know about. Run `./configure --help' 72 1.1 christos for details on some of the pertinent environment variables. 73 1.1 christos 74 1.1 christos You can give `configure' initial values for variables by setting 75 1.1 christos them in the environment. You can do that on the command line like this: 76 1.1 christos 77 1.1 christos ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix 78 1.1 christos 79 1.1 christos *Note Defining Variables::, for more details. 80 1.1 christos 81 1.1 christos Compiling For Multiple Architectures 82 1.1 christos ==================================== 83 1.1 christos 84 1.1 christos You can compile the package for more than one kind of computer at the 85 1.1 christos same time, by placing the object files for each architecture in their 86 1.1 christos own directory. To do this, you must use a version of `make' that 87 1.1 christos supports the `VPATH' variable, such as GNU `make'. `cd' to the 88 1.1 christos directory where you want the object files and executables to go and run 89 1.1 christos the `configure' script. `configure' automatically checks for the 90 1.1 christos source code in the directory that `configure' is in and in `..'. 91 1.1 christos 92 1.1 christos If you have to use a `make' that does not support the `VPATH' 93 1.1 christos variable, you have to compile the package for one architecture at a 94 1.1 christos time in the source code directory. After you have installed the 95 1.1 christos package for one architecture, use `make distclean' before reconfiguring 96 1.1 christos for another architecture. 97 1.1 christos 98 1.1 christos Installation Names 99 1.1 christos ================== 100 1.1 christos 101 1.1 christos By default, `make install' will install the package's files in 102 1.1 christos `/usr/local/bin', `/usr/local/man', etc. You can specify an 103 1.1 christos installation prefix other than `/usr/local' by giving `configure' the 104 1.1 christos option `--prefix=PATH'. 105 1.1 christos 106 1.1 christos You can specify separate installation prefixes for 107 1.1 christos architecture-specific files and architecture-independent files. If you 108 1.1 christos give `configure' the option `--exec-prefix=PATH', the package will use 109 1.1 christos PATH as the prefix for installing programs and libraries. 110 1.1 christos Documentation and other data files will still use the regular prefix. 111 1.1 christos 112 1.1 christos In addition, if you use an unusual directory layout you can give 113 1.1 christos options like `--bindir=PATH' to specify different values for particular 114 1.1 christos kinds of files. Run `configure --help' for a list of the directories 115 1.1 christos you can set and what kinds of files go in them. 116 1.1 christos 117 1.1 christos If the package supports it, you can cause programs to be installed 118 1.1 christos with an extra prefix or suffix on their names by giving `configure' the 119 1.1 christos option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. 120 1.1 christos 121 1.1 christos Optional Features 122 1.1 christos ================= 123 1.1 christos 124 1.1 christos Some packages pay attention to `--enable-FEATURE' options to 125 1.1 christos `configure', where FEATURE indicates an optional part of the package. 126 1.1 christos They may also pay attention to `--with-PACKAGE' options, where PACKAGE 127 1.1 christos is something like `gnu-as' or `x' (for the X Window System). The 128 1.1 christos `README' should mention any `--enable-' and `--with-' options that the 129 1.1 christos package recognizes. 130 1.1 christos 131 1.1 christos For packages that use the X Window System, `configure' can usually 132 1.1 christos find the X include and library files automatically, but if it doesn't, 133 1.1 christos you can use the `configure' options `--x-includes=DIR' and 134 1.1 christos `--x-libraries=DIR' to specify their locations. 135 1.1 christos 136 1.1 christos Specifying the System Type 137 1.1 christos ========================== 138 1.1 christos 139 1.1 christos There may be some features `configure' cannot figure out 140 1.1 christos automatically, but needs to determine by the type of host the package 141 1.1 christos will run on. Usually `configure' can figure that out, but if it prints 142 1.1 christos a message saying it cannot guess the host type, give it the 143 1.1 christos `--build=TYPE' option. TYPE can either be a short name for the system 144 1.1 christos type, such as `sun4', or a canonical name which has the form: 145 1.1 christos 146 1.1 christos CPU-COMPANY-SYSTEM 147 1.1 christos 148 1.1 christos where SYSTEM can have one of these forms: 149 1.1 christos 150 1.1 christos OS KERNEL-OS 151 1.1 christos 152 1.1 christos See the file `config.sub' for the possible values of each field. If 153 1.1 christos `config.sub' isn't included in this package, then this package doesn't 154 1.1 christos need to know the host type. 155 1.1 christos 156 1.1 christos If you are _building_ compiler tools for cross-compiling, you should 157 1.1 christos use the `--target=TYPE' option to select the type of system they will 158 1.1 christos produce code for. 159 1.1 christos 160 1.1 christos If you want to _use_ a cross compiler, that generates code for a 161 1.1 christos platform different from the build platform, you should specify the host 162 1.1 christos platform (i.e., that on which the generated programs will eventually be 163 1.1 christos run) with `--host=TYPE'. In this case, you should also specify the 164 1.1 christos build platform with `--build=TYPE', because, in this case, it may not 165 1.1 christos be possible to guess the build platform (it sometimes involves 166 1.1 christos compiling and running simple test programs, and this can't be done if 167 1.1 christos the compiler is a cross compiler). 168 1.1 christos 169 1.1 christos Sharing Defaults 170 1.1 christos ================ 171 1.1 christos 172 1.1 christos If you want to set default values for `configure' scripts to share, 173 1.1 christos you can create a site shell script called `config.site' that gives 174 1.1 christos default values for variables like `CC', `cache_file', and `prefix'. 175 1.1 christos `configure' looks for `PREFIX/share/config.site' if it exists, then 176 1.1 christos `PREFIX/etc/config.site' if it exists. Or, you can set the 177 1.1 christos `CONFIG_SITE' environment variable to the location of the site script. 178 1.1 christos A warning: not all `configure' scripts look for a site script. 179 1.1 christos 180 1.1 christos Defining Variables 181 1.1 christos ================== 182 1.1 christos 183 1.1 christos Variables not defined in a site shell script can be set in the 184 1.1 christos environment passed to `configure'. However, some packages may run 185 1.1 christos configure again during the build, and the customized values of these 186 1.1 christos variables may be lost. In order to avoid this problem, you should set 187 1.1 christos them in the `configure' command line, using `VAR=value'. For example: 188 1.1 christos 189 1.1 christos ./configure CC=/usr/local2/bin/gcc 190 1.1 christos 191 1.1 christos will cause the specified gcc to be used as the C compiler (unless it is 192 1.1 christos overridden in the site shell script). 193 1.1 christos 194 1.1 christos `configure' Invocation 195 1.1 christos ====================== 196 1.1 christos 197 1.1 christos `configure' recognizes the following options to control how it 198 1.1 christos operates. 199 1.1 christos 200 1.1 christos `--help' 201 1.1 christos `-h' 202 1.1 christos Print a summary of the options to `configure', and exit. 203 1.1 christos 204 1.1 christos `--version' 205 1.1 christos `-V' 206 1.1 christos Print the version of Autoconf used to generate the `configure' 207 1.1 christos script, and exit. 208 1.1 christos 209 1.1 christos `--cache-file=FILE' 210 1.1 christos Enable the cache: use and save the results of the tests in FILE, 211 1.1 christos traditionally `config.cache'. FILE defaults to `/dev/null' to 212 1.1 christos disable caching. 213 1.1 christos 214 1.1 christos `--config-cache' 215 1.1 christos `-C' 216 1.1 christos Alias for `--cache-file=config.cache'. 217 1.1 christos 218 1.1 christos `--quiet' 219 1.1 christos `--silent' 220 1.1 christos `-q' 221 1.1 christos Do not print messages saying which checks are being made. To 222 1.1 christos suppress all normal output, redirect it to `/dev/null' (any error 223 1.1 christos messages will still be shown). 224 1.1 christos 225 1.1 christos `--srcdir=DIR' 226 1.1 christos Look for the package's source code in directory DIR. Usually 227 1.1 christos `configure' can determine that directory automatically. 228 1.1 christos 229 1.1 christos `configure' also accepts some other, not widely useful, options. Run 230 1.1 christos `configure --help' for more details. 231 1.1 christos 232