Home | History | Annotate | Line # | Download | only in doc
      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