1 @c This file is included by autoconf.texi and is used to produce 2 @c the INSTALL file. 3 4 @ifclear autoconf 5 6 @unnumbered Installation Instructions 7 8 Copyright @copyright{} 1994-1996, 1999-2002, 2004-2012 Free Software 9 Foundation, Inc. 10 11 Copying and distribution of this file, with or without modification, are 12 permitted in any medium without royalty provided the copyright notice 13 and this notice are preserved. This file is offered as-is, without 14 warranty of any kind. 15 16 @end ifclear 17 18 @node Basic Installation 19 @section Basic Installation 20 21 Briefly, the shell commands @samp{./configure; make; make install} 22 should configure, build, and install this package. The following 23 more-detailed instructions are generic; see the @file{README} file for 24 instructions specific to this package. 25 @ifclear autoconf 26 Some packages provide this @file{INSTALL} file but do not implement all 27 of the features documented below. The lack of an optional feature in a 28 given package is not necessarily a bug. 29 @end ifclear 30 More recommendations for GNU packages can be found in 31 @ref{Makefile Conventions, , Makefile Conventions, standards, 32 GNU Coding Standards}. 33 34 The @command{configure} shell script attempts to guess correct values 35 for various system-dependent variables used during compilation. It uses 36 those values to create a @file{Makefile} in each directory of the 37 package. It may also create one or more @file{.h} files containing 38 system-dependent definitions. Finally, it creates a shell script 39 @file{config.status} that you can run in the future to recreate the 40 current configuration, and a file @file{config.log} containing compiler 41 output (useful mainly for debugging @command{configure}). 42 43 It can also use an optional file (typically called @file{config.cache} 44 and enabled with @option{--cache-file=config.cache} or simply 45 @option{-C}) that saves the results of its tests to speed up 46 reconfiguring. Caching is disabled by default to prevent problems with 47 accidental use of stale cache files. 48 49 If you need to do unusual things to compile the package, please try to 50 figure out how @command{configure} could check whether to do them, and 51 mail diffs or instructions to the address given in the @file{README} so 52 they can be considered for the next release. If you are using the 53 cache, and at some point @file{config.cache} contains results you don't 54 want to keep, you may remove or edit it. 55 56 The file @file{configure.ac} (or @file{configure.in}) is used to create 57 @file{configure} by a program called @command{autoconf}. You need 58 @file{configure.ac} if you want to change it or regenerate 59 @file{configure} using a newer version of @command{autoconf}. 60 61 The simplest way to compile this package is: 62 63 @enumerate 64 @item 65 @command{cd} to the directory containing the package's source code and type 66 @samp{./configure} to configure the package for your system. 67 68 Running @command{configure} might take a while. While running, it prints some 69 messages telling which features it is checking for. 70 71 @item 72 Type @samp{make} to compile the package. 73 74 @item 75 Optionally, type @samp{make check} to run any self-tests that come with 76 the package, generally using the just-built uninstalled binaries. 77 78 @item 79 Type @samp{make install} to install the programs and any data files and 80 documentation. When installing into a prefix owned by root, it is 81 recommended that the package be configured and built as a regular user, 82 and only the @samp{make install} phase executed with root privileges. 83 84 @item 85 Optionally, type @samp{make installcheck} to repeat any self-tests, but 86 this time using the binaries in their final installed location. This 87 target does not install anything. Running this target as a regular 88 user, particularly if the prior @samp{make install} required root 89 privileges, verifies that the installation completed correctly. 90 91 @item 92 You can remove the program binaries and object files from the source 93 code directory by typing @samp{make clean}. To also remove the files 94 that @command{configure} created (so you can compile the package for a 95 different kind of computer), type @samp{make distclean}. There is also 96 a @samp{make maintainer-clean} target, but that is intended mainly for 97 the package's developers. If you use it, you may have to get all sorts 98 of other programs in order to regenerate files that came with the 99 distribution. 100 101 @item 102 Often, you can also type @samp{make uninstall} to remove the installed 103 files again. In practice, not all packages have tested that 104 uninstallation works correctly, even though it is required by the 105 GNU Coding Standards. 106 107 @item 108 Some packages, particularly those that use Automake, provide @samp{make 109 distcheck}, which can by used by developers to test that all other 110 targets like @samp{make install} and @samp{make uninstall} work 111 correctly. This target is generally not run by end users. 112 @end enumerate 113 114 @node Compilers and Options 115 @section Compilers and Options 116 117 Some systems require unusual options for compilation or linking that the 118 @command{configure} script does not know about. Run @samp{./configure 119 --help} for details on some of the pertinent environment variables. 120 121 You can give @command{configure} initial values for configuration 122 parameters by setting variables in the command line or in the environment. 123 Here is an example: 124 125 @example 126 ./configure CC=c99 CFLAGS=-g LIBS=-lposix 127 @end example 128 129 @xref{Defining Variables}, for more details. 130 131 132 @node Multiple Architectures 133 @section Compiling For Multiple Architectures 134 135 You can compile the package for more than one kind of computer at the 136 same time, by placing the object files for each architecture in their 137 own directory. To do this, you can use GNU @command{make}. 138 @command{cd} to the directory where you want the object files and 139 executables to go and run the @command{configure} script. 140 @command{configure} automatically checks for the source code in the 141 directory that @command{configure} is in and in @file{..}. This is 142 known as a @dfn{VPATH} build. 143 144 With a non-GNU @command{make}, 145 it is safer to compile the package for one 146 architecture at a time in the source code directory. After you have 147 installed the package for one architecture, use @samp{make distclean} 148 before reconfiguring for another architecture. 149 150 On MacOS X 10.5 and later systems, you can create libraries and 151 executables that work on multiple system types---known as @dfn{fat} or 152 @dfn{universal} binaries---by specifying multiple @option{-arch} options 153 to the compiler but only a single @option{-arch} option to the 154 preprocessor. Like this: 155 156 @example 157 ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ 158 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ 159 CPP="gcc -E" CXXCPP="g++ -E" 160 @end example 161 162 This is not guaranteed to produce working output in all cases, you may 163 have to build one architecture at a time and combine the results 164 using the @command{lipo} tool if you have problems. 165 166 @node Installation Names 167 @section Installation Names 168 169 By default, @samp{make install} installs the package's commands under 170 @file{/usr/local/bin}, include files under @file{/usr/local/include}, etc. 171 You can specify an 172 installation prefix other than @file{/usr/local} by giving 173 @command{configure} the option @option{--prefix=@var{prefix}}, where 174 @var{prefix} must be an absolute file name. 175 176 You can specify separate installation prefixes for architecture-specific 177 files and architecture-independent files. If you pass the option 178 @option{--exec-prefix=@var{prefix}} to @command{configure}, the 179 package uses @var{prefix} as the prefix for installing programs and 180 libraries. Documentation and other data files still use the 181 regular prefix. 182 183 In addition, if you use an unusual directory layout you can give options 184 like @option{--bindir=@var{dir}} to specify different values for 185 particular kinds of files. Run @samp{configure --help} for a list of 186 the directories you can set and what kinds of files go in them. In 187 general, the default for these options is expressed in terms of 188 @samp{$@{prefix@}}, so that specifying just @option{--prefix} will 189 affect all of the other directory specifications that were not 190 explicitly provided. 191 192 The most portable way to affect installation locations is to pass the 193 correct locations to @command{configure}; however, many packages provide 194 one or both of the following shortcuts of passing variable assignments 195 to the @samp{make install} command line to change installation locations 196 without having to reconfigure or recompile. 197 198 The first method involves providing an override variable for each 199 affected directory. For example, @samp{make install 200 prefix=/alternate/directory} will choose an alternate location for all 201 directory configuration variables that were expressed in terms of 202 @samp{$@{prefix@}}. Any directories that were specified during 203 @command{configure}, but not in terms of @samp{$@{prefix@}}, must each be 204 overridden at install time for the entire 205 installation to be relocated. The approach of makefile variable 206 overrides for each directory variable is required by the GNU 207 Coding Standards, and ideally causes no recompilation. However, some 208 platforms have known limitations with the semantics of shared libraries 209 that end up requiring recompilation when using this method, particularly 210 noticeable in packages that use GNU Libtool. 211 212 The second method involves providing the @samp{DESTDIR} variable. For 213 example, @samp{make install DESTDIR=/alternate/directory} will prepend 214 @samp{/alternate/directory} before all installation names. The approach 215 of @samp{DESTDIR} overrides is not required by the GNU Coding 216 Standards, and does not work on platforms that have drive letters. On 217 the other hand, it does better at avoiding recompilation issues, and 218 works well even when some directory options were not specified in terms 219 of @samp{$@{prefix@}} at @command{configure} time. 220 221 @node Optional Features 222 @section Optional Features 223 224 If the package supports it, you can cause programs to be installed with 225 an extra prefix or suffix on their names by giving @command{configure} 226 the option @option{--program-prefix=@var{PREFIX}} or 227 @option{--program-suffix=@var{SUFFIX}}. 228 229 Some packages pay attention to @option{--enable-@var{feature}} options 230 to @command{configure}, where @var{feature} indicates an optional part 231 of the package. They may also pay attention to 232 @option{--with-@var{package}} options, where @var{package} is something 233 like @samp{gnu-as} or @samp{x} (for the X Window System). The 234 @file{README} should mention any @option{--enable-} and @option{--with-} 235 options that the package recognizes. 236 237 For packages that use the X Window System, @command{configure} can 238 usually find the X include and library files automatically, but if it 239 doesn't, you can use the @command{configure} options 240 @option{--x-includes=@var{dir}} and @option{--x-libraries=@var{dir}} to 241 specify their locations. 242 243 Some packages offer the ability to configure how verbose the execution 244 of @command{make} will be. For these packages, running 245 @samp{./configure --enable-silent-rules} sets the default to minimal 246 output, which can be overridden with @code{make V=1}; while running 247 @samp{./configure --disable-silent-rules} sets the default to verbose, 248 which can be overridden with @code{make V=0}. 249 250 @node Particular Systems 251 @section Particular systems 252 253 On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is 254 not installed, it is recommended to use the following options in order to 255 use an ANSI C compiler: 256 257 @example 258 ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" 259 @end example 260 261 @noindent 262 and if that doesn't work, install pre-built binaries of GCC for HP-UX. 263 264 HP-UX @command{make} updates targets which have the same time stamps as 265 their prerequisites, which makes it generally unusable when shipped 266 generated files such as @command{configure} are involved. Use GNU 267 @command{make} instead. 268 269 On OSF/1 a.k.a.@: Tru64, some versions of the default C compiler cannot 270 parse its @code{<wchar.h>} header file. The option @option{-nodtk} can be 271 used as a workaround. If GNU CC is not installed, it is therefore 272 recommended to try 273 274 @example 275 ./configure CC="cc" 276 @end example 277 278 @noindent 279 and if that doesn't work, try 280 281 @example 282 ./configure CC="cc -nodtk" 283 @end example 284 285 On Solaris, don't put @code{/usr/ucb} early in your @env{PATH}. This 286 directory contains several dysfunctional programs; working variants 287 of these programs are available in @code{/usr/bin}. So, if you need 288 @code{/usr/ucb} in your @env{PATH}, put it @emph{after} @code{/usr/bin}. 289 290 On Haiku, software installed for all users goes in @file{/boot/common}, 291 not @file{/usr/local}. It is recommended to use the following options: 292 293 @example 294 ./configure --prefix=/boot/common 295 @end example 296 297 @node System Type 298 @section Specifying the System Type 299 300 There may be some features @command{configure} cannot figure out 301 automatically, but needs to determine by the type of machine the package 302 will run on. Usually, assuming the package is built to be run on the 303 @emph{same} architectures, @command{configure} can figure that out, but 304 if it prints a message saying it cannot guess the machine type, give it 305 the @option{--build=@var{type}} option. @var{type} can either be a 306 short name for the system type, such as @samp{sun4}, or a canonical name 307 which has the form: 308 309 @example 310 @var{cpu}-@var{company}-@var{system} 311 @end example 312 313 @noindent 314 where @var{system} can have one of these forms: 315 316 @example 317 @var{os} 318 @var{kernel}-@var{os} 319 @end example 320 321 See the file @file{config.sub} for the possible values of each field. 322 If @file{config.sub} isn't included in this package, then this package 323 doesn't need to know the machine type. 324 325 If you are @emph{building} compiler tools for cross-compiling, you 326 should use the option @option{--target=@var{type}} to select the type of 327 system they will produce code for. 328 329 If you want to @emph{use} a cross compiler, that generates code for a 330 platform different from the build platform, you should specify the 331 @dfn{host} platform (i.e., that on which the generated programs will 332 eventually be run) with @option{--host=@var{type}}. 333 334 @node Sharing Defaults 335 @section Sharing Defaults 336 337 If you want to set default values for @command{configure} scripts to 338 share, you can create a site shell script called @file{config.site} that 339 gives default values for variables like @code{CC}, @code{cache_file}, 340 and @code{prefix}. @command{configure} looks for 341 @file{@var{prefix}/share/config.site} if it exists, then 342 @file{@var{prefix}/etc/config.site} if it exists. Or, you can set the 343 @code{CONFIG_SITE} environment variable to the location of the site 344 script. A warning: not all @command{configure} scripts look for a site 345 script. 346 347 @node Defining Variables 348 @section Defining Variables 349 350 Variables not defined in a site shell script can be set in the 351 environment passed to @command{configure}. However, some packages may 352 run configure again during the build, and the customized values of these 353 variables may be lost. In order to avoid this problem, you should set 354 them in the @command{configure} command line, using @samp{VAR=value}. 355 For example: 356 357 @example 358 ./configure CC=/usr/local2/bin/gcc 359 @end example 360 361 @noindent 362 causes the specified @command{gcc} to be used as the C compiler (unless it is 363 overridden in the site shell script). 364 365 @noindent 366 Unfortunately, this technique does not work for @env{CONFIG_SHELL} due 367 to an Autoconf limitation. Until the limitation is lifted, you can use 368 this workaround: 369 370 @example 371 CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 372 @end example 373 374 @node configure Invocation 375 @section @command{configure} Invocation 376 377 @command{configure} recognizes the following options to control how it 378 operates. 379 380 @table @option 381 @item --help 382 @itemx -h 383 Print a summary of all of the options to @command{configure}, and exit. 384 385 @item --help=short 386 @itemx --help=recursive 387 Print a summary of the options unique to this package's 388 @command{configure}, and exit. The @code{short} variant lists options 389 used only in the top level, while the @code{recursive} variant lists 390 options also present in any nested packages. 391 392 @item --version 393 @itemx -V 394 Print the version of Autoconf used to generate the @command{configure} 395 script, and exit. 396 397 @item --cache-file=@var{file} 398 @cindex Cache, enabling 399 Enable the cache: use and save the results of the tests in @var{file}, 400 traditionally @file{config.cache}. @var{file} defaults to 401 @file{/dev/null} to disable caching. 402 403 @item --config-cache 404 @itemx -C 405 Alias for @option{--cache-file=config.cache}. 406 407 @item --quiet 408 @itemx --silent 409 @itemx -q 410 Do not print messages saying which checks are being made. To suppress 411 all normal output, redirect it to @file{/dev/null} (any error messages 412 will still be shown). 413 414 @item --srcdir=@var{dir} 415 Look for the package's source code in directory @var{dir}. Usually 416 @command{configure} can determine that directory automatically. 417 418 @item --prefix=@var{dir} 419 Use @var{dir} as the installation prefix. @ref{Installation Names} 420 for more details, including other options available for fine-tuning 421 the installation locations. 422 423 @item --no-create 424 @itemx -n 425 Run the configure checks, but stop before creating any output files. 426 @end table 427 428 @noindent 429 @command{configure} also accepts some other, not widely useful, options. 430 Run @samp{configure --help} for more details. 431 432 @c Local Variables: 433 @c fill-column: 72 434 @c ispell-local-dictionary: "american" 435 @c indent-tabs-mode: nil 436 @c whitespace-check-buffer-indent: nil 437 @c End: 438