<html>
<head>
<title>Configuring egcs</title>
</head>
<body bgcolor="white">
<h1 align="center">Configuring egcs</h1>

<p>Like most GNU software, egcs must be configured before it can be built.
This document attempts to describe the recommended configuration procedure
for both native and cross targets.

<p>We use <i>srcdir</i> to refer to the toplevel source directory for
egcs; we use <i>objdir</i> to refer to the toplevel build/object
directory for egcs.

<p>First, we <b>highly</b> recommend that egcs be built into a
separate directory than the sources which does <b>not</b> reside
within the source tree.  This is how we generally build egcs; building
where <i>srcdir</i> == <i>objdir</i> should still work, but doesn't
get extensive testing; building where <i>objdir</i> is a subdirectory
of <i>srcdir</i> is unsupported.

<p>Second, when configuring a native system, either "cc" must be in your
path or you must set CC in your environment before running configure.
Otherwise the configuration scripts may fail.

<p>To configure egcs:

<blockquote>
<tt>
  <br>% mkdir <i>objdir</i>
  <br>% cd <i>objdir</i>
  <br>% <i>srcdir</i>/configure <b>[target]</b> <b>[options]</b>
</tt>
</blockquote>


<p><b>target specification</b>
<ul>
  <li> egcs has code to correctly determine the correct value for
  <b>target</b> for nearly all native systems.  Therefore, we highly
  recommend you not provide a configure target when configuring a
  native compiler.

  <li> <b>target</b> must be specified when configuring a cross compiler;
  examples of valid targets would be i960-rtems, m68k-coff, sh-elf, etc.
</ul>


<p><b> options specification</b>

<p>Use <b>options</b> to override several configure time options for
egcs.  A partial list of supported <tt>options</tt>:

<ul>
  <li> <tt>--prefix=</tt><i>dirname</i> -- Specify the toplevel installation
  directory.  This is the recommended way to install the tools into a directory
  other than the default.  The toplevel installation directory defaults to
  /usr/local.

  <br>These additional options control where certain parts of the distribution
  are installed.  Normally you should not need to use these options.
  <ul>
     <li> <tt>--with-local-prefix=</tt><i>dirname</i> -- Specify the installation
     directory for local include files.  The default is /usr/local.

     <li> <tt>--with-gxx-include-dir=</tt><i>dirname</i> -- Specify the installation
     directory for g++ header files.  The default is /usr/local/include/g++.
  </ul>

  <li> <tt>--enable-shared</tt> -- Build shared versions of the C++ runtime
  libraries if supported <tt>--disable-shared</tt> is the default.

  <li> <tt>--enable-haifa</tt> -- Enable the new Haifa instruction scheduler
  in the compiler; the new scheduler can significantly improve code on some
  targets.
  <br>For egcs-1.0.x releases <tt>--disable-haifa</tt> is the default on all
  platforms except the HPPA.
  <br>For newer releases <tt>--disable-haifa</tt> is the default on all
  platforms except the alpha, hppa, powerpc, rs6000, sparc and m32r.

  <li> <tt>--with-gnu-as</tt> -- Specify that the compiler should assume the GNU
  assembler (aka gas) is available. 

  <li> <tt>--with-gnu-ld</tt> -- Specify that the compiler should assume the GNU
  linker (aka gld) is available. 

  <li> <tt>--with-stabs</tt> -- Specify that stabs debugging information should be used
  instead of whatever format the host normally uses.  Normally GCC uses the
  same debug format as the host system. 

  <li> <tt>--enable-multilib</tt> -- Specify that multiple target libraries
  should be built to support different target variants, calling conventions,
  etc.  This is the default. 

  <li> <tt>--enable-threads</tt> -- Specify that the target supports threads.
  This only effects the Objective-C compiler and runtime library.

  <li> <tt>--enable-threads=</tt><i>lib</i> -- Specify that <i>lib</i> is the
  thread support library.  This only effects the Objective-C compiler  and
  runtime library.

  <li> <tt>--with-cpu=</tt><i>cpu</i> -- Specify which cpu variant the compiler should
  generate code for by default.  This is currently only supported on the
  RS6000/PowerPC ports.
</ul>

<p>Some options which only apply to building cross compilers:
<ul>
  <li> <tt>--with-headers=</tt><i>dir</i> -- Specifies a directory which has target
  include files.
  <li> <tt>--with-libs=</tt><i>dirs</i> -- Specifies a list of directories which contain
  the target runtime libraries.
  <li> <tt>--with-newlib</tt> -- Specifies that "newlib" is being used as the target
  C library.   This causes __eprintf to be omitted from libgcc.a on the
  assumption that it will be provided by newlib.
</ul>
 
<p>Note that each <tt>--enable</tt> option has a corresponding <tt>--disable</tt> option and
that each <tt>--with</tt> option has a corresponding <tt>--without</tt> option.


<p>
<hr>
<i>Last modified on May  7, 1998.</i>

</body>
</html>
