xref: /openbsd/gnu/usr.bin/gcc/INSTALL/configure.html (revision 7b36286a)
1   <html lang="en">
2<head>
3<title>Installing GCC: Configuration</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Installing GCC: Configuration">
6<meta name="generator" content="makeinfo 4.5">
7<link href="http://www.gnu.org/software/texinfo/" rel="generator-home">
8<!--
9Copyright &copy; 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
101999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
11<br><p>
12   <p>Permission is granted to copy, distribute and/or modify this document
13under the terms of the GNU Free Documentation License, Version 1.2 or
14any later version published by the Free Software Foundation; with no
15Invariant Sections, the Front-Cover texts being (a) (see below), and
16with the Back-Cover Texts being (b) (see below).  A copy of the
17license is included in the section entitled "<a href="./gfdl.html">GNU Free Documentation License</a>".
18
19   <p>(a) The FSF's Front-Cover Text is:
20
21   <p>A GNU Manual
22
23   <p>(b) The FSF's Back-Cover Text is:
24
25   <p>You have freedom to copy and modify this GNU Manual, like GNU
26     software.  Copies published by the Free Software Foundation raise
27     funds for GNU development.-->
28</head>
29<body>
30<h1 class="settitle">Installing GCC: Configuration</h1>
31Like most GNU software, GCC must be configured before it can be built.
32This document describes the recommended configuration procedure
33for both native and cross targets.
34
35   <p>We use <var>srcdir</var> to refer to the toplevel source directory for
36GCC; we use <var>objdir</var> to refer to the toplevel build/object directory.
37
38   <p>If you obtained the sources via CVS, <var>srcdir</var> must refer to the top
39<code>gcc</code> directory, the one where the <code>MAINTAINERS</code> can be found,
40and not its <code>gcc</code> subdirectory, otherwise the build will fail.
41
42   <p>If either <var>srcdir</var> or <var>objdir</var> is located on an automounted NFS
43file system, the shell's built-in <code>pwd</code> command will return
44temporary pathnames.  Using these can lead to various sorts of build
45problems.  To avoid this issue, set the <code>PWDCMD</code> environment
46variable to an automounter-aware <code>pwd</code> command, e.g.,
47<code>pawd</code> or <code>amq -w</code>, during the configuration and build
48phases.
49
50   <p>First, we <strong>highly</strong> recommend that GCC be built into a
51separate directory than the sources which does <strong>not</strong> reside
52within the source tree.  This is how we generally build GCC; building
53where <var>srcdir</var> == <var>objdir</var> should still work, but doesn't
54get extensive testing; building where <var>objdir</var> is a subdirectory
55of <var>srcdir</var> is unsupported.
56
57   <p>If you have previously built GCC in the same directory for a
58different target machine, do <code>make distclean</code> to delete all files
59that might be invalid.  One of the files this deletes is <code>Makefile</code>;
60if <code>make distclean</code> complains that <code>Makefile</code> does not exist
61or issues a message like "don't know how to make distclean" it probably
62means that the directory is already suitably clean.  However, with the
63recommended method of building in a separate <var>objdir</var>, you should
64simply use a different <var>objdir</var> for each target.
65
66   <p>Second, when configuring a native system, either <code>cc</code> or
67<code>gcc</code> must be in your path or you must set <code>CC</code> in
68your environment before running configure.  Otherwise the configuration
69scripts may fail.
70
71   <p>Note that the bootstrap compiler and the resulting GCC must be link
72compatible, else the bootstrap will fail with linker errors about
73incompatible object file formats.  Several multilibed targets are
74affected by this requirement, see
75<a href="specific.html">host/target specific installation notes</a>.
76
77   <p>To configure GCC:
78
79<pre class="example">        % mkdir <var>objdir</var>
80        % cd <var>objdir</var>
81        % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
82     </pre>
83
84<h3 class="heading"><a name="TOC0"></a>Target specification</h3>
85
86     <ul>
87<li>GCC has code to correctly determine the correct value for <var>target</var>
88for nearly all native systems.  Therefore, we highly recommend you not
89provide a configure target when configuring a native compiler.
90
91     <li><var>target</var> must be specified as <code>--target=</code><var>target</var><code></code>
92when configuring a cross compiler; examples of valid targets would be
93i960-rtems, m68k-coff, sh-elf, etc.
94
95     <li>Specifying just <var>target</var> instead of <code>--target=</code><var>target</var><code></code>
96implies that the host defaults to <var>target</var>.
97</ul>
98
99<h3 class="heading"><a name="TOC1"></a>Options specification</h3>
100
101   <p>Use <var>options</var> to override several configure time options for
102GCC.  A list of supported <var>options</var> follows; <code>configure
103--help</code> may list other options, but those not listed below may not
104work and should not normally be used.
105
106     <dl>
107<dt><code>--prefix=</code><var>dirname</var><code></code>
108     <dd>Specify the toplevel installation
109directory.  This is the recommended way to install the tools into a directory
110other than the default.  The toplevel installation directory defaults to
111<code>/usr/local</code>.
112
113     <p>We <strong>highly</strong> recommend against <var>dirname</var> being the same or a
114subdirectory of <var>objdir</var> or vice versa.  If specifying a directory
115beneath a user's home directory tree, some shells will not expand
116<var>dirname</var> correctly if it contains the <code>~</code> metacharacter; use
117<code>$HOME</code> instead.
118
119     <p>These additional options control where certain parts of the distribution
120are installed.  Normally you should not need to use these options.
121          <dl>
122<dt><code>--exec-prefix=</code><var>dirname</var><code></code>
123          <dd>Specify the toplevel installation directory for architecture-dependent
124files.  The default is <code></code><var>prefix</var><code></code>.
125
126          <br><dt><code>--bindir=</code><var>dirname</var><code></code>
127          <dd>Specify the installation directory for the executables called by users
128(such as <code>gcc</code> and <code>g++</code>).  The default is
129<code></code><var>exec-prefix</var><code>/bin</code>.
130
131          <br><dt><code>--libdir=</code><var>dirname</var><code></code>
132          <dd>Specify the installation directory for object code libraries and
133internal parts of GCC.  The default is <code></code><var>exec-prefix</var><code>/lib</code>.
134
135          <br><dt><code>--with-slibdir=</code><var>dirname</var><code></code>
136          <dd>Specify the installation directory for the shared libgcc library.  The
137default is <code></code><var>libdir</var><code></code>.
138
139          <br><dt><code>--infodir=</code><var>dirname</var><code></code>
140          <dd>Specify the installation directory for documentation in info format.
141The default is <code></code><var>prefix</var><code>/info</code>.
142
143          <br><dt><code>--datadir=</code><var>dirname</var><code></code>
144          <dd>Specify the installation directory for some architecture-independent
145data files referenced by GCC.  The default is <code></code><var>prefix</var><code>/share</code>.
146
147          <br><dt><code>--mandir=</code><var>dirname</var><code></code>
148          <dd>Specify the installation directory for manual pages.  The default is
149<code></code><var>prefix</var><code>/man</code>.  (Note that the manual pages are only extracts from
150the full GCC manuals, which are provided in Texinfo format.  The manpages
151are derived by an automatic conversion process from parts of the full
152manual.)
153
154          <br><dt><code>--with-gxx-include-dir=</code><var>dirname</var><code></code>
155          <dd>Specify
156the installation directory for G++ header files.  The default is
157<code></code><var>prefix</var><code>/include/g++-v3</code>.
158
159     </dl>
160
161     <br><dt><code>--program-prefix=</code><var>prefix</var><code></code>
162     <dd>GCC supports some transformations of the names of its programs when
163installing them. This option prepends <var>prefix</var> to the names of
164programs to install in <var>bindir</var> (see above). For example, specifying
165<code>--program-prefix=foo-</code> would result in <code>gcc</code>
166being installed as <code>/usr/local/bin/foo-gcc</code>.
167
168     <br><dt><code>--program-suffix=</code><var>suffix</var><code></code>
169     <dd>Appends <var>suffix</var> to the names of programs to install in <var>bindir</var>
170(see above). For example, specifying <code>--program-suffix=-3.1</code>
171would result in <code>gcc</code> being installed as
172<code>/usr/local/bin/gcc-3.1</code>.
173
174     <br><dt><code>--program-transform-name=</code><var>pattern</var><code></code>
175     <dd>Applies the <code>sed</code> script <var>pattern</var> to be applied to the names
176of programs to install in <var>bindir</var> (see above). <var>pattern</var> has to
177consist of one or more basic <code>sed</code> editing commands, separated by
178semicolons. For example, if you want the <code>gcc</code> program name to be
179transformed to the installed program <code>/usr/local/bin/myowngcc</code> and
180the <code>g++</code> program name to be transformed to
181<code>/usr/local/bin/gspecial++</code> without changing other program names,
182you could use the pattern
183<code>--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'</code>
184to achieve this effect.
185
186     <p>All three options can be combined and used together, resulting in more
187complex conversion patterns. As a basic rule, <var>prefix</var> (and
188<var>suffix</var>) are prepended (appended) before further transformations
189can happen with a special transformation script <var>pattern</var>.
190
191     <p>As currently implemented, this option only takes effect for native
192builds; cross compiler binaries' names are not transformed even when a
193transformation is explicitly asked for by one of these options.
194
195     <p>For native builds, some of the installed programs are also installed
196with the target alias in front of their name, as in
197<code>i686-pc-linux-gnu-gcc</code>. All of the above transformations happen
198before the target alias is prepended to the name - so, specifying
199<code>--program-prefix=foo-</code> and <code>program-suffix=-3.1</code>, the
200resulting binary would be installed as
201<code>/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1</code>.
202
203     <p>As a last shortcoming, none of the installed Ada programs are
204transformed yet, which will be fixed in some time.
205
206     <br><dt><code>--with-local-prefix=</code><var>dirname</var><code></code>
207     <dd>Specify the
208installation directory for local include files.  The default is
209<code>/usr/local</code>.  Specify this option if you want the compiler to
210search directory <code></code><var>dirname</var><code>/include</code> for locally installed
211header files <em>instead</em> of <code>/usr/local/include</code>.
212
213     <p>You should specify <code>--with-local-prefix</code> <strong>only</strong> if your
214site has a different convention (not <code>/usr/local</code>) for where to put
215site-specific files.
216
217     <p>The default value for <code>--with-local-prefix</code> is <code>/usr/local</code>
218regardless of the value of <code>--prefix</code>.  Specifying
219<code>--prefix</code> has no effect on which directory GCC searches for
220local header files.  This may seem counterintuitive, but actually it is
221logical.
222
223     <p>The purpose of <code>--prefix</code> is to specify where to <em>install
224GCC</em>.  The local header files in <code>/usr/local/include</code>--if you put
225any in that directory--are not part of GCC.  They are part of other
226programs--perhaps many others.  (GCC installs its own header files in
227another directory which is based on the <code>--prefix</code> value.)
228
229     <p>Both the local-prefix include directory and the GCC-prefix include
230directory are part of GCC's "system include" directories.  Although these
231two directories are not fixed, they need to be searched in the proper
232order for the correct processing of the include_next directive.  The
233local-prefix include directory is searched before the GCC-prefix
234include directory.  Another characteristic of system include directories
235is that pedantic warnings are turned off for headers in these directories.
236
237     <p>Some autoconf macros add <code>-I </code><var>directory</var><code></code> options to the
238compiler command line, to ensure that directories containing installed
239packages' headers are searched.  When <var>directory</var> is one of GCC's
240system include directories, GCC will ignore the option so that system
241directories continue to be processed in the correct order.  This
242may result in a search order different from what was specified but the
243directory will still be searched.
244
245     <p>GCC automatically searches for ordinary libraries using
246<code>GCC_EXEC_PREFIX</code>.  Thus, when the same installation prefix is
247used for both GCC and packages, GCC will automatically search for
248both headers and libraries.  This provides a configuration that is
249easy to use.  GCC behaves in a manner similar to that when it is
250installed as a system compiler in <code>/usr</code>.
251
252     <p>Sites that need to install multiple versions of GCC may not want to
253use the above simple configuration.  It is possible to use the
254<code>--program-prefix</code>, <code>--program-suffix</code> and
255<code>--program-transform-name</code> options to install multiple versions
256into a single directory, but it may be simpler to use different prefixes
257and the <code>--with-local-prefix</code> option to specify the location of the
258site-specific files for each version.  It will then be necessary for
259users to specify explicitly the location of local site libraries
260(e.g., with <code>LIBRARY_PATH</code>).
261
262     <p>The same value can be used for both <code>--with-local-prefix</code> and
263<code>--prefix</code> provided it is not <code>/usr</code>.  This can be used
264to avoid the default search of <code>/usr/local/include</code>.
265
266     <p><strong>Do not</strong> specify <code>/usr</code> as the <code>--with-local-prefix</code>!
267The directory you use for <code>--with-local-prefix</code> <strong>must not</strong>
268contain any of the system's standard header files.  If it did contain
269them, certain programs would be miscompiled (including GNU Emacs, on
270certain targets), because this would override and nullify the header
271file corrections made by the <code>fixincludes</code> script.
272
273     <p>Indications are that people who use this option use it based on mistaken
274ideas of what it is for.  People use it as if it specified where to
275install part of GCC.  Perhaps they make this assumption because
276installing GCC creates the directory.
277
278     <br><dt><code>--enable-shared[=</code><var>package</var><code>[,...]]</code>
279     <dd>Build shared versions of libraries, if shared libraries are supported on
280the target platform.  Unlike GCC 2.95.x and earlier, shared libraries
281are enabled by default on all platforms that support shared libraries,
282except for <code>libobjc</code> which is built as a static library only by
283default.
284
285     <p>If a list of packages is given as an argument, build shared libraries
286only for the listed packages.  For other packages, only static libraries
287will be built.  Package names currently recognized in the GCC tree are
288<code>libgcc</code> (also known as <code>gcc</code>), <code>libstdc++</code> (not
289<code>libstdc++-v3</code>), <code>libffi</code>, <code>zlib</code>, <code>boehm-gc</code> and
290<code>libjava</code>.  Note that <code>libobjc</code> does not recognize itself by
291any name, so, if you list package names in <code>--enable-shared</code>,
292you will only get static Objective-C libraries.  <code>libf2c</code> and
293<code>libiberty</code> do not support shared libraries at all.
294
295     <p>Use <code>--disable-shared</code> to build only static libraries.  Note that
296<code>--disable-shared</code> does not accept a list of package names as
297argument, only <code>--enable-shared</code> does.
298
299     <br><dt><code><a name="with-gnu-as"></a>--with-gnu-as</code>
300     <dd>Specify that the compiler should assume that the
301assembler it finds is the GNU assembler.  However, this does not modify
302the rules to find an assembler and will result in confusion if the
303assembler found is not actually the GNU assembler.  (Confusion may also
304result if the compiler finds the GNU assembler but has not been
305configured with <code>--with-gnu-as</code>.)  If you have more than one
306assembler installed on your system, you may want to use this option in
307connection with <code>--with-as=</code><var>pathname</var><code></code>.
308
309     <p>The following systems are the only ones where it makes a difference
310whether you use the GNU assembler.  On any other system,
311<code>--with-gnu-as</code> has no effect.
312
313          <ul>
314<li><code>hppa1.0-</code><var>any</var><code>-</code><var>any</var><code></code>
315<li><code>hppa1.1-</code><var>any</var><code>-</code><var>any</var><code></code>
316<li><code>i386-</code><var>any</var><code>-sysv</code>
317<li><code>m68k-bull-sysv</code>
318<li><code>m68k-hp-hpux</code>
319<li><code>m68000-hp-hpux</code>
320<li><code>m68000-att-sysv</code>
321<li><code></code><var>any</var><code>-lynx-lynxos</code>
322<li><code>mips-</code><var>any</var><code></code>
323<li><code>sparc-sun-solaris2.</code><var>any</var><code></code>
324<li><code>sparc64-</code><var>any</var><code>-solaris2.</code><var>any</var><code></code>
325</ul>
326
327     <p>On the systems listed above (except for the HP-PA, the SPARC, for ISC on
328the 386, and for <code>mips-sgi-irix5.*</code>), if you use the GNU assembler,
329you should also use the GNU linker (and specify <code>--with-gnu-ld</code>).
330
331     <br><dt><code><a name="with-as"></a>--with-as=</code><var>pathname</var><code></code>
332     <dd>Specify that the
333compiler should use the assembler pointed to by <var>pathname</var>, rather
334than the one found by the standard rules to find an assembler, which
335are:
336          <ul>
337<li>Check the
338<code></code><var>exec_prefix</var><code>/lib/gcc-lib/</code><var>target</var><code>/</code><var>version</var><code></code>
339directory, where <var>exec_prefix</var> defaults to <var>prefix</var> which
340defaults to <code>/usr/local</code> unless overridden by the
341<code>--prefix=</code><var>pathname</var><code></code> switch described above. <var>target</var> is the
342target system triple, such as <code>sparc-sun-solaris2.7</code>, and
343<var>version</var> denotes the GCC version, such as 3.0.
344<li>Check operating system specific directories (e.g. <code>/usr/ccs/bin</code> on
345Sun Solaris 2).
346</ul>
347     Note that these rules do not check for the value of <code>PATH</code>.  You may
348want to use <code>--with-as</code> if no assembler is installed in the
349directories listed above, or if you have multiple assemblers installed
350and want to choose one that is not found by the above rules.
351
352     <br><dt><code><a name="with-gnu-ld"></a>--with-gnu-ld</code>
353     <dd>Same as <a href="#with-gnu-as"><code>--with-gnu-as</code></a>
354but for the linker.
355
356     <br><dt><code>--with-ld=</code><var>pathname</var><code></code>
357     <dd>Same as <a href="#with-as"><code>--with-as</code></a>
358but for the linker.
359
360     <br><dt><code>--with-stabs</code>
361     <dd>Specify that stabs debugging
362information should be used instead of whatever format the host normally
363uses.  Normally GCC uses the same debug format as the host system.
364
365     <p>On MIPS based systems and on Alphas, you must specify whether you want
366GCC to create the normal ECOFF debugging format, or to use BSD-style
367stabs passed through the ECOFF symbol table.  The normal ECOFF debug
368format cannot fully handle languages other than C.  BSD stabs format can
369handle other languages, but it only works with the GNU debugger GDB.
370
371     <p>Normally, GCC uses the ECOFF debugging format by default; if you
372prefer BSD stabs, specify <code>--with-stabs</code> when you configure GCC.
373
374     <p>No matter which default you choose when you configure GCC, the user
375can use the <code>-gcoff</code> and <code>-gstabs+</code> options to specify explicitly
376the debug format for a particular compilation.
377
378     <p><code>--with-stabs</code> is meaningful on the ISC system on the 386, also, if
379<code>--with-gas</code> is used.  It selects use of stabs debugging
380information embedded in COFF output.  This kind of debugging information
381supports C++ well; ordinary COFF debugging information does not.
382
383     <p><code>--with-stabs</code> is also meaningful on 386 systems running SVR4.  It
384selects use of stabs debugging information embedded in ELF output.  The
385C++ compiler currently (2.6.0) does not support the DWARF debugging
386information normally used on 386 SVR4 platforms; stabs provide a
387workable alternative.  This requires gas and gdb, as the normal SVR4
388tools can not generate or interpret stabs.
389
390     <br><dt><code>--disable-multilib</code>
391     <dd>Specify that multiple target
392libraries to support different target variants, calling
393conventions, etc should not be built.  The default is to build a
394predefined set of them.
395
396     <p>Some targets provide finer-grained control over which multilibs are built
397(e.g., <code>--disable-softfloat</code>):
398          <dl>
399<dt><code>arc-*-elf*</code>
400          <dd>biendian.
401
402          <br><dt><code>arm-*-*</code>
403          <dd>fpu, 26bit, underscore, interwork, biendian, nofmult.
404
405          <br><dt><code>m68*-*-*</code>
406          <dd>softfloat, m68881, m68000, m68020.
407
408          <br><dt><code>mips*-*-*</code>
409          <dd>single-float, biendian, softfloat.
410
411          <br><dt><code>powerpc*-*-*, rs6000*-*-*</code>
412          <dd>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
413sysv, aix.
414
415     </dl>
416
417     <br><dt><code>--enable-threads</code>
418     <dd>Specify that the target
419supports threads.  This affects the Objective-C compiler and runtime
420library, and exception handling for other languages like C++ and Java.
421On some systems, this is the default.
422
423     <p>In general, the best (and, in many cases, the only known) threading
424model available will be configured for use.  Beware that on some
425systems, gcc has not been taught what threading models are generally
426available for the system.  In this case, <code>--enable-threads</code> is an
427alias for <code>--enable-threads=single</code>.
428
429     <br><dt><code>--disable-threads</code>
430     <dd>Specify that threading support should be disabled for the system.
431This is an alias for <code>--enable-threads=single</code>.
432
433     <br><dt><code>--enable-threads=</code><var>lib</var><code></code>
434     <dd>Specify that
435<var>lib</var> is the thread support library.  This affects the Objective-C
436compiler and runtime library, and exception handling for other languages
437like C++ and Java.  The possibilities for <var>lib</var> are:
438
439          <dl>
440<dt><code>aix</code>
441          <dd>AIX thread support.
442<br><dt><code>dce</code>
443          <dd>DCE thread support.
444<br><dt><code>mach</code>
445          <dd>Generic MACH thread support, known to work on NeXTSTEP.  (Please note
446that the file needed to support this configuration, <code>gthr-mach.h</code>, is
447missing and thus this setting will cause a known bootstrap failure.)
448<br><dt><code>no</code>
449          <dd>This is an alias for <code>single</code>.
450<br><dt><code>posix</code>
451          <dd>Generic POSIX thread support.
452<br><dt><code>pthreads</code>
453          <dd>Same as <code>posix</code> on arm*-*-linux*, *-*-chorusos* and *-*-freebsd*
454only.  A future release of gcc might remove this alias or extend it
455to all platforms.
456<br><dt><code>rtems</code>
457          <dd>RTEMS thread support.
458<br><dt><code>single</code>
459          <dd>Disable thread support, should work for all platforms.
460<br><dt><code>solaris</code>
461          <dd>Sun Solaris 2 thread support.
462<br><dt><code>vxworks</code>
463          <dd>VxWorks thread support.
464<br><dt><code>win32</code>
465          <dd>Microsoft Win32 API thread support.
466</dl>
467
468     <br><dt><code>--with-cpu=</code><var>cpu</var><code></code>
469     <dd>Specify which cpu variant the
470compiler should generate code for by default.  This is currently
471only supported on some ports, specifically arm, powerpc, and
472SPARC.  If configure does not recognize the model name (e.g. arm700,
473603e, or ultrasparc) you provide, please check the
474<code>gcc/config.gcc</code> script for a complete list of supported models.
475
476     <br><dt><code>--enable-altivec</code>
477     <dd>Specify that the target supports AltiVec vector enhancements.  This
478option will adjust the ABI for AltiVec enhancements, as well as generate
479AltiVec code when appropriate.  This option is only available for
480PowerPC systems.
481
482     <br><dt><code>--enable-target-optspace</code>
483     <dd>Specify that target
484libraries should be optimized for code space instead of code speed.
485This is the default for the m32r platform.
486
487     <br><dt><code>--disable-cpp</code>
488     <dd>Specify that a user visible <code>cpp</code> program should not be installed.
489
490     <br><dt><code>--with-cpp-install-dir=</code><var>dirname</var><code></code>
491     <dd>Specify that the user visible <code>cpp</code> program should be installed
492in <code></code><var>prefix</var><code>/</code><var>dirname</var><code>/cpp</code>, in addition to <var>bindir</var>.
493
494     <br><dt><code>--enable-initfini-array</code>
495     <dd>Force the use of sections <code>.init_array</code> and <code>.fini_array</code>
496(instead of <code>.init</code> and <code>.fini</code>) for constructors and
497destructors.  Option <code>--disable-initfini-array</code> has the
498opposite effect.  If neither option is specified, the configure script
499will try to guess whether the <code>.init_array</code> and
500<code>.fini_array</code> sections are supported and, if they are, use them.
501
502     <br><dt><code>--enable-maintainer-mode</code>
503     <dd>The build rules that
504regenerate the GCC master message catalog <code>gcc.pot</code> are normally
505disabled.  This is because it can only be rebuilt if the complete source
506tree is present.  If you have changed the sources and want to rebuild the
507catalog, configuring with <code>--enable-maintainer-mode</code> will enable
508this.  Note that you need a recent version of the <code>gettext</code> tools
509to do so.
510
511     <br><dt><code>--enable-version-specific-runtime-libs</code>
512     <dd>Specify
513that runtime libraries should be installed in the compiler specific
514subdirectory (<code></code><var>libsubdir</var><code></code>) rather than the usual places.  In
515addition, <code>libstdc++</code>'s include files will be installed in
516<code></code><var>libsubdir</var><code>/include/g++</code> unless you overruled it by using
517<code>--with-gxx-include-dir=</code><var>dirname</var><code></code>.  Using this option is
518particularly useful if you intend to use several versions of GCC in
519parallel. This is currently supported by <code>libf2c</code> and
520<code>libstdc++</code>, and is the default for <code>libobjc</code> which cannot be
521changed in this case.
522
523     <br><dt><code>--enable-languages=</code><var>lang1</var><code>,</code><var>lang2</var><code>,...</code>
524     <dd>Specify that only a particular subset of compilers and
525their runtime libraries should be built.  For a list of valid values for
526<var>langN</var> you can issue the following command in the
527<code>gcc</code> directory of your GCC source tree:<br>
528     <pre class="example">          grep language= */config-lang.in
529          </pre>
530     Currently, you can use any of the following:
531<code>ada</code>, <code>c</code>, <code>c++</code>, <code>f77</code>, <code>java</code>, <code>objc</code>.
532Building the Ada compiler has special requirements, see below.<br>
533If you do not pass this flag, all languages available in the <code>gcc</code>
534sub-tree will be configured.  Re-defining <code>LANGUAGES</code> when calling
535<code>make bootstrap</code> <strong>does not</strong> work anymore, as those
536language sub-directories might not have been configured!
537
538     <br><dt><code>--disable-libgcj</code>
539     <dd>Specify that the run-time libraries
540used by GCJ should not be built.  This is useful in case you intend
541to use GCJ with some other run-time, or you're going to install it
542separately, or it just happens not to build on your particular
543machine.  In general, if the Java front end is enabled, the GCJ
544libraries will be enabled too, unless they're known to not work on
545the target platform.  If GCJ is enabled but <code>libgcj</code> isn't built, you
546may need to port it; in this case, before modifying the top-level
547<code>configure.in</code> so that <code>libgcj</code> is enabled by default on this platform,
548you may use <code>--enable-libgcj</code> to override the default.
549
550     <br><dt><code>--with-dwarf2</code>
551     <dd>Specify that the compiler should
552use DWARF 2 debugging information as the default.
553
554     <br><dt><code>--enable-win32-registry</code>
555     <dd><dt><code>--enable-win32-registry=</code><var>key</var><code></code>
556     <dd><dt><code>--disable-win32-registry</code>
557     <dd>The <code>--enable-win32-registry</code> option enables Windows-hosted GCC
558to look up installations paths in the registry using the following key:
559
560     <pre class="smallexample">          <code>HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\</code><var>key</var><code></code>
561          </pre>
562
563     <p><var>key</var> defaults to GCC version number, and can be overridden by the
564<code>--enable-win32-registry=</code><var>key</var><code></code> option. Vendors and distributors
565who use custom installers are encouraged to provide a different key,
566perhaps one comprised of vendor name and GCC version number, to
567avoid conflict with existing installations.  This feature is enabled
568by default, and can be disabled by <code>--disable-win32-registry</code>
569option.  This option has no effect on the other hosts.
570
571     <br><dt><code>--nfp</code>
572     <dd>Specify that the machine does not have a floating point unit.  This
573option only applies to <code>m68k-sun-sunos</code><var>n</var><code></code>.  On any other
574system, <code>--nfp</code> has no effect.
575
576     <br><dt><code>--enable-checking</code>
577     <dd><dt><code>--enable-checking=</code><var>list</var><code></code>
578     <dd>When you specify this option, the compiler is built to perform checking
579of tree node types when referencing fields of that node, and some other
580internal consistency checks.  This does not change the generated code,
581but adds error checking within the compiler.  This will slow down the
582compiler and may only work properly if you are building the compiler
583with GCC.  This is on by default when building from CVS or snapshots,
584but off for releases.  More control over the checks may be had by
585specifying <var>list</var>; the categories of checks available are
586<code>misc</code>, <code>tree</code>, <code>gc</code>, <code>rtl</code>, <code>rtlflag</code>,
587<code>gcac</code> and <code>valgrind</code>.  The check <code>valgrind</code> requires the
588external <code>valgrind</code> simulator, available from
589<a href="http://developer.kde.org/~sewardj/">http://developer.kde.org/~sewardj/</a>.  The default when <var>list</var> is
590not specified is <code>misc,tree,gc,rtlflag</code>; the checks <code>rtl</code>,
591<code>gcac</code> and <code>valgrind</code> are very expensive.
592
593     <br><dt><code>--enable-coverage</code>
594     <dd><dt><code>--enable-coverage=</code><var>level</var><code></code>
595     <dd>With this option, the compiler is built to collect self coverage
596information, every time it is run. This is for internal development
597purposes, and only works when the compiler is being built with gcc. The
598<var>level</var> argument controls whether the compiler is built optimized or
599not, values are <code>opt</code> and <code>noopt</code>. For coverage analysis you
600want to disable optimization, for performance analysis you want to
601enable optimization. When coverage is enabled, the default level is
602without optimization.
603
604     <br><dt><code>--enable-nls</code>
605     <dd><dt><code>--disable-nls</code>
606     <dd>The <code>--enable-nls</code> option enables Native Language Support (NLS),
607which lets GCC output diagnostics in languages other than American
608English.  Native Language Support is enabled by default if not doing a
609canadian cross build.  The <code>--disable-nls</code> option disables NLS.
610
611     <br><dt><code>--with-included-gettext</code>
612     <dd>If NLS is enabled, the <code>--with-included-gettext</code> option causes the build
613procedure to prefer its copy of GNU <code>gettext</code>.
614
615     <br><dt><code>--with-catgets</code>
616     <dd>If NLS is enabled, and if the host lacks <code>gettext</code> but has the
617inferior <code>catgets</code> interface, the GCC build procedure normally
618ignores <code>catgets</code> and instead uses GCC's copy of the GNU
619<code>gettext</code> library.  The <code>--with-catgets</code> option causes the
620build procedure to use the host's <code>catgets</code> in this situation.
621
622     <br><dt><code>--with-libiconv-prefix=</code><var>dir</var><code></code>
623     <dd>Search for libiconv header files in <code></code><var>dir</var><code>/include</code> and
624libiconv library files in <code></code><var>dir</var><code>/lib</code>.
625
626     <br><dt><code>--with-system-zlib</code>
627     <dd>Use installed zlib rather than that included with GCC.  This option
628only applies if the Java front end is being built.
629
630     <br><dt><code>--enable-obsolete</code>
631     <dd>Enable configuration for an obsoleted system.  If you attempt to
632configure GCC for a system (build, host, or target) which has been
633obsoleted, and you do not specify this flag, configure will halt with an
634error message.
635
636     <p>All support for systems which have been obsoleted in one release of GCC
637is removed entirely in the next major release, unless someone steps
638forward to maintain the port.
639</dl>
640
641   <p>Some options which only apply to building cross compilers:
642     <dl>
643<dt><code>--with-sysroot</code>
644     <dd><dt><code>--with-sysroot=</code><var>dir</var><code></code>
645     <dd>Tells GCC to consider <var>dir</var> as the root of a tree that contains a
646(subset of) the root filesystem of the target operating system.
647Target system headers, libraries and run-time object files will be
648searched in there.  The specified directory is not copied into the
649install tree, unlike the options <code>--with-headers</code> and
650<code>--with-libs</code> that this option obsoletes.  The default value,
651in case <code>--with-sysroot</code> is not given an argument, is
652<code>${gcc_tooldir}/sys-root</code>.  If the specified directory is a
653subdirectory of <code>${exec_prefix}</code>, then it will be found relative to
654the GCC binaries if the installation tree is moved.
655
656     <br><dt><code>--with-headers</code>
657     <dd><dt><code>--with-headers=</code><var>dir</var><code></code>
658     <dd>Deprecated in favor of <code>--with-sysroot</code>.
659Specifies that target headers are available when building a cross compiler.
660The <var>dir</var> argument specifies a directory which has the target include
661files.  These include files will be copied into the <code>gcc</code> install
662directory.  <em>This option with the </em><var>dir</var><em> argument is required</em> when
663building a cross compiler, if <code></code><var>prefix</var><code>/</code><var>target</var><code>/sys-include</code>
664doesn't pre-exist.  If <code></code><var>prefix</var><code>/</code><var>target</var><code>/sys-include</code> does
665pre-exist, the <var>dir</var> argument may be omitted.  <code>fixincludes</code>
666will be run on these files to make them compatible with GCC.
667<br><dt><code>--with-libs</code>
668     <dd><dt><code>--with-libs=``</code><var>dir1</var><code> </code><var>dir2</var><code> ... </code><var>dirN</var><code>''</code>
669     <dd>Deprecated in favor of <code>--with-sysroot</code>.
670Specifies a list of directories which contain the target runtime
671libraries.  These libraries will be copied into the <code>gcc</code> install
672directory.  If the directory list is omitted, this option has no
673effect.
674<br><dt><code>--with-newlib</code>
675     <dd>Specifies that <code>newlib</code> is
676being used as the target C library.  This causes <code>__eprintf</code> to be
677omitted from <code>libgcc.a</code> on the assumption that it will be provided by
678<code>newlib</code>.
679</dl>
680
681   <p>Note that each <code>--enable</code> option has a corresponding
682<code>--disable</code> option and that each <code>--with</code> option has a
683corresponding <code>--without</code> option.
684
685   <hr />
686<p>
687<a href="./index.html">Return to the GCC Installation page</a>
688
689   </body></html>
690
691