home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / gnu / gdb-4.14-src.lha / gdb-4.14 / etc / configure.info-1 < prev    next >
Encoding:
GNU Info File  |  1995-03-04  |  49.3 KB  |  1,175 lines

  1. This is Info file configure.info, produced by Makeinfo-1.55 from the
  2. input file ./configure.texi.
  3.  
  4. START-INFO-DIR-ENTRY
  5. * configure: (configure).        Cygnus configure.
  6. END-INFO-DIR-ENTRY
  7.  
  8.    This document describes the Cygnus Support version of `configure'.
  9.  
  10.    Copyright (C) 1991, 1992, 1993 Cygnus Support Permission is granted
  11. to make and distribute verbatim copies of this manual provided the
  12. copyright notice and this permission notice are preserved on all copies.
  13.  
  14.    Permission is granted to copy and distribute modified versions of
  15. this manual under the conditions for verbatim copying, provided that
  16. the entire resulting derived work is distributed under the terms of a
  17. permission notice identical to this one.
  18.  
  19.    Permission is granted to copy and distribute translations of this
  20. manual into another language, under the above conditions for modified
  21. versions, except that this permission notice may be stated in a
  22. translation approved by Cygnus Support.
  23.  
  24. 
  25. File: configure.info,  Node: Top,  Next: What configure does,  Prev: (DIR),  Up: (DIR)
  26.  
  27. Cygnus configure
  28. ****************
  29.  
  30.    This file documents the configuration system used and distributed by
  31. Cygnus Support.
  32.  
  33. * Menu:
  34.  
  35. * What configure does::    What configure does
  36. * Invoking configure::     Invoking configure--basic usage
  37. * Using configure::        More than you ever wanted to know
  38. * Porting::                How to use configure with new programs
  39. * Variables Index::
  40. * Concept Index::
  41.  
  42. 
  43. File: configure.info,  Node: What configure does,  Next: Invoking configure,  Prev: Top,  Up: Top
  44.  
  45. What `configure' does
  46. *********************
  47.  
  48.    This manual documents Cygnus `configure', a program which helps to
  49. automate much of the setup activity associated with building large
  50. suites of programs, such the Cygnus Support Developer's Kit.  This
  51. manual is therefore geared toward readers who are likely to face the
  52. problem of configuring software in source form before compiling and
  53. installing it.  We assume you are an experienced programmer or system
  54. administrator.  For further background on this topic, see *Note
  55. Apologia Configure: (cfg-paper)Some Basic Terms, by K. Richard Pixley.
  56.  
  57.    When `configure' runs, it does the following things:
  58.  
  59. ** creates build directories*
  60.      When you run `configure' with the `--srcdir' option, it uses the
  61.      current directory as the "build directory", creating under it a
  62.      directory tree that parallels the directory structure of the
  63.      source directory.  If you don't specify a `srcdir', `configure'
  64.      first assumes that the source code you wish to configure is in
  65.      your current directory; if it finds no `configure.in' input file
  66.      there, it searches in the directory `configure' itself lies in.
  67.      (For details, see *Note Build directories: Build directories.)
  68.  
  69. ** generates `Makefile'*
  70.      A `Makefile' template from the source directory, usually called
  71.      `Makefile.in', is copied to an output file in the build directory
  72.      which is most often named `Makefile'.  `configure' places
  73.      definitions for a number of standard `Makefile' macros at the
  74.      beginning of the output file.  If `--prefix=DIR' or
  75.      `--exec_prefix=DIR' are specified on the `configure' command line,
  76.      corresponding `Makefile' variables are set accordingly.  If host,
  77.      target, or site-specific `Makefile' fragments exist, these are
  78.      inserted into the output file.  (For details, see *Note `Makefile'
  79.      generation: Makefile generation.)
  80.  
  81. ** generates `.gdbinit'*
  82.      If the source directory contains a `.gdbinit' file and the build
  83.      directory is not the same as the source directory, a `.gdbinit'
  84.      file is created in the build directory.  This `.gdbinit' file
  85.      contains commands which allow the source directory to be read when
  86.      debugging with the GNU debugger, `gdb'.  (*Note Command Files:
  87.      (gdb)Command Files.)
  88.  
  89. ** makes symbolic links*
  90.      Most build directories require that some symbolic links with
  91.      generic names are built pointing to specific files in the source
  92.      directory.  If the system where `configure' runs cannot support
  93.      symbolic links, hard links are used instead.  (For details, see
  94.      *Note The `configure.in' input file: configure.in.)
  95.  
  96. ** generates `config.status'*
  97.      `configure' creates a shell script named `config.status' in the
  98.      build directory.  This shell script, when run from the build
  99.      directory (usually from within a `Makefile'), will reconfigure the
  100.      build directory (but not its subdirectories).  This is most often
  101.      used to have a `Makefile' update itself automatically if a new
  102.      source directory is available.
  103.  
  104. ** calls itself recursively*
  105.      If the source directory has subdirectories that should also be
  106.      configured, `configure' is called for each.
  107.  
  108. 
  109. File: configure.info,  Node: Invoking configure,  Next: Using configure,  Prev: What configure does,  Up: Top
  110.  
  111. Invoking `configure'
  112. ********************
  113.  
  114.    Cygnus `configure' is a shell script which resides in a source tree.
  115. The usual way to invoke `configure' is from the shell, as follows:
  116.  
  117.      eg$ ./configure HOSTTYPE
  118.  
  119. This prepares the source in the current directory (`.') to be compiled
  120. for a HOSTTYPE environment.  It assumes that you wish to build programs
  121. and files in the default "build directory" (also the current directory,
  122. `.').  If you do not specify a value for HOSTTYPE, Cygnus `configure'
  123. will attempt to discover this information by itself (*note Determining
  124. system information: config.guess.).  For information on HOSTTYPE
  125. environments, *Note Host: Host.
  126.  
  127.    All GNU software is packaged with one or more `configure' script(s)
  128. (*note How Configuration Should Work: (standards)Configuration.).  By
  129. using `configure' you prepare the source for your specific environment
  130. by selecting and using `Makefile' fragments and fragments of shell
  131. scripts, which are prepared in advance and stored with the source.
  132.  
  133.    `configure''s command-line options also allow you to specify other
  134. aspects of the source configuration:
  135.  
  136.        configure HOSTTYPE  [--target=TARGET] [--srcdir=DIR] [--rm]
  137.                  [--site=SITE] [--prefix=DIR] [--exec-prefix=DIR]
  138.                  [--program-prefix=STRING] [--tmpdir=DIR]
  139.                  [--with-PACKAGE[=YES/NO]] [--without-PACKAGE]
  140.                  [--enable-FEATURE[=YES/NO]] [--disable-FEATURE]
  141.                  [--norecursion] [--nfp] [-s] [-v] [-V | --version] [--help]
  142.  
  143. `--target=TARGET'
  144.      Requests that the sources be configured to target the TARGET
  145.      machine.  If no target is specified explicitly, the target is
  146.      assumed to be the same as the host (i.e., a "native"
  147.      configuration).  *Note Host: Host, and *Note Target: Target, for
  148.      discussions of each.
  149.  
  150. `--srcdir=DIR'
  151.      Direct each generated `Makefile' to use the sources located in
  152.      directory DIR.  Use this option whenever you wish the object code
  153.      to reside in a different place from the source code.  The "build
  154.      directory" is always assumed to be the directory you call
  155.      `configure' from.  See *Note Build directories: Build directories,
  156.      for an example.  If the source directory is not specified,
  157.      `configure' assumes that the source is in your current directory.
  158.      If `configure' finds no `configure.in' there, it searches in the
  159.      same directory that the `configure' script itself lies in.
  160.      Pathnames specified (Values for DIR) can be either absolute
  161.      relative to the *build* directory.
  162.  
  163. `--rm'
  164.      *Remove* the configuration specified by HOSTTYPE and the other
  165.      command-line options, rather than create it.
  166.  
  167.           *Note:* We recommend that you use `make distclean' rather than
  168.           use this option; see *Note Invoking `make': (make)Invoking
  169.           make, for details on `make distclean'.
  170.  
  171. `--site=SITE'
  172.      Generate the `Makefile' using site-specific `Makefile' fragments
  173.      for SITE.  *Note Adding information about local conventions:
  174.      Makefile fragments.
  175.  
  176. `--prefix=DIR'
  177.      Configure the source to install programs and files under directory
  178.      DIR.
  179.  
  180.      This option sets the variable `prefix'.  Each generated `Makefile'
  181.      will have its `prefix' variables set to this value.  (*Note What
  182.      `configure' really does: What configure really does.)
  183.  
  184. `--exec-prefix=DIR'
  185.      Configure the source to install "host dependent" files in DIR.
  186.  
  187.      This option sets the variable `exec_prefix'.  Each generated
  188.      `Makefile' will have its `exec_prefix' variables set to this value.
  189.      (*Note What `configure' really does: What configure really does.)
  190.  
  191. `--program-prefix=STRING'
  192.      Configure the source to install certain programs using STRING as a
  193.      prefix.  This applies to programs which might be used for
  194.      cross-compilation, such as the compiler and the binary utilities,
  195.      and also to programs which have the same names as common Unix
  196.      programs, such as `make'.
  197.  
  198.      This option sets the variable `program_prefix'.  Each generated
  199.      `Makefile' will have its `program_prefix' variables set to this
  200.      value.  (*Note What `configure' really does: What configure really
  201.      does.)
  202.  
  203. `--tmpdir=TMPDIR'
  204.      Use the directory TMPDIR for `configure''s temporary files.  The
  205.      default is the value of the environment variable `TMPDIR', or
  206.      `/tmp' if the environment variable is not set.
  207.  
  208. `--with-PACKAGE[=YES/NO]'
  209. `--without-PACKAGE'
  210.      Indicate that PACKAGE is present, or not present, depending on
  211.      YES/NO.  If YES/NO is nonexistent, its value is assumed to be
  212.      `yes'.  `--without-PACKAGE' is equivalent to `--with-PACKAGE=no'.
  213.  
  214.      For example, if you wish to configure the program `gcc' for a Sun
  215.      SPARCstation running SunOS 4.x, and you want `gcc' to use the GNU
  216.      linker `ld', you can configure `gcc' using
  217.  
  218.           eg$ configure --with-gnu-ld sun4
  219.  
  220.      *Note What `configure' really does: What configure really does, for
  221.      details.  See the installation or release notes for your
  222.      particular package for details on which other PACKAGE options are
  223.      recognized.
  224.  
  225. `--enable-FEATURE[=YES/NO]'
  226. `--disable-FEATURE'
  227.      Include FEATURE, or not, depending on YES/NO.  If YES/NO is
  228.      nonexistent, its value is assumed to be `yes'.
  229.      `--disable-FEATURE' is equivalent to `--enable-FEATURE=no'.
  230.  
  231.      *Note What `configure' really does: What configure really does, for
  232.      details.  See the installation or release notes for your
  233.      particular package for details on which other FEATURE options are
  234.      recognized.
  235.  
  236. `--norecursion'
  237.      Configure only this directory; ignore any subdirectories.  This is
  238.      used by the executable shell script `config.status' to reconfigure
  239.      only the current directory; it is most often used
  240.      non-interactively, when `make' is invoked.  (*Note
  241.      `config.status': config.status.)
  242.  
  243. `--nfp'
  244.      Assume that the intended HOSTTYPE has no floating point unit.
  245.  
  246. `-s'
  247.      Suppress status output.  This option is used internally by
  248.      `configure' when calling itself recursively in subdirectories.  You
  249.      can override this option with the `--verbose' option.
  250.  
  251. `-v'
  252. `--verbose'
  253.      Print status lines for each directory configured.  Normally, only
  254.      the status lines for the initial working directory are printed.
  255.  
  256. `--version'
  257. `-V'
  258.      Print the `configure' version number.
  259.  
  260. `--help'
  261.      Print a short summary of how to invoke `configure'.
  262.  
  263.    *Note:* You may introduce options with a single dash, `-', rather
  264. than two dashes, `--'.  However, you may not be able to truncate long
  265. option names when using a single dash.  When using two dashes, options
  266. may be abbreviated as long as each option can be uniquely identified.
  267. For example,
  268.      eg$ configure --s=/u/me/src HOSTTYPE
  269.  
  270. is ambiguous, as `--s' could refer to either `--site' or `--srcdir'.
  271. However,
  272.      eg$ configure --src=/u/me/src HOSTTYPE
  273.  
  274. is a valid abbreviation.
  275.  
  276. 
  277. File: configure.info,  Node: Using configure,  Next: Porting,  Prev: Invoking configure,  Up: Top
  278.  
  279. Using `configure'
  280. *****************
  281.  
  282.    `configure' prepares source directories for building programs in
  283. them.  "Configuring" is the process of preparing software to compile
  284. correctly on a given "host", for a given "target".
  285.  
  286.    `configure' subsequently writes a configured `Makefile' from a
  287. pre-built template; `configure' uses variables that have been set in the
  288. configuring process to determine the values of some variables in the
  289. `Makefile'.  Because of this we will refer to both `configure'
  290. variables and `Makefile' variables.  This convention allows us to
  291. determine where the variable should be set initially, in either
  292. `configure.in' or `Makefile.in'.
  293.  
  294. * Menu:
  295.  
  296. * What configure really does:: What configure really does
  297. * configure.in::               The configure.in input file
  298. * Install locations::          Where to install things once they are built
  299. * Host::                       Telling configure what will source will be built
  300. * Target::                     Telling configure what the source will target
  301. * Makefile fragments::         Adding information about local conventions
  302. * Makefile extensions::        Extensions to the GNU coding standards
  303.  
  304. 
  305. File: configure.info,  Node: What configure really does,  Next: configure.in,  Up: Using configure
  306.  
  307. What `configure' really does
  308. ============================
  309.  
  310.    Cygnus `configure' is a shell script that sets up an environment in
  311. which your programs will compile correctly for your machine and
  312. operating system, and will install in proper places.  `configure'
  313. accomplishes this task by doing the following:
  314.  
  315.    * it generates a `Makefile' from a custom template called
  316.      `Makefile.in' in each relevant source directory;
  317.  
  318.    * it customizes the build process to your specifications; you set
  319.      certain variables for `configure', either on the command line or
  320.      in the file `configure.in', which subsequently sets variables in
  321.      each generated `Makefile' to be used by `make' when actually
  322.      building the software;
  323.  
  324.    * it creates "build directories", places for your code to be compiled
  325.      in before being installed;
  326.  
  327.    * it generates a `.gdbinit' in the build directory, if needed, to
  328.      communicate to `gdb' where to find the program's source code;
  329.  
  330.    * it generates a shell script called `config.status' which is used
  331.      most often by the `Makefile' to reconfigure itself;
  332.  
  333.    * it recurses in subdirectories, setting up entire trees so that
  334.      they build correctly; if `configure' finds another `configure'
  335.      script further down in a given source tree, it knows to use this
  336.      script and not recur.
  337.  
  338.    For the sake of safety (i.e., in order to prevent broken
  339. installations), the GNU coding standards call for software to be
  340. "configured" in such a way that an end user trying to build a given
  341. package will be able to do so by affecting a finite number of
  342. variables.  All GNU software comes with an executable `configure' shell
  343. script which sets up an environment within a build directory which will
  344. correctly compile your new package for your host (or, alternatively,
  345. whatever host you specify to `configure').  For further background on
  346. this topic, see *Note Apologia Configure: (cfg-paper)Some Basic Terms,
  347. by K. Richard Pixley.
  348.  
  349.    Use `configure' to set for the build process:
  350.  
  351.    * correct values for certain variables;
  352.  
  353.    * which type of host you wish to configure a given package for
  354.      (*note Host: Host.);
  355.  
  356.    * where you want to install this package (by using `prefix',
  357.      `exec-prefix' and `program-prefix'; *note Full descriptions of all
  358.      installation directories: Install details.);
  359.  
  360.    * optionally, which type of machine you wish to "target" this
  361.      package's output to (*note Target: Target.);
  362.  
  363.    * which other GNU packages are already installed and available to
  364.      this particular build (by using the `--with-PACKAGE' option; *note
  365.      Invoking `configure': Invoking configure.);
  366.  
  367.    * where to place temporary files (by using the `--tmpdir=DIR'
  368.      option; *note Invoking `configure': Invoking configure.);
  369.  
  370.    * whether to recur in subdirectories (changeable through the
  371.      `--norecursion' option; *note Invoking `configure': Invoking
  372.      configure.).
  373.  
  374.    `configure' uses a few other files to complete its tasks.  These are
  375. discussed in detail where noted.
  376.  
  377. `configure.in'
  378.      Input file for `configure'.  Shell script fragments reside here.
  379.      *Note The `configure.in' input file: configure.in.
  380.  
  381. `Makefile.in'
  382.      Template which `configure' uses to build a file called `Makefile'
  383.      in the "build directory".  *Note `Makefile' generation: Makefile
  384.      generation.
  385.  
  386. `config.sub'
  387.      Shell script used by `configure' to expand referents to the
  388.      HOSTTYPE argument into a single specification of the form
  389.      CPU-VENDOR-OS.  For instance, on the command line you can specify
  390.  
  391.           eg$ ./configure sun4
  392.  
  393.      to configure for a Sun SPARCstation running SunOS 4.x.  `configure'
  394.      consults `config.sub' to find that the three-part specification
  395.      for this is
  396.  
  397.           sparc-sun-sunos4.1.1
  398.  
  399.      which notes the CPU as `sparc', the MANUFACTURER as `sun' (Sun
  400.      Microsystems), and the OS (operating system) as `sunos4.1.1', the
  401.      SunOS 4.1.1 release.  *Note Variables available to `configure':
  402.      configure variables.
  403.  
  404. `config.guess'
  405.      If you do not put the HOSTTYPE argument on the command line,
  406.      `configure' uses the `config.guess' shell script to make an
  407.      analysis of your machine (it assumes that you wish to configure
  408.      your software for the type of machine on which you are running).
  409.      The output of `config.guess' is a three-part identifier as
  410.      described above.
  411.  
  412. `config.status'
  413.      The final step in configuring a directory is to create a shell
  414.      script, `config.status'.  The main purpose of this file is to
  415.      allow the `Makefile' for the current directory to rebuild itself,
  416.      if necessary.  *Note `config.status': config.status.
  417.  
  418. `config/*'
  419.      `configure' uses three types of `Makefile' "fragments", which
  420.      reside in the directory `SRCDIR/config/'.  *Note Adding
  421.      information about local conventions: Makefile fragments.
  422.  
  423. * Menu:
  424.  
  425. * Build variables::         Variable-spaghetti made simple
  426. * Build directories::       Build directories described well
  427. * Makefile generation::     To build a Makefile
  428. * config.guess::            Be vewwy quiet, I'm hunting system information
  429. * config.status::           To rebuild a Makefile
  430.  
  431. 
  432. File: configure.info,  Node: Build variables,  Next: Build directories,  Up: What configure really does
  433.  
  434. Build variables
  435. ---------------
  436.  
  437.    There are several variables in the build process which you can
  438. control through build programs such as `make'.  These include machine
  439. definitions, local conventions, installation locations, locations for
  440. temporary files, etc.  This data is accessible through certain
  441. variables which are configurable in the build process; we refer to them
  442. as "build variables".
  443.  
  444.    For lists of build variables which you can affect by using
  445. `configure', see *Note Variables available to `configure.in': configure
  446. variables, and *Note Full descriptions of all installation directories:
  447. Install details.
  448.  
  449.    Generally, build variables, which are used by the `Makefile' to
  450. determine various aspects of the build and installation processes, are
  451. changeable with command-line options to `configure'.  In most large
  452. suites of programs, like the Cygnus Support Developer's Kit, the
  453. individual programs reside in several subdirectories of a single source
  454. code "tree".  All of these subdirectories need to be configured with
  455. information relative to the "build directory", which is not known until
  456. `configure' is run.  Unless specified otherwise, `configure'
  457. recursively configures every subdirectory in the source tree.
  458.  
  459.    Build variables are passed from `configure' directly into the
  460. `Makefile', and use the same names (except that dashes are transformed
  461. into underbars; for example, when you specify the option
  462. `--exec-prefix' on the command line, the `Makefile' variable
  463. `exec_prefix' is set).  In other words, if you specify
  464.  
  465.      eg$ ./configure --prefix=/usr/gnu/local ... HOSTTYPE
  466.  
  467. on the command line, `configure' sets an variable called `prefix' to
  468. `/usr/gnu/local', and passes this into the `Makefile' in the same
  469. manner.  After this command, each `Makefile' generated by `configure'
  470. will contain a line that reads:
  471.  
  472.      prefix = /usr/gnu/local
  473.  
  474.    For a list of the `Makefile' variables `configure' can change, and
  475. instructions on how to change them, see *Note Variables available to
  476. `configure.in': configure variables, and *Note Invoking `configure':
  477. Invoking configure.
  478.  
  479. 
  480. File: configure.info,  Node: Build directories,  Next: Makefile generation,  Prev: Build variables,  Up: What configure really does
  481.  
  482. Build directories
  483. -----------------
  484.  
  485.    By default, `configure' builds a `Makefile' and symbolic links in the
  486. same directory as the source files.  This default works for many cases,
  487. but it has limitations.  For instance, using this approach, you can
  488. only build object code for one host at a time.
  489.  
  490.    We refer to each directory where `configure' builds a `Makefile' as
  491. a "build directory".
  492.  
  493.    The build directory for any given build is always the directory from
  494. which you call `configure', or `.' relative to your prompt.  The default
  495. "source directory", the place `configure' looks to find source code, is
  496. also `.'.  For instance, if we have a directory `/gnu-stuff/src/' that
  497. is the top branch of a tree of GNU source code we wish to configure,
  498. then the program we will use to configure this code is
  499. `/gnu-stuff/src/configure', as follows.  (Assume for the sake of
  500. argument that our machine is a sun4.)
  501.  
  502.      eg$ cd /gnu-stuff/src
  503.      eg$ ./configure sun4
  504.      Created "Makefile" in /gnu-stuff/src
  505.      eg$
  506.  
  507.    We just configured the code in `/gnu-stuff/src' to run on a Sun
  508. SPARCstation using SunOS 4.x by creating a `Makefile' in
  509. `/gnu-stuff/src'.  By default, we also specified that when this code is
  510. built, the object code should reside in the same directory,
  511. `/gnu-stuff/src'.
  512.  
  513.    However, if we wanted to build this code for more than one host, we
  514. would be in trouble, because the new configuration would write over the
  515. old one, destroying it in the process.  What we can do is to make a new
  516. "build directory" and configure from there.  Running `configure' from
  517. the new directory will place a correct `Makefile' and a `config.status'
  518. in this new file.  That is all `configure' does; we must run `make' to
  519. generate any object code.
  520.  
  521.    The new `Makefile' in `/gnu-stuff/sun4-obj', created from the
  522. template file `/gnu-stuff/src/Makefile.in', contains all the information
  523. needed to build the program.
  524.  
  525.      eg$ mkdir /gnu-stuff/sun4-obj
  526.      eg$ cd /gnu-stuff/sun4-obj
  527.      eg$ ../src/configure --srcdir=../src sun4
  528.      Created "Makefile" in /gnu-stuff/sun4-obj
  529.      eg$ ls
  530.      Makefile       config.status
  531.      eg$ make all info install install-info clean
  532.      COMPILATION MESSAGES...
  533.      eg$ mkdir /gnu-stuff/solaris2
  534.      eg$ cd /gnu-stuff/solaris2
  535.      eg$ ../src/configure --srcdir=../src sol2
  536.      Created "Makefile" in /gnu-stuff/solaris2
  537.      eg$ ls
  538.      Makefile       config.status
  539.      eg$ make all info install install-info clean
  540.      COMPILATION MESSAGES...
  541.  
  542.    We can repeat this for other configurations of the same software
  543. simply by making a new build directory and reconfiguring from inside
  544. it.  If you do not specify the HOSTTYPE argument, `configure' will
  545. attempt to figure out what kind of machine and operating system you
  546. happen to be using.  *Note Determining system information:
  547. config.guess.  Of course, this may not always be the configuration you
  548. wish to build.
  549.  
  550.    *Caution:* If you build more than one configuration for a single
  551. program, remember that you must also specify a different `--prefix' for
  552. each configuration at configure-time.  Otherwise, both configurations
  553. will be installed in the same default location (`/usr/local'); the
  554. configuration to be installed last would overwrite previously installed
  555. configurations.
  556.  
  557. 
  558. File: configure.info,  Node: Makefile generation,  Next: config.guess,  Prev: Build directories,  Up: What configure really does
  559.  
  560. `Makefile' generation
  561. ---------------------
  562.  
  563.    Cygnus `configure' creates a file called `Makefile' in the build
  564. directory which can be used with `make' to automatically build a given
  565. program or package.  `configure' also builds a `Makefile' for each
  566. relevant subdirectory for a given program or package (irrelevant
  567. subdirectories would be those which contain no code which needs
  568. configuring, and which therefore have no `configure' input file
  569. `configure.in' and no `Makefile' template `Makefile.in').  *Note `make'
  570. Invocation: (make)Running, for details on using `make' to compile your
  571. source code.
  572.  
  573.    Each `Makefile' contains variables which have been configured for a
  574. specific build.  These build variables are determined when `configure'
  575. is run.  All build variables have defaults.  By default, `configure'
  576. generates a `Makefile' which specifies:
  577.  
  578.    * a "native" build, which is to occur
  579.  
  580.    * in the current directory, and which will be installed
  581.  
  582.    * in the default installation directory (`/usr/local') when the code
  583.      is compiled with `make'.
  584.  
  585. Variables are changeable through command-line options to `configure'
  586. (*note Invoking `configure': Invoking configure.).
  587.  
  588.    If you are porting a new program and intend to use `configure', see
  589. *Note Porting with `configure': Porting, as well as *Note Writing
  590. Makefiles: (make)Makefiles, and *Note Makefile Conventions:
  591. (standards)Makefiles.
  592.  
  593. 
  594. File: configure.info,  Node: config.guess,  Next: config.status,  Prev: Makefile generation,  Up: What configure really does
  595.  
  596. Determining system information
  597. ------------------------------
  598.  
  599.    The shell script `config.guess' is called when you do not specify a
  600. HOSTTYPE on the command line to `configure'.  `config.guess' acquires
  601. available system information from your local machine through the shell
  602. command `uname'.  It compares this information to a database and
  603. attempts to determine a usable three-part system identifier (known as a
  604. "triple") to use as your HOSTTYPE.  *Note What `configure' really does:
  605. What configure really does, to see how this information is used.
  606.  
  607.    *Note:*  If you do not specify a HOSTTYPE on the command line,
  608. `configure' will attempt to configure your software to run on the
  609. machine you happen to be using.  This may not be the configuration you
  610. desire.
  611.  
  612. 
  613. File: configure.info,  Node: config.status,  Prev: config.guess,  Up: What configure really does
  614.  
  615. `config.status'
  616. ---------------
  617.  
  618.    The final step in configuring a directory is to create an executable
  619. shell script, `config.status'.  The main purpose of this file is to
  620. allow the `Makefile' for the current directory to rebuild itself, if
  621. necessary.  It is usually run from within the `Makefile'.  *Note
  622. Extensions to the GNU coding standards: Makefile extensions.
  623.  
  624.    `config.status' also contains a record of the `configure' session
  625. which created it.
  626.  
  627. 
  628. File: configure.info,  Node: configure.in,  Next: Install locations,  Prev: What configure really does,  Up: Using configure
  629.  
  630. The `configure.in' input file
  631. =============================
  632.  
  633.    A `configure.in' file for Cygnus `configure' consists of a
  634. "per-invocation" section, followed by a "per-host" section, followed by
  635. a "per-target" section, optionally followed by a "post-target" section.
  636. Each section is a shell script fragment, which is executed by the
  637. `configure' shell script at an appropriate time.  Values are passed
  638. among `configure' and the shell fragments through a set of shell
  639. variables.  When each section is being interpreted by the shell, the
  640. shell's current directory is the build directory, and any files created
  641. by the section (or referred to by the section) will be relative to the
  642. build directory.  To reference files in other places (such as the
  643. source directory), prepend a shell variable such as `$(srcdir)/' to the
  644. desired file name.
  645.  
  646.    The beginning of the `configure.in' file begins the "per-invocation"
  647. section.
  648.  
  649.    A line beginning with `# per-host:' begins the "per-host" section.
  650.  
  651.    A line beginning with `# per-target:' begins the "per-target"
  652. section.
  653.  
  654.    If it exists, the "post-target" section begins with `# post-target:'.
  655.  
  656. * Menu:
  657.  
  658. * configure variables::    Variables available to configure.in
  659. * Minimal::                A minimal configure.in
  660. * Declarations::           For each invocation
  661. * per-host::               Host-specific instructions
  662. * per-target::             Target-specific instructions
  663. * post-target::            Instructions to be executed after target info
  664. * Example::                An example configure.in
  665.  
  666. 
  667. File: configure.info,  Node: configure variables,  Next: Minimal,  Up: configure.in
  668.  
  669. Variables available to `configure.in'
  670. -------------------------------------
  671.  
  672.    The following variables pass information between the standard parts
  673. of `configure' and the shell-script fragments in `configure.in':
  674.  
  675. `srctrigger'
  676.      Contains the name of a source file that is expected to live in the
  677.      source directory.  You must usually set this in the
  678.      "per-invocation" section of `configure.in'.  `configure' tests to
  679.      see that this file exists.  If the file does not exist,
  680.      `configure' prints an error message.  This is used as a sanity
  681.      check that `configure.in' matches the source directory.
  682.  
  683. `srcname'
  684.      Contains the name of the source collection contained in the source
  685.      directory.  You must usually set this in the "per-invocation"
  686.      section of `configure.in'.  If the file named in `srctrigger' does
  687.      not exist, `configure' uses the value of `srcname' when it prints
  688.      the error message.
  689.  
  690. `configdirs'
  691.      Contains the names of any subdirectories in which `configure'
  692.      should recurse.  You must usually set this in the "per-invocation"
  693.      section of `configure.in'.  If `Makefile.in' contains a line
  694.      starting with `SUBDIRS =', then it will be replaced with an
  695.      assignment to `SUBDIRS' using the value of `configdirs' (if
  696.      `subdirs' is empty).  This can be used to determine which
  697.      directories to configure and build depending on the host and
  698.      target configurations.  Use `configdirs' (instead of the `subdirs'
  699.      variable described below) if you want to be able to partition the
  700.      subdirectories, or use independent `Makefile' fragments.  Each
  701.      subdirectory can be independent, and independently reconfigured.
  702.  
  703. `subdirs'
  704.      Contains the names of any subdirectories where `configure' should
  705.      create a `Makefile' (in addition to the current directory),
  706.      *without* recursively running `configure'.  Use `subdirs' (instead
  707.      of the `configdirs' variable described above) if you want to
  708.      configure all of the directories as a unit.  Since there is a
  709.      single invocation of `configure' that configures many directories,
  710.      all the directories can use the same `Makefile' fragments, and the
  711.      same `configure.in'.
  712.  
  713. `host'
  714.      Contains the full configuration name for the host (generated by
  715.      the script `config.sub' from the name that you entered).  This is
  716.      a three-part name (commonly referred to as a "triple") of the form
  717.      CPU-VENDOR-OS.
  718.  
  719.      There are separate variables `host_cpu', `host_vendor', and
  720.      `host_os' that you can use to test each of the three parts; this
  721.      variable is useful, however, for error messages, and for testing
  722.      combinations of the three components.
  723.  
  724. `host_cpu'
  725.      Contains the first element of the canonical triple representing
  726.      the host as returned by `config.sub'.  This is occasionally used to
  727.      distinguish between minor variations of a particular vendor's
  728.      operating system and sometimes to determine variations in binary
  729.      format between the host and the target.
  730.  
  731. `host_vendor'
  732.      Contains the second element of the canonical triple representing
  733.      the host as returned by `config.sub'.  This is usually used to
  734.      distinguish among the numerous variations of *common* operating
  735.      systems.
  736.  
  737. `host_os'
  738.      Contains the the third element of the canonical triple
  739.      representing the host as returned by `config.sub'.
  740.  
  741. `target'
  742.      Contains the full configuration name (generated by the script
  743.      `config.sub' from the name that you entered) for the target.  Like
  744.      the host, this is a three-part name of the form CPU-VENDOR-OS.
  745.  
  746.      There are separate variables `target_cpu', `target_vendor', and
  747.      `target_os' that you can use to test each of the three parts; this
  748.      variable is useful, however, for error messages, and for testing
  749.      combinations of the three components.
  750.  
  751. `target_cpu'
  752.      Contains the first element of the canonical triple representing
  753.      the target as returned by `config.sub'.  This variable is used
  754.      heavily by programs which are involved in building other programs,
  755.      like the compiler, assembler, linker, etc.  Most programs will not
  756.      need the `target' variables at all, but this one could conceivably
  757.      be used to build a program, for instance, that operated on binary
  758.      data files whose byte order or alignment differ from the system
  759.      where the program is running.
  760.  
  761. `target_vendor'
  762.      Contains the second element of the canonical triple representing
  763.      the target as returned by `config.sub'.  This is usually used to
  764.      distinguish among the numerous variations of *common* operating
  765.      systems or object file formats.  It is sometimes used to switch
  766.      between different flavors of user interfaces.
  767.  
  768. `target_os'
  769.      Contains the the third element of the canonical triple
  770.      representing the target as returned by `config.sub'.  This
  771.      variable is used by development tools to distinguish between
  772.      subtle variations in object file formats that some vendors use
  773.      across operating system releases.  It might also be use to decide
  774.      which libraries to build or what user interface the tool should
  775.      provide.
  776.  
  777. `floating_point'
  778.      Set to `no' if you invoked `configure' with the `--nfp'
  779.      command-line option, otherwise it is empty.  This is a request to
  780.      target machines with "no floating point" unit, even if the targets
  781.      ordinarily have floating point units available.
  782.  
  783. `gas'
  784.      Set to `true' if you invoked `configure' with the `--with-gnu-as'
  785.      command line option, otherwise it is empty.  This is a request to
  786.      assume that the specified HOSTTYPE machine has GNU `as' available
  787.      even if it ordinarily does not.
  788.  
  789. `srcdir'
  790.      Set to the name of the directory containing the source for this
  791.      program.  This will be different from `.' if you have specified the
  792.      `--srcdir=DIR' option.  `srcdir' can indicate either an absolute
  793.      path or a path relative to the build directory.
  794.  
  795. `package_makefile_frag'
  796.      If set in `configure.in', this variable should be the name a file
  797.      relative to `srcdir' to be included in the resulting `Makefile'.
  798.      If the named file does not exist, `configure' will print a warning
  799.      message.  This variable is not set by `configure'.
  800.  
  801. `host_makefile_frag'
  802.      If set in `configure.in', this variable should be the name a file
  803.      relative to `srcdir' to be included in the resulting `Makefile'.
  804.      If the named file does not exist, `configure' will print a warning
  805.      message.  This variable is not set by `configure'.
  806.  
  807. `target_makefile_frag'
  808.      If set in `configure.in', this variable should be the name of a
  809.      file, relative to `srcdir', to be included in the resulting
  810.      `Makefile'.  If the named file does not exist, `configure' will
  811.      print a warning message.  This variable is not set by `configure'.
  812.  
  813. `site_makefile_frag'
  814.      Set to a file name representing to the default `Makefile' fragment
  815.      for this host.  It may be set in `configure.in' to override this
  816.      default.  Normally `site_makefile_frag' is empty, but will have a
  817.      value if you specify `--site=SITE' on the command line.
  818.  
  819. `Makefile'
  820.      Set to the name of the generated `Makefile'.  Normally this value
  821.      is precisely `Makefile', but some programs may want something else.
  822.  
  823. `removing'
  824.      Normally empty but will be set to some non-null value if you
  825.      specified `--rm' on the command line.  That is, if `removing' is
  826.      not empty, then `configure' is *removing* a configuration rather
  827.      than creating one.
  828.  
  829. `files'
  830.      If this variable is not empty following the "per-target" section,
  831.      then each word in its value will be the target of a symbolic link
  832.      named in the corresponding word from the `links' variable.
  833.  
  834. `links'
  835.      If the `files' variable is not empty following the "per-target"
  836.      section, then `configure' creates symbolic links with the first
  837.      word of `links' pointing to the first word of `files', the second
  838.      word of `links' pointing to the second word of `files', and so on.
  839.  
  840. 
  841. File: configure.info,  Node: Minimal,  Next: Declarations,  Prev: configure variables,  Up: configure.in
  842.  
  843. A minimal `configure.in'
  844. ------------------------
  845.  
  846.    A minimal `configure.in' consists of four lines.
  847.  
  848.      srctrigger=foo.c
  849.      srcname="source for the foo program"
  850.      # per-host:
  851.      # per-target:
  852.  
  853.    The `# per-host:' and `# per-target:' lines divide the file into the
  854. three required sections.  The `srctrigger' line names a file.
  855. `configure' checks to see that this file exists in the source directory
  856. before configuring.  If the `srctrigger' file does not exist,
  857. `configure' uses the value of `srcname' to print an error message about
  858. not finding the source.
  859.  
  860.    This particular example uses no links, and only the default host,
  861. target, and site-specific `Makefile' fragments if they exist.
  862.  
  863. 
  864. File: configure.info,  Node: Declarations,  Next: per-host,  Prev: Minimal,  Up: configure.in
  865.  
  866. For each invocation
  867. -------------------
  868.  
  869.    `configure' invokes the entire shell script fragment from the start
  870. of `configure.in' up to a line beginning with `# per-host:' immediately
  871. after parsing command line arguments.  The variables `srctrigger' and
  872. `srcname' *must* be set here.
  873.  
  874.    You might also want to set the variables `configdirs' and
  875. `package_makefile_frag' here.
  876.  
  877. 
  878. File: configure.info,  Node: per-host,  Next: per-target,  Prev: Declarations,  Up: configure.in
  879.  
  880. Host-specific instructions
  881. --------------------------
  882.  
  883.    The "per-host" section of `configure.in' starts with the line that
  884. begins with `# per-host:' and ends before a line beginning with
  885. `# per-target:'.  `configure' invokes the commands in the "per-host"
  886. section when determining host-specific information.
  887.  
  888.    This section usually contains a big `case' statement using the
  889. variable `host' to determine appropriate values for
  890. `host_makefile_frag' and `files', although `files' is not usually set
  891. here.  Usually, it is set at the end of the "per-target" section after
  892. determining the names of the target specific configuration files.
  893.  
  894. 
  895. File: configure.info,  Node: per-target,  Next: post-target,  Prev: per-host,  Up: configure.in
  896.  
  897. Target-specific instructions
  898. ----------------------------
  899.  
  900.    The "per-target" section of `configure.in' starts with the line that
  901. begins with `# per-target:' and ends before the line that begins with
  902. `# post-target:', if there is such a line.  Otherwise the "per-target"
  903. section extends to the end of the file.  `configure' invokes the
  904. commands in the "per-target" section when determining target-specific
  905. information, and before building any files, directories, or links.
  906.  
  907.    This section usually contains a big `case' statement using the
  908. variable `target' to determine appropriate values for
  909. `target_makefile_frag' and `files'.  The last lines in the "per-target"
  910. section normally set the variables `files' and `links'.
  911.  
  912. 
  913. File: configure.info,  Node: post-target,  Next: Example,  Prev: per-target,  Up: configure.in
  914.  
  915. Instructions to be executed after target info
  916. ---------------------------------------------
  917.  
  918.    The "post-target" section is optional.  If it exists, the
  919. `post-target' section starts with a line beginning with
  920. `# Post-target:' and extends to the end of the file.  If it exists,
  921. `configure' invokes this section once for each target after building
  922. all files, directories, or links.
  923.  
  924.    This section is seldom needed, but you can use it to edit the
  925. `Makefile' generated by `configure'.
  926.  
  927. 
  928. File: configure.info,  Node: Example,  Prev: post-target,  Up: configure.in
  929.  
  930. An example `configure.in'
  931. -------------------------
  932.  
  933.    Here is a small example of a `configure.in' file.
  934.  
  935.      # This file is a collection of shell script fragments
  936.      # used to tailor a template configure script as
  937.      # appropriate for this directory.  For more information,
  938.      # see configure.texi.
  939.      
  940.      configdirs=
  941.      srctrigger=warshall.c
  942.      srcname="bison"
  943.      
  944.      # per-host:
  945.      case "${host}" in
  946.      m88k-motorola-*)
  947.              host_makefile_frag=config/mh-delta88
  948.              ;;
  949.      esac
  950.      
  951.      # per-target:
  952.      files="bison_in.hairy"
  953.      links="bison.hairy"
  954.      
  955.      # post-target:
  956.  
  957. 
  958. File: configure.info,  Node: Install locations,  Next: Host,  Prev: configure.in,  Up: Using configure
  959.  
  960. Install locations
  961. =================
  962.  
  963.    Using the default configuration, `make install' creates a single
  964. tree of files, some of which are programs.  The location of this tree
  965. is determined by the value of the variable `prefix'.  The default value
  966. of `prefix' is `/usr/local'.  This is often correct for native tools
  967. installed on only one host.
  968.  
  969. * Menu:
  970.  
  971. * prefix::            Changing the default install directory
  972. * exec_prefix::       How to separate host independent files
  973.                                          from host dependent files when
  974.                                          installing for multiple hosts
  975. * Install details::   Full descriptions of all installation subdirectories
  976.  
  977. 
  978. File: configure.info,  Node: prefix,  Next: exec_prefix,  Up: Install locations
  979.  
  980. Changing the default install directory
  981. --------------------------------------
  982.  
  983.    In the default configuration, all files are installed in
  984. subdirectories of `/usr/local'.  The location is determined by the
  985. value of the `configure' variable `prefix'; in turn, this determines the
  986. value of the `Makefile' variable of the same name (`prefix').
  987.  
  988.    You can also set the value of the `Makefile' variable `prefix'
  989. explicitly each time you invoke `make' if you are so inclined.  However,
  990. because many programs have this location compiled in, you must specify
  991. the `prefix' value consistently on each invocation of `make', or you
  992. will end up with a broken installation.
  993.  
  994.    To make this easier, the value of the `configure' variable `prefix'
  995. can be set on the command line to `configure' using the option
  996. `--prefix='.
  997.  
  998. 
  999. File: configure.info,  Node: exec_prefix,  Next: Install details,  Prev: prefix,  Up: Install locations
  1000.  
  1001. Installing for multiple hosts
  1002. -----------------------------
  1003.  
  1004.    By default, host dependent files are installed in subdirectories of
  1005. `$(exec_prefix)'.  The location is determined by the value of the
  1006. `configure' variable `exec_prefix', which determines the value of the
  1007. `Makefile' variable `exec_prefix'.  This makes it easier to install for
  1008. a single host, and simplifies changing the default location for the
  1009. install tree.  The default doesn't allow for multiple hosts to
  1010. effectively share host independent files, however.
  1011.  
  1012.    To configure so that multiple hosts can share common files, use
  1013. something like:
  1014.  
  1015.      configure HOST1 -prefix=/usr/gnu -exec_prefix=/usr/gnu/H-host1
  1016.      make all info install install-info clean
  1017.      
  1018.      configure HOST2 -prefix=/usr/gnu -exec_prefix=/usr/gnu/H-host2
  1019.      make all info install install-info
  1020.  
  1021.    The first line configures the source for HOST1 to place host-specific
  1022. programs in subdirectories of `/usr/gnu/H-HOST1'.
  1023.  
  1024.    The second line builds and installs all programs for HOST1,
  1025. including both host-independent and host-specific files, as well as
  1026. removing the host-specific object files from of the build directory.
  1027.  
  1028.    The third line reconfigures the source for HOST2 to place host
  1029. specific programs in subdirectories of `/usr/gnu/H-HOST2'.
  1030.  
  1031.    The fourth line builds and installs all programs for HOST2.  Host
  1032. specific files are installed in new directories, but the host
  1033. independent files are installed *on top of* the host independent files
  1034. installed for HOST1.  This results in a single copy of the host
  1035. independent files, suitable for use by both hosts.
  1036.  
  1037.    *Note Extensions to the GNU coding standards: Makefile extensions,
  1038. for more information.
  1039.  
  1040. 
  1041. File: configure.info,  Node: Install details,  Prev: exec_prefix,  Up: Install locations
  1042.  
  1043. Full descriptions of all installation subdirectories
  1044. ----------------------------------------------------
  1045.  
  1046.    During any install, a number of standard directories are created.
  1047. Their names are determined by `Makefile' variables.  Some of the
  1048. defaults for `Makefile' variables can be changed at configuration time
  1049. using command line options to `configure'.  For more information on the
  1050. standard directories or the `Makefile' variables, please refer to *Note
  1051. Makefile Conventions: (standards)Makefiles.  See also *Note Extensions
  1052. to the GNU coding standards: Makefile extensions.
  1053.  
  1054.    Note that `configure' does not create the directory indicated by the
  1055. variable `srcdir' at any time.  `$(srcdir)' is not an installation
  1056. directory.
  1057.  
  1058.    You can override all `Makefile' variables on the command line to
  1059. `make'.  (*Note Overriding Variables: (make)Overriding.)  If you do so,
  1060. you will need to specify the value precisely the same way for each
  1061. invocation of `make', or you risk ending up with a broken installation.
  1062. This is because many programs have the locations of other programs or
  1063. files compiled into them.  If you find yourself overriding any of the
  1064. variables frequently, you should consider site dependent `Makefile'
  1065. fragments.  See also *Note Adding site info: Sites.
  1066.  
  1067.    During `make install', a number of standard directories are created
  1068. and populated.  The following `Makefile' variables define them.  Those
  1069. whose defaults are set by corresponding `configure' variables are marked
  1070. "`Makefile' and `configure'".
  1071.  
  1072. `prefix (`Makefile' and `configure')'
  1073.      The root of the installation tree.  You can set its `Makefile'
  1074.      default with the `--prefix=' command line option to `configure'
  1075.      (*note Invoking `configure': Invoking configure.).  The default
  1076.      value for `prefix' is `/usr/local'.
  1077.  
  1078. `bindir'
  1079.      A directory for binary programs that users can run.  The default
  1080.      value for `bindir' depends on `prefix'; `bindir' is normally
  1081.      changed only indirectly through `prefix'.  The default value for
  1082.      `bindir' is `$(prefix)/bin'.
  1083.  
  1084. `exec_prefix (`Makefile' and `configure')'
  1085.      A directory for host dependent files.  You can specify the
  1086.      `Makefile' default value by using the `--exec_prefix=' option to
  1087.      `configure'.  (*Note Invoking `configure': Invoking configure.)
  1088.      The default value for `exec_prefix' is `$(prefix)'.
  1089.  
  1090. `libdir'
  1091.      A directory for libraries and support programs.  The default value
  1092.      for `libdir' depends on `prefix'; `libdir' is normally changed only
  1093.      indirectly through `prefix'.  The default value for `libdir' is
  1094.      `$(prefix)/lib'.
  1095.  
  1096. `mandir'
  1097.      A directory for `man' format documentation ("man pages").  The
  1098.      default value for `mandir' depends on `prefix'; `mandir' is
  1099.      normally changed only indirectly through `prefix'.  The default
  1100.      value for `mandir' is `$(prefix)/man'.
  1101.  
  1102. `manNdir'
  1103.      These are eight variables named `man1dir', `man2dir', etc.  They
  1104.      name the specific directories for each man page section.  For
  1105.      example, `man1dir' by default holds the filename `$(mandir)/man1';
  1106.      this directory contains `emacs.1' (the man page for GNU Emacs).
  1107.      Similarly, `man5dir' contains the value `$(mandir)/man5',
  1108.      indicating the directory which holds `rcsfile.5' (the man page
  1109.      describing the `rcs' data file format).  The default value for any
  1110.      of the `manNdir' variables depends indirectly on `prefix', and is
  1111.      normally changed only through `prefix'.  The default value for
  1112.      `manNdir' is `$(mandir)/manN'.
  1113.  
  1114. `manNext'
  1115.      *Not supported by Cygnus `configure'*.  The `GNU Coding Standards'
  1116.      do not call for `man1ext', `man2ext', so the intended use for
  1117.      `manext' is apparently not parallel to `mandir'.  Its use is not
  1118.      clear.  (See also *Note Extensions to the GNU coding standards:
  1119.      Makefile extensions.)
  1120.  
  1121. `infodir'
  1122.      A directory for `info' format documentation.  The default value for
  1123.      `infodir' depends indirectly on `prefix'; `infodir' is normally
  1124.      changed only through `prefix'.  The default value for `infodir' is
  1125.      `$(prefix)/info'.
  1126.  
  1127. `docdir'
  1128.      A directory for any documentation that is in a format other than
  1129.      those used by `info' or `man'.  The default value for `docdir'
  1130.      depends indirectly on `prefix'; `docdir' is normally changed only
  1131.      through `prefix'.  The default value for `docdir' is
  1132.      `$(datadir)/doc'.  *This variable is an extension to the GNU
  1133.      coding standards*.  (See also *Note Extensions to the GNU coding
  1134.      standards: Makefile extensions.)
  1135.  
  1136. `includedir'
  1137.      A directory for the header files accompanying the libraries
  1138.      installed in `libdir'.  The default value for `includedir' depends
  1139.      on `prefix'; `includedir' is normally changed only indirectly
  1140.      through `prefix'.  The default value for `includedir' is
  1141.      `$(prefix)/include'.
  1142.  
  1143. 
  1144. File: configure.info,  Node: Host,  Next: Target,  Prev: Install locations,  Up: Using configure
  1145.  
  1146. Host
  1147. ====
  1148.  
  1149.    The arguments to `configure' are "hosttypes".  By "hosttype" we mean
  1150. the "environment" in which the source will be compiled.  This need not
  1151. necessarily be the same as the physical machine involved, although it
  1152. usually is.
  1153.  
  1154.    For example, if some obscure machine had the GNU `POSIX' emulation
  1155. libraries available, it would be possible to configure most GNU source
  1156. for a `POSIX' system and build it on the obscure host.
  1157.  
  1158.    For more on this topic, see *Note On Configuring Development Tools:
  1159. (cfg-paper)Host Environments.
  1160.  
  1161. 
  1162. File: configure.info,  Node: Target,  Next: Makefile fragments,  Prev: Host,  Up: Using configure
  1163.  
  1164. Target
  1165. ======
  1166.  
  1167.    For building native development tools, or most of the other GNU
  1168. tools, you need not worry about the target.  The "target" of a
  1169. configuration defaults to the same as the "host".
  1170.  
  1171.    For building cross development tools, please see *Note On
  1172. Configuring Development Tools: (cfg-paper)Building Development
  1173. Environments.
  1174.  
  1175.