~ubuntu-branches/debian/stretch/gcc-6-doc/stretch

« back to all changes in this revision

Viewing changes to .pc/from-debian-gcc-gdc-6-doc.diff/gcc/doc/install.texi

  • Committer: Package Import Robot
  • Author(s): Guo Yixuan (郭溢譞)
  • Date: 2016-05-06 21:45:33 UTC
  • Revision ID: package-import@ubuntu.com-20160506214533-1ro717riyxkhd4kn
Tags: 6.1.0-1
* New upstream branch. (Closes: #822667)
* Synced patches with gcc-6, 6.1.1-1.
* Use https URIs for Vcs-*.
* Bumped standards version to 3.9.8, no changes needed.
* Update debian/copyright.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
\input texinfo.tex    @c -*-texinfo-*-
 
2
@c @ifnothtml
 
3
@c %**start of header
 
4
@setfilename gccinstall.info
 
5
@settitle Installing GCC
 
6
@setchapternewpage odd
 
7
@c %**end of header
 
8
@c @end ifnothtml
 
9
 
 
10
@include gcc-common.texi
 
11
 
 
12
@c Specify title for specific html page
 
13
@ifset indexhtml
 
14
@settitle Installing GCC
 
15
@end ifset
 
16
@ifset specifichtml
 
17
@settitle Host/Target specific installation notes for GCC
 
18
@end ifset
 
19
@ifset prerequisiteshtml
 
20
@settitle Prerequisites for GCC
 
21
@end ifset
 
22
@ifset downloadhtml
 
23
@settitle Downloading GCC
 
24
@end ifset
 
25
@ifset configurehtml
 
26
@settitle Installing GCC: Configuration
 
27
@end ifset
 
28
@ifset buildhtml
 
29
@settitle Installing GCC: Building
 
30
@end ifset
 
31
@ifset testhtml
 
32
@settitle Installing GCC: Testing
 
33
@end ifset
 
34
@ifset finalinstallhtml
 
35
@settitle Installing GCC: Final installation
 
36
@end ifset
 
37
@ifset binarieshtml
 
38
@settitle Installing GCC: Binaries
 
39
@end ifset
 
40
@ifset oldhtml
 
41
@settitle Installing GCC: Old documentation
 
42
@end ifset
 
43
@ifset gfdlhtml
 
44
@settitle Installing GCC: GNU Free Documentation License
 
45
@end ifset
 
46
 
 
47
@c Copyright (C) 1988-2016 Free Software Foundation, Inc.
 
48
@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
 
49
 
 
50
@c IMPORTANT: whenever you modify this file, run `install.texi2html' to
 
51
@c test the generation of HTML documents for the gcc.gnu.org web pages.
 
52
@c
 
53
@c Do not use @footnote{} in this file as it breaks install.texi2html!
 
54
 
 
55
@c Include everything if we're not making html
 
56
@ifnothtml
 
57
@set indexhtml
 
58
@set specifichtml
 
59
@set prerequisiteshtml
 
60
@set downloadhtml
 
61
@set configurehtml
 
62
@set buildhtml
 
63
@set testhtml
 
64
@set finalinstallhtml
 
65
@set binarieshtml
 
66
@set oldhtml
 
67
@set gfdlhtml
 
68
@end ifnothtml
 
69
 
 
70
@c Part 2 Summary Description and Copyright
 
71
@copying
 
72
Copyright @copyright{} 1988-2016 Free Software Foundation, Inc.
 
73
@sp 1
 
74
Permission is granted to copy, distribute and/or modify this document
 
75
under the terms of the GNU Free Documentation License, Version 1.3 or
 
76
any later version published by the Free Software Foundation; with no
 
77
Invariant Sections, the Front-Cover texts being (a) (see below), and
 
78
with the Back-Cover Texts being (b) (see below).  A copy of the
 
79
license is included in the section entitled ``@uref{./gfdl.html,,GNU
 
80
Free Documentation License}''.
 
81
 
 
82
(a) The FSF's Front-Cover Text is:
 
83
 
 
84
     A GNU Manual
 
85
 
 
86
(b) The FSF's Back-Cover Text is:
 
87
 
 
88
     You have freedom to copy and modify this GNU Manual, like GNU
 
89
     software.  Copies published by the Free Software Foundation raise
 
90
     funds for GNU development.
 
91
@end copying
 
92
@ifinfo
 
93
@insertcopying
 
94
@end ifinfo
 
95
@dircategory Software development
 
96
@direntry
 
97
* gccinstall: (gccinstall).    Installing the GNU Compiler Collection.
 
98
@end direntry
 
99
 
 
100
@c Part 3 Titlepage and Copyright
 
101
@titlepage
 
102
@title Installing GCC
 
103
@versionsubtitle
 
104
 
 
105
@c The following two commands start the copyright page.
 
106
@page
 
107
@vskip 0pt plus 1filll
 
108
@insertcopying
 
109
@end titlepage
 
110
 
 
111
@c Part 4 Top node, Master Menu, and/or Table of Contents
 
112
@ifinfo
 
113
@node    Top, , , (dir)
 
114
@comment node-name, next,          Previous, up
 
115
 
 
116
@menu
 
117
* Installing GCC::  This document describes the generic installation
 
118
                    procedure for GCC as well as detailing some target
 
119
                    specific installation instructions.
 
120
 
 
121
* Specific::        Host/target specific installation notes for GCC.
 
122
* Binaries::        Where to get pre-compiled binaries.
 
123
 
 
124
* Old::             Old installation documentation.
 
125
 
 
126
* GNU Free Documentation License:: How you can copy and share this manual.
 
127
* Concept Index::   This index has two entries.
 
128
@end menu
 
129
@end ifinfo
 
130
 
 
131
@iftex
 
132
@contents
 
133
@end iftex
 
134
 
 
135
@c Part 5 The Body of the Document
 
136
@c ***Installing GCC**********************************************************
 
137
@ifnothtml
 
138
@comment node-name,     next,          previous, up
 
139
@node    Installing GCC, Binaries, , Top
 
140
@end ifnothtml
 
141
@ifset indexhtml
 
142
@ifnothtml
 
143
@chapter Installing GCC
 
144
@end ifnothtml
 
145
 
 
146
The latest version of this document is always available at
 
147
@uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}.
 
148
It refers to the current development sources, instructions for
 
149
specific released versions are included with the sources.
 
150
 
 
151
This document describes the generic installation procedure for GCC as well
 
152
as detailing some target specific installation instructions.
 
153
 
 
154
GCC includes several components that previously were separate distributions
 
155
with their own installation instructions.  This document supersedes all
 
156
package-specific installation instructions.
 
157
 
 
158
@emph{Before} starting the build/install procedure please check the
 
159
@ifnothtml
 
160
@ref{Specific, host/target specific installation notes}.
 
161
@end ifnothtml
 
162
@ifhtml
 
163
@uref{specific.html,,host/target specific installation notes}.
 
164
@end ifhtml
 
165
We recommend you browse the entire generic installation instructions before
 
166
you proceed.
 
167
 
 
168
Lists of successful builds for released versions of GCC are
 
169
available at @uref{http://gcc.gnu.org/buildstat.html}.
 
170
These lists are updated as new information becomes available.
 
171
 
 
172
The installation procedure itself is broken into five steps.
 
173
 
 
174
@ifinfo
 
175
@menu
 
176
* Prerequisites::
 
177
* Downloading the source::
 
178
* Configuration::
 
179
* Building::
 
180
* Testing:: (optional)
 
181
* Final install::
 
182
@end menu
 
183
@end ifinfo
 
184
@ifhtml
 
185
@enumerate
 
186
@item
 
187
@uref{prerequisites.html,,Prerequisites}
 
188
@item
 
189
@uref{download.html,,Downloading the source}
 
190
@item
 
191
@uref{configure.html,,Configuration}
 
192
@item
 
193
@uref{build.html,,Building}
 
194
@item
 
195
@uref{test.html,,Testing} (optional)
 
196
@item
 
197
@uref{finalinstall.html,,Final install}
 
198
@end enumerate
 
199
@end ifhtml
 
200
 
 
201
Please note that GCC does not support @samp{make uninstall} and probably
 
202
won't do so in the near future as this would open a can of worms.  Instead,
 
203
we suggest that you install GCC into a directory of its own and simply
 
204
remove that directory when you do not need that specific version of GCC
 
205
any longer, and, if shared libraries are installed there as well, no
 
206
more binaries exist that use them.
 
207
 
 
208
@ifhtml
 
209
There are also some @uref{old.html,,old installation instructions},
 
210
which are mostly obsolete but still contain some information which has
 
211
not yet been merged into the main part of this manual.
 
212
@end ifhtml
 
213
 
 
214
@html
 
215
<hr />
 
216
<p>
 
217
@end html
 
218
@ifhtml
 
219
@uref{./index.html,,Return to the GCC Installation page}
 
220
 
 
221
@insertcopying
 
222
@end ifhtml
 
223
@end ifset
 
224
 
 
225
@c ***Prerequisites**************************************************
 
226
@ifnothtml
 
227
@comment node-name,     next,          previous, up
 
228
@node    Prerequisites, Downloading the source, , Installing GCC
 
229
@end ifnothtml
 
230
@ifset prerequisiteshtml
 
231
@ifnothtml
 
232
@chapter Prerequisites
 
233
@end ifnothtml
 
234
@cindex Prerequisites
 
235
 
 
236
GCC requires that various tools and packages be available for use in the
 
237
build procedure.  Modifying GCC sources requires additional tools
 
238
described below.
 
239
 
 
240
@heading Tools/packages necessary for building GCC
 
241
@table @asis
 
242
@item ISO C++98 compiler
 
243
Necessary to bootstrap GCC, although versions of GCC prior
 
244
to 4.8 also allow bootstrapping with a ISO C89 compiler and versions
 
245
of GCC prior to 3.4 also allow bootstrapping with a traditional
 
246
(K&R) C compiler.
 
247
 
 
248
To build all languages in a cross-compiler or other configuration where
 
249
3-stage bootstrap is not performed, you need to start with an existing
 
250
GCC binary (version 3.4 or later) because source code for language
 
251
frontends other than C might use GCC extensions.
 
252
 
 
253
Note that to bootstrap GCC with versions of GCC earlier than 3.4, you
 
254
may need to use @option{--disable-stage1-checking}, though
 
255
bootstrapping the compiler with such earlier compilers is strongly
 
256
discouraged.
 
257
 
 
258
@item C standard library and headers
 
259
 
 
260
In order to build GCC, the C standard library and headers must be present
 
261
for all target variants for which target libraries will be built (and not
 
262
only the variant of the host C++ compiler).
 
263
 
 
264
This affects the popular @samp{x86_64-unknown-linux-gnu} platform (among
 
265
other multilib targets), for which 64-bit (@samp{x86_64}) and 32-bit
 
266
(@samp{i386}) libc headers are usually packaged separately. If you do a
 
267
build of a native compiler on @samp{x86_64-unknown-linux-gnu}, make sure you
 
268
either have the 32-bit libc developer package properly installed (the exact
 
269
name of the package depends on your distro) or you must build GCC as a
 
270
64-bit only compiler by configuring with the option
 
271
@option{--disable-multilib}.  Otherwise, you may encounter an error such as
 
272
@samp{fatal error: gnu/stubs-32.h: No such file}
 
273
 
 
274
@item GNAT
 
275
 
 
276
In order to build the Ada compiler (GNAT) you must already have GNAT
 
277
installed because portions of the Ada frontend are written in Ada (with
 
278
GNAT extensions.)  Refer to the Ada installation instructions for more
 
279
specific information.
 
280
 
 
281
@item A ``working'' POSIX compatible shell, or GNU bash
 
282
 
 
283
Necessary when running @command{configure} because some
 
284
@command{/bin/sh} shells have bugs and may crash when configuring the
 
285
target libraries.  In other cases, @command{/bin/sh} or @command{ksh}
 
286
have disastrous corner-case performance problems.  This
 
287
can cause target @command{configure} runs to literally take days to
 
288
complete in some cases.
 
289
 
 
290
So on some platforms @command{/bin/ksh} is sufficient, on others it
 
291
isn't.  See the host/target specific instructions for your platform, or
 
292
use @command{bash} to be sure.  Then set @env{CONFIG_SHELL} in your
 
293
environment to your ``good'' shell prior to running
 
294
@command{configure}/@command{make}.
 
295
 
 
296
@command{zsh} is not a fully compliant POSIX shell and will not
 
297
work when configuring GCC@.
 
298
 
 
299
@item A POSIX or SVR4 awk
 
300
 
 
301
Necessary for creating some of the generated source files for GCC@.
 
302
If in doubt, use a recent GNU awk version, as some of the older ones
 
303
are broken.  GNU awk version 3.1.5 is known to work.
 
304
 
 
305
@item GNU binutils
 
306
 
 
307
Necessary in some circumstances, optional in others.  See the
 
308
host/target specific instructions for your platform for the exact
 
309
requirements.
 
310
 
 
311
@item gzip version 1.2.4 (or later) or
 
312
@itemx bzip2 version 1.0.2 (or later)
 
313
 
 
314
Necessary to uncompress GCC @command{tar} files when source code is
 
315
obtained via FTP mirror sites.
 
316
 
 
317
@item GNU make version 3.80 (or later)
 
318
 
 
319
You must have GNU make installed to build GCC@.
 
320
 
 
321
@item GNU tar version 1.14 (or later)
 
322
 
 
323
Necessary (only on some platforms) to untar the source code.  Many
 
324
systems' @command{tar} programs will also work, only try GNU
 
325
@command{tar} if you have problems.
 
326
 
 
327
@item Perl version 5.6.1 (or later)
 
328
 
 
329
Necessary when targeting Darwin, building @samp{libstdc++},
 
330
and not using @option{--disable-symvers}.
 
331
Necessary when targeting Solaris 2 with Sun @command{ld} and not using
 
332
@option{--disable-symvers}.  The bundled @command{perl} in Solaris@tie{}8
 
333
and up works.
 
334
 
 
335
Necessary when regenerating @file{Makefile} dependencies in libiberty.
 
336
Necessary when regenerating @file{libiberty/functions.texi}.
 
337
Necessary when generating manpages from Texinfo manuals.
 
338
Used by various scripts to generate some files included in SVN (mainly
 
339
Unicode-related and rarely changing) from source tables.
 
340
 
 
341
@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
 
342
 
 
343
Necessary to build libgcj, the GCJ runtime.
 
344
 
 
345
@end table
 
346
 
 
347
Several support libraries are necessary to build GCC, some are required,
 
348
others optional.  While any sufficiently new version of required tools
 
349
usually work, library requirements are generally stricter.  Newer
 
350
versions may work in some cases, but it's safer to use the exact
 
351
versions documented.  We appreciate bug reports about problems with
 
352
newer versions, though.  If your OS vendor provides packages for the
 
353
support libraries then using those packages may be the simplest way to
 
354
install the libraries.
 
355
 
 
356
@table @asis
 
357
@item GNU Multiple Precision Library (GMP) version 4.3.2 (or later)
 
358
 
 
359
Necessary to build GCC@.  If a GMP source distribution is found in a
 
360
subdirectory of your GCC sources named @file{gmp}, it will be built
 
361
together with GCC.  Alternatively, if GMP is already installed but it
 
362
is not in your library search path, you will have to configure with the
 
363
@option{--with-gmp} configure option.  See also @option{--with-gmp-lib}
 
364
and @option{--with-gmp-include}.
 
365
 
 
366
@item MPFR Library version 2.4.2 (or later)
 
367
 
 
368
Necessary to build GCC@.  It can be downloaded from
 
369
@uref{http://www.mpfr.org/}.  If an MPFR source distribution is found
 
370
in a subdirectory of your GCC sources named @file{mpfr}, it will be
 
371
built together with GCC.  Alternatively, if MPFR is already installed
 
372
but it is not in your default library search path, the
 
373
@option{--with-mpfr} configure option should be used.  See also
 
374
@option{--with-mpfr-lib} and @option{--with-mpfr-include}.
 
375
 
 
376
@item MPC Library version 0.8.1 (or later)
 
377
 
 
378
Necessary to build GCC@.  It can be downloaded from
 
379
@uref{http://www.multiprecision.org/}.  If an MPC source distribution
 
380
is found in a subdirectory of your GCC sources named @file{mpc}, it
 
381
will be built together with GCC.  Alternatively, if MPC is already
 
382
installed but it is not in your default library search path, the
 
383
@option{--with-mpc} configure option should be used.  See also
 
384
@option{--with-mpc-lib} and @option{--with-mpc-include}.
 
385
 
 
386
@item isl Library version 0.16, 0.15, or 0.14.
 
387
 
 
388
Necessary to build GCC with the Graphite loop optimizations.
 
389
It can be downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/}.
 
390
If an isl source distribution is found
 
391
in a subdirectory of your GCC sources named @file{isl}, it will be
 
392
built together with GCC.  Alternatively, the @option{--with-isl} configure
 
393
option should be used if isl is not installed in your default library
 
394
search path.
 
395
 
 
396
@end table
 
397
 
 
398
@heading Tools/packages necessary for modifying GCC
 
399
@table @asis
 
400
@item autoconf version 2.64
 
401
@itemx GNU m4 version 1.4.6 (or later)
 
402
 
 
403
Necessary when modifying @file{configure.ac}, @file{aclocal.m4}, etc.@:
 
404
to regenerate @file{configure} and @file{config.in} files.
 
405
 
 
406
@item automake version 1.11.6
 
407
 
 
408
Necessary when modifying a @file{Makefile.am} file to regenerate its
 
409
associated @file{Makefile.in}.
 
410
 
 
411
Much of GCC does not use automake, so directly edit the @file{Makefile.in}
 
412
file.  Specifically this applies to the @file{gcc}, @file{intl},
 
413
@file{libcpp}, @file{libiberty}, @file{libobjc} directories as well
 
414
as any of their subdirectories.
 
415
 
 
416
For directories that use automake, GCC requires the latest release in
 
417
the 1.11 series, which is currently 1.11.6.  When regenerating a directory
 
418
to a newer version, please update all the directories using an older 1.11
 
419
to the latest released version.
 
420
 
 
421
@item gettext version 0.14.5 (or later)
 
422
 
 
423
Needed to regenerate @file{gcc.pot}.
 
424
 
 
425
@item gperf version 2.7.2 (or later)
 
426
 
 
427
Necessary when modifying @command{gperf} input files, e.g.@:
 
428
@file{gcc/cp/cfns.gperf} to regenerate its associated header file, e.g.@:
 
429
@file{gcc/cp/cfns.h}.
 
430
 
 
431
@item DejaGnu 1.4.4
 
432
@itemx Expect
 
433
@itemx Tcl
 
434
 
 
435
Necessary to run the GCC testsuite; see the section on testing for
 
436
details.  Tcl 8.6 has a known regression in RE pattern handling that
 
437
make parts of the testsuite fail.  See
 
438
@uref{http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f}
 
439
for more information.  This bug has been fixed in 8.6.1.
 
440
 
 
441
@item autogen version 5.5.4 (or later) and
 
442
@itemx guile version 1.4.1 (or later)
 
443
 
 
444
Necessary to regenerate @file{fixinc/fixincl.x} from
 
445
@file{fixinc/inclhack.def} and @file{fixinc/*.tpl}.
 
446
 
 
447
Necessary to run @samp{make check} for @file{fixinc}.
 
448
 
 
449
Necessary to regenerate the top level @file{Makefile.in} file from
 
450
@file{Makefile.tpl} and @file{Makefile.def}.
 
451
 
 
452
@item Flex version 2.5.4 (or later)
 
453
 
 
454
Necessary when modifying @file{*.l} files.
 
455
 
 
456
Necessary to build GCC during development because the generated output
 
457
files are not included in the SVN repository.  They are included in
 
458
releases.
 
459
 
 
460
@item Texinfo version 4.7 (or later)
 
461
 
 
462
Necessary for running @command{makeinfo} when modifying @file{*.texi}
 
463
files to test your changes.
 
464
 
 
465
Necessary for running @command{make dvi} or @command{make pdf} to
 
466
create printable documentation in DVI or PDF format.  Texinfo version
 
467
4.8 or later is required for @command{make pdf}.
 
468
 
 
469
Necessary to build GCC documentation during development because the
 
470
generated output files are not included in the SVN repository.  They are
 
471
included in releases.
 
472
 
 
473
@item @TeX{} (any working version)
 
474
 
 
475
Necessary for running @command{texi2dvi} and @command{texi2pdf}, which
 
476
are used when running @command{make dvi} or @command{make pdf} to create
 
477
DVI or PDF files, respectively.
 
478
 
 
479
@item Sphinx version 1.0 (or later)
 
480
 
 
481
Necessary to regenerate @file{jit/docs/_build/texinfo} from the @file{.rst}
 
482
files in the directories below @file{jit/docs}.
 
483
 
 
484
@item SVN (any version)
 
485
@itemx SSH (any version)
 
486
 
 
487
Necessary to access the SVN repository.  Public releases and weekly
 
488
snapshots of the development sources are also available via FTP@.
 
489
 
 
490
@item GNU diffutils version 2.7 (or later)
 
491
 
 
492
Useful when submitting patches for the GCC source code.
 
493
 
 
494
@item patch version 2.5.4 (or later)
 
495
 
 
496
Necessary when applying patches, created with @command{diff}, to one's
 
497
own sources.
 
498
 
 
499
@item ecj1
 
500
@itemx gjavah
 
501
 
 
502
If you wish to modify @file{.java} files in libjava, you will need to
 
503
configure with @option{--enable-java-maintainer-mode}, and you will need
 
504
to have executables named @command{ecj1} and @command{gjavah} in your path.
 
505
The @command{ecj1} executable should run the Eclipse Java compiler via
 
506
the GCC-specific entry point.  You can download a suitable jar from
 
507
@uref{ftp://sourceware.org/pub/java/}, or by running the script
 
508
@command{contrib/download_ecj}.
 
509
 
 
510
@item antlr.jar version 2.7.1 (or later)
 
511
@itemx antlr binary
 
512
 
 
513
If you wish to build the @command{gjdoc} binary in libjava, you will
 
514
need to have an @file{antlr.jar} library available. The library is
 
515
searched for in system locations but can be specified with
 
516
@option{--with-antlr-jar=} instead.  When configuring with
 
517
@option{--enable-java-maintainer-mode}, you will need to have one of
 
518
the executables named @command{cantlr}, @command{runantlr} or
 
519
@command{antlr} in your path.
 
520
 
 
521
@end table
 
522
 
 
523
@html
 
524
<hr />
 
525
<p>
 
526
@end html
 
527
@ifhtml
 
528
@uref{./index.html,,Return to the GCC Installation page}
 
529
@end ifhtml
 
530
@end ifset
 
531
 
 
532
@c ***Downloading the source**************************************************
 
533
@ifnothtml
 
534
@comment node-name,     next,          previous, up
 
535
@node    Downloading the source, Configuration, Prerequisites, Installing GCC
 
536
@end ifnothtml
 
537
@ifset downloadhtml
 
538
@ifnothtml
 
539
@chapter Downloading GCC
 
540
@end ifnothtml
 
541
@cindex Downloading GCC
 
542
@cindex Downloading the Source
 
543
 
 
544
GCC is distributed via @uref{http://gcc.gnu.org/svn.html,,SVN} and FTP
 
545
tarballs compressed with @command{gzip} or
 
546
@command{bzip2}.
 
547
 
 
548
Please refer to the @uref{http://gcc.gnu.org/releases.html,,releases web page}
 
549
for information on how to obtain GCC@.
 
550
 
 
551
The source distribution includes the C, C++, Objective-C, Fortran, Java,
 
552
and Ada (in the case of GCC 3.1 and later) compilers, as well as
 
553
runtime libraries for C++, Objective-C, Fortran, and Java.
 
554
For previous versions these were downloadable as separate components such
 
555
as the core GCC distribution, which included the C language front end and
 
556
shared components, and language-specific distributions including the
 
557
language front end and the language runtime (where appropriate).
 
558
 
 
559
If you also intend to build binutils (either to upgrade an existing
 
560
installation or for use in place of the corresponding tools of your
 
561
OS), unpack the binutils distribution either in the same directory or
 
562
a separate one.  In the latter case, add symbolic links to any
 
563
components of the binutils you intend to build alongside the compiler
 
564
(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld},
 
565
@file{opcodes}, @dots{}) to the directory containing the GCC sources.
 
566
 
 
567
Likewise the GMP, MPFR and MPC libraries can be automatically built
 
568
together with GCC.  You may simply run the
 
569
@command{contrib/download_prerequisites} script in the GCC source directory
 
570
to set up everything.
 
571
Otherwise unpack the GMP, MPFR and/or MPC source
 
572
distributions in the directory containing the GCC sources and rename
 
573
their directories to @file{gmp}, @file{mpfr} and @file{mpc},
 
574
respectively (or use symbolic links with the same name).
 
575
 
 
576
@html
 
577
<hr />
 
578
<p>
 
579
@end html
 
580
@ifhtml
 
581
@uref{./index.html,,Return to the GCC Installation page}
 
582
@end ifhtml
 
583
@end ifset
 
584
 
 
585
@c ***Configuration***********************************************************
 
586
@ifnothtml
 
587
@comment node-name,     next,          previous, up
 
588
@node    Configuration, Building, Downloading the source, Installing GCC
 
589
@end ifnothtml
 
590
@ifset configurehtml
 
591
@ifnothtml
 
592
@chapter Installing GCC: Configuration
 
593
@end ifnothtml
 
594
@cindex Configuration
 
595
@cindex Installing GCC: Configuration
 
596
 
 
597
Like most GNU software, GCC must be configured before it can be built.
 
598
This document describes the recommended configuration procedure
 
599
for both native and cross targets.
 
600
 
 
601
We use @var{srcdir} to refer to the toplevel source directory for
 
602
GCC; we use @var{objdir} to refer to the toplevel build/object directory.
 
603
 
 
604
If you obtained the sources via SVN, @var{srcdir} must refer to the top
 
605
@file{gcc} directory, the one where the @file{MAINTAINERS} file can be
 
606
found, and not its @file{gcc} subdirectory, otherwise the build will fail.
 
607
 
 
608
If either @var{srcdir} or @var{objdir} is located on an automounted NFS
 
609
file system, the shell's built-in @command{pwd} command will return
 
610
temporary pathnames.  Using these can lead to various sorts of build
 
611
problems.  To avoid this issue, set the @env{PWDCMD} environment
 
612
variable to an automounter-aware @command{pwd} command, e.g.,
 
613
@command{pawd} or @samp{amq -w}, during the configuration and build
 
614
phases.
 
615
 
 
616
First, we @strong{highly} recommend that GCC be built into a
 
617
separate directory from the sources which does @strong{not} reside
 
618
within the source tree.  This is how we generally build GCC; building
 
619
where @var{srcdir} == @var{objdir} should still work, but doesn't
 
620
get extensive testing; building where @var{objdir} is a subdirectory
 
621
of @var{srcdir} is unsupported.
 
622
 
 
623
If you have previously built GCC in the same directory for a
 
624
different target machine, do @samp{make distclean} to delete all files
 
625
that might be invalid.  One of the files this deletes is @file{Makefile};
 
626
if @samp{make distclean} complains that @file{Makefile} does not exist
 
627
or issues a message like ``don't know how to make distclean'' it probably
 
628
means that the directory is already suitably clean.  However, with the
 
629
recommended method of building in a separate @var{objdir}, you should
 
630
simply use a different @var{objdir} for each target.
 
631
 
 
632
Second, when configuring a native system, either @command{cc} or
 
633
@command{gcc} must be in your path or you must set @env{CC} in
 
634
your environment before running configure.  Otherwise the configuration
 
635
scripts may fail.
 
636
 
 
637
@ignore
 
638
Note that the bootstrap compiler and the resulting GCC must be link
 
639
compatible, else the bootstrap will fail with linker errors about
 
640
incompatible object file formats.  Several multilibed targets are
 
641
affected by this requirement, see
 
642
@ifnothtml
 
643
@ref{Specific, host/target specific installation notes}.
 
644
@end ifnothtml
 
645
@ifhtml
 
646
@uref{specific.html,,host/target specific installation notes}.
 
647
@end ifhtml
 
648
@end ignore
 
649
 
 
650
To configure GCC:
 
651
 
 
652
@smallexample
 
653
% mkdir @var{objdir}
 
654
% cd @var{objdir}
 
655
% @var{srcdir}/configure [@var{options}] [@var{target}]
 
656
@end smallexample
 
657
 
 
658
@heading Distributor options
 
659
 
 
660
If you will be distributing binary versions of GCC, with modifications
 
661
to the source code, you should use the options described in this
 
662
section to make clear that your version contains modifications.
 
663
 
 
664
@table @code
 
665
@item --with-pkgversion=@var{version}
 
666
Specify a string that identifies your package.  You may wish
 
667
to include a build number or build date.  This version string will be
 
668
included in the output of @command{gcc --version}.  This suffix does
 
669
not replace the default version string, only the @samp{GCC} part.
 
670
 
 
671
The default value is @samp{GCC}.
 
672
 
 
673
@item --with-bugurl=@var{url}
 
674
Specify the URL that users should visit if they wish to report a bug.
 
675
You are of course welcome to forward bugs reported to you to the FSF,
 
676
if you determine that they are not bugs in your modifications.
 
677
 
 
678
The default value refers to the FSF's GCC bug tracker.
 
679
 
 
680
@end table
 
681
 
 
682
@heading Target specification
 
683
@itemize @bullet
 
684
@item
 
685
GCC has code to correctly determine the correct value for @var{target}
 
686
for nearly all native systems.  Therefore, we highly recommend you do
 
687
not provide a configure target when configuring a native compiler.
 
688
 
 
689
@item
 
690
@var{target} must be specified as @option{--target=@var{target}}
 
691
when configuring a cross compiler; examples of valid targets would be
 
692
m68k-elf, sh-elf, etc.
 
693
 
 
694
@item
 
695
Specifying just @var{target} instead of @option{--target=@var{target}}
 
696
implies that the host defaults to @var{target}.
 
697
@end itemize
 
698
 
 
699
 
 
700
@heading Options specification
 
701
 
 
702
Use @var{options} to override several configure time options for
 
703
GCC@.  A list of supported @var{options} follows; @samp{configure
 
704
--help} may list other options, but those not listed below may not
 
705
work and should not normally be used.
 
706
 
 
707
Note that each @option{--enable} option has a corresponding
 
708
@option{--disable} option and that each @option{--with} option has a
 
709
corresponding @option{--without} option.
 
710
 
 
711
@table @code
 
712
@item --prefix=@var{dirname}
 
713
Specify the toplevel installation
 
714
directory.  This is the recommended way to install the tools into a directory
 
715
other than the default.  The toplevel installation directory defaults to
 
716
@file{/usr/local}.
 
717
 
 
718
We @strong{highly} recommend against @var{dirname} being the same or a
 
719
subdirectory of @var{objdir} or vice versa.  If specifying a directory
 
720
beneath a user's home directory tree, some shells will not expand
 
721
@var{dirname} correctly if it contains the @samp{~} metacharacter; use
 
722
@env{$HOME} instead.
 
723
 
 
724
The following standard @command{autoconf} options are supported.  Normally you
 
725
should not need to use these options.
 
726
@table @code
 
727
@item --exec-prefix=@var{dirname}
 
728
Specify the toplevel installation directory for architecture-dependent
 
729
files.  The default is @file{@var{prefix}}.
 
730
 
 
731
@item --bindir=@var{dirname}
 
732
Specify the installation directory for the executables called by users
 
733
(such as @command{gcc} and @command{g++}).  The default is
 
734
@file{@var{exec-prefix}/bin}.
 
735
 
 
736
@item --libdir=@var{dirname}
 
737
Specify the installation directory for object code libraries and
 
738
internal data files of GCC@.  The default is @file{@var{exec-prefix}/lib}.
 
739
 
 
740
@item --libexecdir=@var{dirname}
 
741
Specify the installation directory for internal executables of GCC@.
 
742
The default is @file{@var{exec-prefix}/libexec}.
 
743
 
 
744
@item --with-slibdir=@var{dirname}
 
745
Specify the installation directory for the shared libgcc library.  The
 
746
default is @file{@var{libdir}}.
 
747
 
 
748
@item --datarootdir=@var{dirname}
 
749
Specify the root of the directory tree for read-only architecture-independent
 
750
data files referenced by GCC@.  The default is @file{@var{prefix}/share}.
 
751
 
 
752
@item --infodir=@var{dirname}
 
753
Specify the installation directory for documentation in info format.
 
754
The default is @file{@var{datarootdir}/info}.
 
755
 
 
756
@item --datadir=@var{dirname}
 
757
Specify the installation directory for some architecture-independent
 
758
data files referenced by GCC@.  The default is @file{@var{datarootdir}}.
 
759
 
 
760
@item --docdir=@var{dirname}
 
761
Specify the installation directory for documentation files (other
 
762
than Info) for GCC@.  The default is @file{@var{datarootdir}/doc}.
 
763
 
 
764
@item --htmldir=@var{dirname}
 
765
Specify the installation directory for HTML documentation files.
 
766
The default is @file{@var{docdir}}.
 
767
 
 
768
@item --pdfdir=@var{dirname}
 
769
Specify the installation directory for PDF documentation files.
 
770
The default is @file{@var{docdir}}.
 
771
 
 
772
@item --mandir=@var{dirname}
 
773
Specify the installation directory for manual pages.  The default is
 
774
@file{@var{datarootdir}/man}.  (Note that the manual pages are only extracts
 
775
from the full GCC manuals, which are provided in Texinfo format.  The manpages
 
776
are derived by an automatic conversion process from parts of the full
 
777
manual.)
 
778
 
 
779
@item --with-gxx-include-dir=@var{dirname}
 
780
Specify
 
781
the installation directory for G++ header files.  The default depends
 
782
on other configuration options, and differs between cross and native
 
783
configurations.
 
784
 
 
785
@item --with-specs=@var{specs}
 
786
Specify additional command line driver SPECS.
 
787
This can be useful if you need to turn on a non-standard feature by
 
788
default without modifying the compiler's source code, for instance
 
789
@option{--with-specs=%@{!fcommon:%@{!fno-common:-fno-common@}@}}.
 
790
@ifnothtml
 
791
@xref{Spec Files,, Specifying subprocesses and the switches to pass to them,
 
792
gcc, Using the GNU Compiler Collection (GCC)},
 
793
@end ifnothtml
 
794
@ifhtml
 
795
See ``Spec Files'' in the main manual
 
796
@end ifhtml
 
797
 
 
798
@end table
 
799
 
 
800
@item --program-prefix=@var{prefix}
 
801
GCC supports some transformations of the names of its programs when
 
802
installing them.  This option prepends @var{prefix} to the names of
 
803
programs to install in @var{bindir} (see above).  For example, specifying
 
804
@option{--program-prefix=foo-} would result in @samp{gcc}
 
805
being installed as @file{/usr/local/bin/foo-gcc}.
 
806
 
 
807
@item --program-suffix=@var{suffix}
 
808
Appends @var{suffix} to the names of programs to install in @var{bindir}
 
809
(see above).  For example, specifying @option{--program-suffix=-3.1}
 
810
would result in @samp{gcc} being installed as
 
811
@file{/usr/local/bin/gcc-3.1}.
 
812
 
 
813
@item --program-transform-name=@var{pattern}
 
814
Applies the @samp{sed} script @var{pattern} to be applied to the names
 
815
of programs to install in @var{bindir} (see above).  @var{pattern} has to
 
816
consist of one or more basic @samp{sed} editing commands, separated by
 
817
semicolons.  For example, if you want the @samp{gcc} program name to be
 
818
transformed to the installed program @file{/usr/local/bin/myowngcc} and
 
819
the @samp{g++} program name to be transformed to
 
820
@file{/usr/local/bin/gspecial++} without changing other program names,
 
821
you could use the pattern
 
822
@option{--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'}
 
823
to achieve this effect.
 
824
 
 
825
All three options can be combined and used together, resulting in more
 
826
complex conversion patterns.  As a basic rule, @var{prefix} (and
 
827
@var{suffix}) are prepended (appended) before further transformations
 
828
can happen with a special transformation script @var{pattern}.
 
829
 
 
830
As currently implemented, this option only takes effect for native
 
831
builds; cross compiler binaries' names are not transformed even when a
 
832
transformation is explicitly asked for by one of these options.
 
833
 
 
834
For native builds, some of the installed programs are also installed
 
835
with the target alias in front of their name, as in
 
836
@samp{i686-pc-linux-gnu-gcc}.  All of the above transformations happen
 
837
before the target alias is prepended to the name---so, specifying
 
838
@option{--program-prefix=foo-} and @option{program-suffix=-3.1}, the
 
839
resulting binary would be installed as
 
840
@file{/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1}.
 
841
 
 
842
As a last shortcoming, none of the installed Ada programs are
 
843
transformed yet, which will be fixed in some time.
 
844
 
 
845
@item --with-local-prefix=@var{dirname}
 
846
Specify the
 
847
installation directory for local include files.  The default is
 
848
@file{/usr/local}.  Specify this option if you want the compiler to
 
849
search directory @file{@var{dirname}/include} for locally installed
 
850
header files @emph{instead} of @file{/usr/local/include}.
 
851
 
 
852
You should specify @option{--with-local-prefix} @strong{only} if your
 
853
site has a different convention (not @file{/usr/local}) for where to put
 
854
site-specific files.
 
855
 
 
856
The default value for @option{--with-local-prefix} is @file{/usr/local}
 
857
regardless of the value of @option{--prefix}.  Specifying
 
858
@option{--prefix} has no effect on which directory GCC searches for
 
859
local header files.  This may seem counterintuitive, but actually it is
 
860
logical.
 
861
 
 
862
The purpose of @option{--prefix} is to specify where to @emph{install
 
863
GCC}.  The local header files in @file{/usr/local/include}---if you put
 
864
any in that directory---are not part of GCC@.  They are part of other
 
865
programs---perhaps many others.  (GCC installs its own header files in
 
866
another directory which is based on the @option{--prefix} value.)
 
867
 
 
868
Both the local-prefix include directory and the GCC-prefix include
 
869
directory are part of GCC's ``system include'' directories.  Although these
 
870
two directories are not fixed, they need to be searched in the proper
 
871
order for the correct processing of the include_next directive.  The
 
872
local-prefix include directory is searched before the GCC-prefix
 
873
include directory.  Another characteristic of system include directories
 
874
is that pedantic warnings are turned off for headers in these directories.
 
875
 
 
876
Some autoconf macros add @option{-I @var{directory}} options to the
 
877
compiler command line, to ensure that directories containing installed
 
878
packages' headers are searched.  When @var{directory} is one of GCC's
 
879
system include directories, GCC will ignore the option so that system
 
880
directories continue to be processed in the correct order.  This
 
881
may result in a search order different from what was specified but the
 
882
directory will still be searched.
 
883
 
 
884
GCC automatically searches for ordinary libraries using
 
885
@env{GCC_EXEC_PREFIX}.  Thus, when the same installation prefix is
 
886
used for both GCC and packages, GCC will automatically search for
 
887
both headers and libraries.  This provides a configuration that is
 
888
easy to use.  GCC behaves in a manner similar to that when it is
 
889
installed as a system compiler in @file{/usr}.
 
890
 
 
891
Sites that need to install multiple versions of GCC may not want to
 
892
use the above simple configuration.  It is possible to use the
 
893
@option{--program-prefix}, @option{--program-suffix} and
 
894
@option{--program-transform-name} options to install multiple versions
 
895
into a single directory, but it may be simpler to use different prefixes
 
896
and the @option{--with-local-prefix} option to specify the location of the
 
897
site-specific files for each version.  It will then be necessary for
 
898
users to specify explicitly the location of local site libraries
 
899
(e.g., with @env{LIBRARY_PATH}).
 
900
 
 
901
The same value can be used for both @option{--with-local-prefix} and
 
902
@option{--prefix} provided it is not @file{/usr}.  This can be used
 
903
to avoid the default search of @file{/usr/local/include}.
 
904
 
 
905
@strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}!
 
906
The directory you use for @option{--with-local-prefix} @strong{must not}
 
907
contain any of the system's standard header files.  If it did contain
 
908
them, certain programs would be miscompiled (including GNU Emacs, on
 
909
certain targets), because this would override and nullify the header
 
910
file corrections made by the @command{fixincludes} script.
 
911
 
 
912
Indications are that people who use this option use it based on mistaken
 
913
ideas of what it is for.  People use it as if it specified where to
 
914
install part of GCC@.  Perhaps they make this assumption because
 
915
installing GCC creates the directory.
 
916
 
 
917
@item --with-native-system-header-dir=@var{dirname}
 
918
Specifies that @var{dirname} is the directory that contains native system
 
919
header files, rather than @file{/usr/include}.  This option is most useful
 
920
if you are creating a compiler that should be isolated from the system
 
921
as much as possible.  It is most commonly used with the
 
922
@option{--with-sysroot} option and will cause GCC to search
 
923
@var{dirname} inside the system root specified by that option.
 
924
 
 
925
@item --enable-shared[=@var{package}[,@dots{}]]
 
926
Build shared versions of libraries, if shared libraries are supported on
 
927
the target platform.  Unlike GCC 2.95.x and earlier, shared libraries
 
928
are enabled by default on all platforms that support shared libraries.
 
929
 
 
930
If a list of packages is given as an argument, build shared libraries
 
931
only for the listed packages.  For other packages, only static libraries
 
932
will be built.  Package names currently recognized in the GCC tree are
 
933
@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not
 
934
@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc},
 
935
@samp{ada}, @samp{libada}, @samp{libjava}, @samp{libgo}, and @samp{libobjc}.
 
936
Note @samp{libiberty} does not support shared libraries at all.
 
937
 
 
938
Use @option{--disable-shared} to build only static libraries.  Note that
 
939
@option{--disable-shared} does not accept a list of package names as
 
940
argument, only @option{--enable-shared} does.
 
941
 
 
942
Contrast with @option{--enable-host-shared}, which affects @emph{host}
 
943
code.
 
944
 
 
945
@item --enable-host-shared
 
946
Specify that the @emph{host} code should be built into position-independent
 
947
machine code (with -fPIC), allowing it to be used within shared libraries,
 
948
but yielding a slightly slower compiler.
 
949
 
 
950
This option is required when building the libgccjit.so library.
 
951
 
 
952
Contrast with @option{--enable-shared}, which affects @emph{target}
 
953
libraries.
 
954
 
 
955
@item @anchor{with-gnu-as}--with-gnu-as
 
956
Specify that the compiler should assume that the
 
957
assembler it finds is the GNU assembler.  However, this does not modify
 
958
the rules to find an assembler and will result in confusion if the
 
959
assembler found is not actually the GNU assembler.  (Confusion may also
 
960
result if the compiler finds the GNU assembler but has not been
 
961
configured with @option{--with-gnu-as}.)  If you have more than one
 
962
assembler installed on your system, you may want to use this option in
 
963
connection with @option{--with-as=@var{pathname}} or
 
964
@option{--with-build-time-tools=@var{pathname}}.
 
965
 
 
966
The following systems are the only ones where it makes a difference
 
967
whether you use the GNU assembler.  On any other system,
 
968
@option{--with-gnu-as} has no effect.
 
969
 
 
970
@itemize @bullet
 
971
@item @samp{hppa1.0-@var{any}-@var{any}}
 
972
@item @samp{hppa1.1-@var{any}-@var{any}}
 
973
@item @samp{sparc-sun-solaris2.@var{any}}
 
974
@item @samp{sparc64-@var{any}-solaris2.@var{any}}
 
975
@end itemize
 
976
 
 
977
@item @anchor{with-as}--with-as=@var{pathname}
 
978
Specify that the compiler should use the assembler pointed to by
 
979
@var{pathname}, rather than the one found by the standard rules to find
 
980
an assembler, which are:
 
981
@itemize @bullet
 
982
@item
 
983
Unless GCC is being built with a cross compiler, check the
 
984
@file{@var{libexec}/gcc/@var{target}/@var{version}} directory.
 
985
@var{libexec} defaults to @file{@var{exec-prefix}/libexec};
 
986
@var{exec-prefix} defaults to @var{prefix}, which
 
987
defaults to @file{/usr/local} unless overridden by the
 
988
@option{--prefix=@var{pathname}} switch described above.  @var{target}
 
989
is the target system triple, such as @samp{sparc-sun-solaris2.7}, and
 
990
@var{version} denotes the GCC version, such as 3.0.
 
991
 
 
992
@item
 
993
If the target system is the same that you are building on, check
 
994
operating system specific directories (e.g.@: @file{/usr/ccs/bin} on
 
995
Sun Solaris 2).
 
996
 
 
997
@item
 
998
Check in the @env{PATH} for a tool whose name is prefixed by the
 
999
target system triple.
 
1000
 
 
1001
@item
 
1002
Check in the @env{PATH} for a tool whose name is not prefixed by the
 
1003
target system triple, if the host and target system triple are
 
1004
the same (in other words, we use a host tool if it can be used for
 
1005
the target as well).
 
1006
@end itemize
 
1007
 
 
1008
You may want to use @option{--with-as} if no assembler
 
1009
is installed in the directories listed above, or if you have multiple
 
1010
assemblers installed and want to choose one that is not found by the
 
1011
above rules.
 
1012
 
 
1013
@item @anchor{with-gnu-ld}--with-gnu-ld
 
1014
Same as @uref{#with-gnu-as,,@option{--with-gnu-as}}
 
1015
but for the linker.
 
1016
 
 
1017
@item --with-ld=@var{pathname}
 
1018
Same as @uref{#with-as,,@option{--with-as}}
 
1019
but for the linker.
 
1020
 
 
1021
@item --with-stabs
 
1022
Specify that stabs debugging
 
1023
information should be used instead of whatever format the host normally
 
1024
uses.  Normally GCC uses the same debug format as the host system.
 
1025
 
 
1026
On MIPS based systems and on Alphas, you must specify whether you want
 
1027
GCC to create the normal ECOFF debugging format, or to use BSD-style
 
1028
stabs passed through the ECOFF symbol table.  The normal ECOFF debug
 
1029
format cannot fully handle languages other than C@.  BSD stabs format can
 
1030
handle other languages, but it only works with the GNU debugger GDB@.
 
1031
 
 
1032
Normally, GCC uses the ECOFF debugging format by default; if you
 
1033
prefer BSD stabs, specify @option{--with-stabs} when you configure GCC@.
 
1034
 
 
1035
No matter which default you choose when you configure GCC, the user
 
1036
can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly
 
1037
the debug format for a particular compilation.
 
1038
 
 
1039
@option{--with-stabs} is meaningful on the ISC system on the 386, also, if
 
1040
@option{--with-gas} is used.  It selects use of stabs debugging
 
1041
information embedded in COFF output.  This kind of debugging information
 
1042
supports C++ well; ordinary COFF debugging information does not.
 
1043
 
 
1044
@option{--with-stabs} is also meaningful on 386 systems running SVR4.  It
 
1045
selects use of stabs debugging information embedded in ELF output.  The
 
1046
C++ compiler currently (2.6.0) does not support the DWARF debugging
 
1047
information normally used on 386 SVR4 platforms; stabs provide a
 
1048
workable alternative.  This requires gas and gdb, as the normal SVR4
 
1049
tools can not generate or interpret stabs.
 
1050
 
 
1051
@item --with-tls=@var{dialect}
 
1052
Specify the default TLS dialect, for systems were there is a choice.
 
1053
For ARM targets, possible values for @var{dialect} are @code{gnu} or
 
1054
@code{gnu2}, which select between the original GNU dialect and the GNU TLS
 
1055
descriptor-based dialect.
 
1056
 
 
1057
@item --enable-multiarch
 
1058
Specify whether to enable or disable multiarch support.  The default is
 
1059
to check for glibc start files in a multiarch location, and enable it
 
1060
if the files are found.  The auto detection is enabled for native builds,
 
1061
and for cross builds configured with @option{--with-sysroot}, and without
 
1062
@option{--with-native-system-header-dir}.
 
1063
More documentation about multiarch can be found at
 
1064
@uref{https://wiki.debian.org/Multiarch}.
 
1065
 
 
1066
@item --enable-vtable-verify
 
1067
Specify whether to enable or disable the vtable verification feature.
 
1068
Enabling this feature causes libstdc++ to be built with its virtual calls
 
1069
in verifiable mode.  This means that, when linked with libvtv, every
 
1070
virtual call in libstdc++ will verify the vtable pointer through which the
 
1071
call will be made before actually making the call.  If not linked with libvtv,
 
1072
the verifier will call stub functions (in libstdc++ itself) and do nothing.
 
1073
If vtable verification is disabled, then libstdc++ is not built with its
 
1074
virtual calls in verifiable mode at all.  However the libvtv library will
 
1075
still be built (see @option{--disable-libvtv} to turn off building libvtv).
 
1076
@option{--disable-vtable-verify} is the default.
 
1077
 
 
1078
@item --disable-multilib
 
1079
Specify that multiple target
 
1080
libraries to support different target variants, calling
 
1081
conventions, etc.@: should not be built.  The default is to build a
 
1082
predefined set of them.
 
1083
 
 
1084
Some targets provide finer-grained control over which multilibs are built
 
1085
(e.g., @option{--disable-softfloat}):
 
1086
@table @code
 
1087
@item arm-*-*
 
1088
fpu, 26bit, underscore, interwork, biendian, nofmult.
 
1089
 
 
1090
@item m68*-*-*
 
1091
softfloat, m68881, m68000, m68020.
 
1092
 
 
1093
@item mips*-*-*
 
1094
single-float, biendian, softfloat.
 
1095
 
 
1096
@item powerpc*-*-*, rs6000*-*-*
 
1097
aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
 
1098
sysv, aix.
 
1099
 
 
1100
@end table
 
1101
 
 
1102
@item --with-multilib-list=@var{list}
 
1103
@itemx --without-multilib-list
 
1104
Specify what multilibs to build.
 
1105
Currently only implemented for arm*-*-*, sh*-*-* and x86-64-*-linux*.
 
1106
 
 
1107
@table @code
 
1108
@item arm*-*-*
 
1109
@var{list} is either @code{default} or @code{aprofile}.  Specifying
 
1110
@code{default} is equivalent to omitting this option while specifying
 
1111
@code{aprofile} builds multilibs for each combination of ISA (@code{-marm} or
 
1112
@code{-mthumb}), architecture (@code{-march=armv7-a}, @code{-march=armv7ve},
 
1113
or @code{-march=armv8-a}), FPU available (none, @code{-mfpu=vfpv3-d16},
 
1114
@code{-mfpu=neon}, @code{-mfpu=vfpv4-d16}, @code{-mfpu=neon-vfpv4} or
 
1115
@code{-mfpu=neon-fp-armv8} depending on architecture) and floating-point ABI
 
1116
(@code{-mfloat-abi=softfp} or @code{-mfloat-abi=hard}).
 
1117
 
 
1118
@item sh*-*-*
 
1119
@var{list} is a comma separated list of CPU names.  These must be of the
 
1120
form @code{sh*} or @code{m*} (in which case they match the compiler option
 
1121
for that processor).  The list should not contain any endian options -
 
1122
these are handled by @option{--with-endian}.
 
1123
 
 
1124
If @var{list} is empty, then there will be no multilibs for extra
 
1125
processors.  The multilib for the secondary endian remains enabled.
 
1126
 
 
1127
As a special case, if an entry in the list starts with a @code{!}
 
1128
(exclamation point), then it is added to the list of excluded multilibs.
 
1129
Entries of this sort should be compatible with @samp{MULTILIB_EXCLUDES}
 
1130
(once the leading @code{!} has been stripped).
 
1131
 
 
1132
If @option{--with-multilib-list} is not given, then a default set of
 
1133
multilibs is selected based on the value of @option{--target}.  This is
 
1134
usually the complete set of libraries, but some targets imply a more
 
1135
specialized subset.
 
1136
 
 
1137
Example 1: to configure a compiler for SH4A only, but supporting both
 
1138
endians, with little endian being the default:
 
1139
@smallexample
 
1140
--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
 
1141
@end smallexample
 
1142
 
 
1143
Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
 
1144
only little endian SH4AL:
 
1145
@smallexample
 
1146
--with-cpu=sh4a --with-endian=little,big \
 
1147
--with-multilib-list=sh4al,!mb/m4al
 
1148
@end smallexample
 
1149
 
 
1150
@item x86-64-*-linux*
 
1151
@var{list} is a comma separated list of @code{m32}, @code{m64} and
 
1152
@code{mx32} to enable 32-bit, 64-bit and x32 run-time libraries,
 
1153
respectively.  If @var{list} is empty, then there will be no multilibs
 
1154
and only the default run-time library will be enabled.
 
1155
 
 
1156
If @option{--with-multilib-list} is not given, then only 32-bit and
 
1157
64-bit run-time libraries will be enabled.
 
1158
@end table
 
1159
 
 
1160
@item --with-endian=@var{endians}
 
1161
Specify what endians to use.
 
1162
Currently only implemented for sh*-*-*.
 
1163
 
 
1164
@var{endians} may be one of the following:
 
1165
@table @code
 
1166
@item big
 
1167
Use big endian exclusively.
 
1168
@item little
 
1169
Use little endian exclusively.
 
1170
@item big,little
 
1171
Use big endian by default.  Provide a multilib for little endian.
 
1172
@item little,big
 
1173
Use little endian by default.  Provide a multilib for big endian.
 
1174
@end table
 
1175
 
 
1176
@item --enable-threads
 
1177
Specify that the target
 
1178
supports threads.  This affects the Objective-C compiler and runtime
 
1179
library, and exception handling for other languages like C++ and Java.
 
1180
On some systems, this is the default.
 
1181
 
 
1182
In general, the best (and, in many cases, the only known) threading
 
1183
model available will be configured for use.  Beware that on some
 
1184
systems, GCC has not been taught what threading models are generally
 
1185
available for the system.  In this case, @option{--enable-threads} is an
 
1186
alias for @option{--enable-threads=single}.
 
1187
 
 
1188
@item --disable-threads
 
1189
Specify that threading support should be disabled for the system.
 
1190
This is an alias for @option{--enable-threads=single}.
 
1191
 
 
1192
@item --enable-threads=@var{lib}
 
1193
Specify that
 
1194
@var{lib} is the thread support library.  This affects the Objective-C
 
1195
compiler and runtime library, and exception handling for other languages
 
1196
like C++ and Java.  The possibilities for @var{lib} are:
 
1197
 
 
1198
@table @code
 
1199
@item aix
 
1200
AIX thread support.
 
1201
@item dce
 
1202
DCE thread support.
 
1203
@item lynx
 
1204
LynxOS thread support.
 
1205
@item mipssde
 
1206
MIPS SDE thread support.
 
1207
@item no
 
1208
This is an alias for @samp{single}.
 
1209
@item posix
 
1210
Generic POSIX/Unix98 thread support.
 
1211
@item rtems
 
1212
RTEMS thread support.
 
1213
@item single
 
1214
Disable thread support, should work for all platforms.
 
1215
@item tpf
 
1216
TPF thread support.
 
1217
@item vxworks
 
1218
VxWorks thread support.
 
1219
@item win32
 
1220
Microsoft Win32 API thread support.
 
1221
@end table
 
1222
 
 
1223
@item --enable-tls
 
1224
Specify that the target supports TLS (Thread Local Storage).  Usually
 
1225
configure can correctly determine if TLS is supported.  In cases where
 
1226
it guesses incorrectly, TLS can be explicitly enabled or disabled with
 
1227
@option{--enable-tls} or @option{--disable-tls}.  This can happen if
 
1228
the assembler supports TLS but the C library does not, or if the
 
1229
assumptions made by the configure test are incorrect.
 
1230
 
 
1231
@item --disable-tls
 
1232
Specify that the target does not support TLS.
 
1233
This is an alias for @option{--enable-tls=no}.
 
1234
 
 
1235
@item --with-cpu=@var{cpu}
 
1236
@itemx --with-cpu-32=@var{cpu}
 
1237
@itemx --with-cpu-64=@var{cpu}
 
1238
Specify which cpu variant the compiler should generate code for by default.
 
1239
@var{cpu} will be used as the default value of the @option{-mcpu=} switch.
 
1240
This option is only supported on some targets, including ARC, ARM, i386, M68k,
 
1241
PowerPC, and SPARC@.  It is mandatory for ARC@.  The @option{--with-cpu-32} and
 
1242
@option{--with-cpu-64} options specify separate default CPUs for
 
1243
32-bit and 64-bit modes; these options are only supported for i386,
 
1244
x86-64 and PowerPC.
 
1245
 
 
1246
@item --with-schedule=@var{cpu}
 
1247
@itemx --with-arch=@var{cpu}
 
1248
@itemx --with-arch-32=@var{cpu}
 
1249
@itemx --with-arch-64=@var{cpu}
 
1250
@itemx --with-tune=@var{cpu}
 
1251
@itemx --with-tune-32=@var{cpu}
 
1252
@itemx --with-tune-64=@var{cpu}
 
1253
@itemx --with-abi=@var{abi}
 
1254
@itemx --with-fpu=@var{type}
 
1255
@itemx --with-float=@var{type}
 
1256
These configure options provide default values for the @option{-mschedule=},
 
1257
@option{-march=}, @option{-mtune=}, @option{-mabi=}, and @option{-mfpu=}
 
1258
options and for @option{-mhard-float} or @option{-msoft-float}.  As with
 
1259
@option{--with-cpu}, which switches will be accepted and acceptable values
 
1260
of the arguments depend on the target.
 
1261
 
 
1262
@item --with-mode=@var{mode}
 
1263
Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
 
1264
This option is only supported on ARM targets.
 
1265
 
 
1266
@item --with-stack-offset=@var{num}
 
1267
This option sets the default for the -mstack-offset=@var{num} option,
 
1268
and will thus generally also control the setting of this option for
 
1269
libraries.  This option is only supported on Epiphany targets.
 
1270
 
 
1271
@item --with-fpmath=@var{isa}
 
1272
This options sets @option{-mfpmath=sse} by default and specifies the default
 
1273
ISA for floating-point arithmetics.  You can select either @samp{sse} which
 
1274
enables @option{-msse2} or @samp{avx} which enables @option{-mavx} by default.
 
1275
This option is only supported on i386 and x86-64 targets.
 
1276
 
 
1277
@item --with-fp-32=@var{mode}
 
1278
On MIPS targets, set the default value for the @option{-mfp} option when using
 
1279
the o32 ABI.  The possibilities for @var{mode} are:
 
1280
@table @code
 
1281
@item 32
 
1282
Use the o32 FP32 ABI extension, as with the @option{-mfp32} command-line
 
1283
option.
 
1284
@item xx
 
1285
Use the o32 FPXX ABI extension, as with the @option{-mfpxx} command-line
 
1286
option.
 
1287
@item 64
 
1288
Use the o32 FP64 ABI extension, as with the @option{-mfp64} command-line
 
1289
option.
 
1290
@end table
 
1291
In the absence of this configuration option the default is to use the o32
 
1292
FP32 ABI extension.
 
1293
 
 
1294
@item --with-odd-spreg-32
 
1295
On MIPS targets, set the @option{-modd-spreg} option by default when using
 
1296
the o32 ABI.
 
1297
 
 
1298
@item --without-odd-spreg-32
 
1299
On MIPS targets, set the @option{-mno-odd-spreg} option by default when using
 
1300
the o32 ABI.  This is normally used in conjunction with
 
1301
@option{--with-fp-32=64} in order to target the o32 FP64A ABI extension.
 
1302
 
 
1303
@item --with-nan=@var{encoding}
 
1304
On MIPS targets, set the default encoding convention to use for the
 
1305
special not-a-number (NaN) IEEE 754 floating-point data.  The
 
1306
possibilities for @var{encoding} are:
 
1307
@table @code
 
1308
@item legacy
 
1309
Use the legacy encoding, as with the @option{-mnan=legacy} command-line
 
1310
option.
 
1311
@item 2008
 
1312
Use the 754-2008 encoding, as with the @option{-mnan=2008} command-line
 
1313
option.
 
1314
@end table
 
1315
To use this configuration option you must have an assembler version
 
1316
installed that supports the @option{-mnan=} command-line option too.
 
1317
In the absence of this configuration option the default convention is
 
1318
the legacy encoding, as when neither of the @option{-mnan=2008} and
 
1319
@option{-mnan=legacy} command-line options has been used.
 
1320
 
 
1321
@item --with-divide=@var{type}
 
1322
Specify how the compiler should generate code for checking for
 
1323
division by zero.  This option is only supported on the MIPS target.
 
1324
The possibilities for @var{type} are:
 
1325
@table @code
 
1326
@item traps
 
1327
Division by zero checks use conditional traps (this is the default on
 
1328
systems that support conditional traps).
 
1329
@item breaks
 
1330
Division by zero checks use the break instruction.
 
1331
@end table
 
1332
 
 
1333
@c If you make --with-llsc the default for additional targets,
 
1334
@c update the --with-llsc description in the MIPS section below.
 
1335
 
 
1336
@item --with-llsc
 
1337
On MIPS targets, make @option{-mllsc} the default when no
 
1338
@option{-mno-llsc} option is passed.  This is the default for
 
1339
Linux-based targets, as the kernel will emulate them if the ISA does
 
1340
not provide them.
 
1341
 
 
1342
@item --without-llsc
 
1343
On MIPS targets, make @option{-mno-llsc} the default when no
 
1344
@option{-mllsc} option is passed.
 
1345
 
 
1346
@item --with-synci
 
1347
On MIPS targets, make @option{-msynci} the default when no
 
1348
@option{-mno-synci} option is passed.
 
1349
 
 
1350
@item --without-synci
 
1351
On MIPS targets, make @option{-mno-synci} the default when no
 
1352
@option{-msynci} option is passed.  This is the default.
 
1353
 
 
1354
@item --with-mips-plt
 
1355
On MIPS targets, make use of copy relocations and PLTs.
 
1356
These features are extensions to the traditional
 
1357
SVR4-based MIPS ABIs and require support from GNU binutils
 
1358
and the runtime C library.
 
1359
 
 
1360
@item --enable-__cxa_atexit
 
1361
Define if you want to use __cxa_atexit, rather than atexit, to
 
1362
register C++ destructors for local statics and global objects.
 
1363
This is essential for fully standards-compliant handling of
 
1364
destructors, but requires __cxa_atexit in libc.  This option is currently
 
1365
only available on systems with GNU libc.  When enabled, this will cause
 
1366
@option{-fuse-cxa-atexit} to be passed by default.
 
1367
 
 
1368
@item --enable-gnu-indirect-function
 
1369
Define if you want to enable the @code{ifunc} attribute.  This option is
 
1370
currently only available on systems with GNU libc on certain targets.
 
1371
 
 
1372
@item --enable-target-optspace
 
1373
Specify that target
 
1374
libraries should be optimized for code space instead of code speed.
 
1375
This is the default for the m32r platform.
 
1376
 
 
1377
@item --with-cpp-install-dir=@var{dirname}
 
1378
Specify that the user visible @command{cpp} program should be installed
 
1379
in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}.
 
1380
 
 
1381
@item --enable-comdat
 
1382
Enable COMDAT group support.  This is primarily used to override the
 
1383
automatically detected value.
 
1384
 
 
1385
@item --enable-initfini-array
 
1386
Force the use of sections @code{.init_array} and @code{.fini_array}
 
1387
(instead of @code{.init} and @code{.fini}) for constructors and
 
1388
destructors.  Option @option{--disable-initfini-array} has the
 
1389
opposite effect.  If neither option is specified, the configure script
 
1390
will try to guess whether the @code{.init_array} and
 
1391
@code{.fini_array} sections are supported and, if they are, use them.
 
1392
 
 
1393
@item --enable-link-mutex
 
1394
When building GCC, use a mutex to avoid linking the compilers for
 
1395
multiple languages at the same time, to avoid thrashing on build
 
1396
systems with limited free memory.  The default is not to use such a mutex.
 
1397
 
 
1398
@item --enable-maintainer-mode
 
1399
The build rules that regenerate the Autoconf and Automake output files as
 
1400
well as the GCC master message catalog @file{gcc.pot} are normally
 
1401
disabled.  This is because it can only be rebuilt if the complete source
 
1402
tree is present.  If you have changed the sources and want to rebuild the
 
1403
catalog, configuring with @option{--enable-maintainer-mode} will enable
 
1404
this.  Note that you need a recent version of the @code{gettext} tools
 
1405
to do so.
 
1406
 
 
1407
@item --disable-bootstrap
 
1408
For a native build, the default configuration is to perform
 
1409
a 3-stage bootstrap of the compiler when @samp{make} is invoked,
 
1410
testing that GCC can compile itself correctly.  If you want to disable
 
1411
this process, you can configure with @option{--disable-bootstrap}.
 
1412
 
 
1413
@item --enable-bootstrap
 
1414
In special cases, you may want to perform a 3-stage build
 
1415
even if the target and host triplets are different.
 
1416
This is possible when the host can run code compiled for
 
1417
the target (e.g.@: host is i686-linux, target is i486-linux).
 
1418
Starting from GCC 4.2, to do this you have to configure explicitly
 
1419
with @option{--enable-bootstrap}.
 
1420
 
 
1421
@item --enable-generated-files-in-srcdir
 
1422
Neither the .c and .h files that are generated from Bison and flex nor the
 
1423
info manuals and man pages that are built from the .texi files are present
 
1424
in the SVN development tree.  When building GCC from that development tree,
 
1425
or from one of our snapshots, those generated files are placed in your
 
1426
build directory, which allows for the source to be in a readonly
 
1427
directory.
 
1428
 
 
1429
If you configure with @option{--enable-generated-files-in-srcdir} then those
 
1430
generated files will go into the source directory.  This is mainly intended
 
1431
for generating release or prerelease tarballs of the GCC sources, since it
 
1432
is not a requirement that the users of source releases to have flex, Bison,
 
1433
or makeinfo.
 
1434
 
 
1435
@item --enable-version-specific-runtime-libs
 
1436
Specify
 
1437
that runtime libraries should be installed in the compiler specific
 
1438
subdirectory (@file{@var{libdir}/gcc}) rather than the usual places.  In
 
1439
addition, @samp{libstdc++}'s include files will be installed into
 
1440
@file{@var{libdir}} unless you overruled it by using
 
1441
@option{--with-gxx-include-dir=@var{dirname}}.  Using this option is
 
1442
particularly useful if you intend to use several versions of GCC in
 
1443
parallel.  This is currently supported by @samp{libgfortran},
 
1444
@samp{libjava}, @samp{libstdc++}, and @samp{libobjc}.
 
1445
 
 
1446
@item @anchor{WithAixSoname}--with-aix-soname=@samp{aix}, @samp{svr4} or @samp{both}
 
1447
Traditional AIX shared library versioning (versioned @code{Shared Object}
 
1448
files as members of unversioned @code{Archive Library} files named
 
1449
@samp{lib.a}) causes numerous headaches for package managers. However,
 
1450
@code{Import Files} as members of @code{Archive Library} files allow for
 
1451
@strong{filename-based versioning} of shared libraries as seen on Linux/SVR4,
 
1452
where this is called the "SONAME". But as they prevent static linking,
 
1453
@code{Import Files} may be used with @code{Runtime Linking} only, where the
 
1454
linker does search for @samp{libNAME.so} before @samp{libNAME.a} library
 
1455
filenames with the @samp{-lNAME} linker flag.
 
1456
 
 
1457
@anchor{AixLdCommand}For detailed information please refer to the AIX
 
1458
@uref{http://www-01.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22,,ld
 
1459
Command} reference.
 
1460
 
 
1461
As long as shared library creation is enabled, upon:
 
1462
@table @code
 
1463
@item --with-aix-soname=aix
 
1464
@item --with-aix-soname=both
 
1465
 A (traditional AIX) @code{Shared Archive Library} file is created:
 
1466
 @itemize @bullet
 
1467
  @item using the @samp{libNAME.a} filename scheme
 
1468
  @item with the @code{Shared Object} file as archive member named
 
1469
  @samp{libNAME.so.V} (except for @samp{libgcc_s}, where the @code{Shared
 
1470
  Object} file is named @samp{shr.o} for backwards compatibility), which
 
1471
  @itemize @minus
 
1472
   @item is used for runtime loading from inside the @samp{libNAME.a} file
 
1473
   @item is used for dynamic loading via
 
1474
   @code{dlopen("libNAME.a(libNAME.so.V)", RTLD_MEMBER)}
 
1475
   @item is used for shared linking
 
1476
   @item is used for static linking, so no separate @code{Static Archive
 
1477
   Library} file is needed
 
1478
  @end itemize
 
1479
 @end itemize
 
1480
@item --with-aix-soname=both
 
1481
@item --with-aix-soname=svr4
 
1482
 A (second) @code{Shared Archive Library} file is created:
 
1483
 @itemize @bullet
 
1484
 @item using the @samp{libNAME.so.V} filename scheme
 
1485
 @item with the @code{Shared Object} file as archive member named
 
1486
 @samp{shr.o}, which
 
1487
  @itemize @minus
 
1488
   @item is created with the @code{-G linker flag}
 
1489
   @item has the @code{F_LOADONLY} flag set
 
1490
   @item is used for runtime loading from inside the @samp{libNAME.so.V} file
 
1491
   @item is used for dynamic loading via @code{dlopen("libNAME.so.V(shr.o)",
 
1492
   RTLD_MEMBER)}
 
1493
  @end itemize
 
1494
 @item with the @code{Import File} as archive member named @samp{shr.imp},
 
1495
 which
 
1496
  @itemize @minus
 
1497
   @item refers to @samp{libNAME.so.V(shr.o)} as the "SONAME", to be recorded
 
1498
   in the @code{Loader Section} of subsequent binaries
 
1499
   @item indicates whether @samp{libNAME.so.V(shr.o)} is 32 or 64 bit
 
1500
   @item lists all the public symbols exported by @samp{lib.so.V(shr.o)},
 
1501
   eventually decorated with the @code{@samp{weak} Keyword}
 
1502
   @item is necessary for shared linking against @samp{lib.so.V(shr.o)}
 
1503
   @end itemize
 
1504
  @end itemize
 
1505
  A symbolic link using the @samp{libNAME.so} filename scheme is created:
 
1506
  @itemize @bullet
 
1507
  @item pointing to the @samp{libNAME.so.V} @code{Shared Archive Library} file
 
1508
  @item to permit the @code{ld Command} to find @samp{lib.so.V(shr.imp)} via
 
1509
  the @samp{-lNAME} argument (requires @code{Runtime Linking} to be enabled)
 
1510
  @item to permit dynamic loading of @samp{lib.so.V(shr.o)} without the need
 
1511
  to specify the version number via @code{dlopen("libNAME.so(shr.o)",
 
1512
  RTLD_MEMBER)}
 
1513
  @end itemize
 
1514
@end table
 
1515
 
 
1516
As long as static library creation is enabled, upon:
 
1517
@table @code
 
1518
@item --with-aix-soname=svr4
 
1519
 A @code{Static Archive Library} is created:
 
1520
 @itemize @bullet
 
1521
 @item using the @samp{libNAME.a} filename scheme
 
1522
 @item with all the @code{Static Object} files as archive members, which
 
1523
  @itemize @minus
 
1524
   @item are used for static linking
 
1525
  @end itemize
 
1526
 @end itemize
 
1527
@end table
 
1528
 
 
1529
While the aix-soname=@samp{svr4} option does not create @code{Shared Object}
 
1530
files as members of unversioned @code{Archive Library} files any more, package
 
1531
managers still are responsible to
 
1532
@uref{./specific.html#TransferAixShobj,,transfer} @code{Shared Object} files
 
1533
found as member of a previously installed unversioned @code{Archive Library}
 
1534
file into the newly installed @code{Archive Library} file with the same
 
1535
filename.
 
1536
 
 
1537
@emph{WARNING:} Creating @code{Shared Object} files with @code{Runtime Linking}
 
1538
enabled may bloat the TOC, eventually leading to @code{TOC overflow} errors,
 
1539
requiring the use of either the @option{-Wl,-bbigtoc} linker flag (seen to
 
1540
break with the @code{GDB} debugger) or some of the TOC-related compiler flags,
 
1541
@ifnothtml
 
1542
@xref{RS/6000 and PowerPC Options,, RS/6000 and PowerPC Options, gcc,
 
1543
Using the GNU Compiler Collection (GCC)}.
 
1544
@end ifnothtml
 
1545
@ifhtml
 
1546
see ``RS/6000 and PowerPC Options'' in the main manual.
 
1547
@end ifhtml
 
1548
 
 
1549
@option{--with-aix-soname} is currently supported by @samp{libgcc_s} only, so
 
1550
this option is still experimental and not for normal use yet.
 
1551
 
 
1552
Default is the traditional behavior @option{--with-aix-soname=@samp{aix}}.
 
1553
 
 
1554
@item --enable-languages=@var{lang1},@var{lang2},@dots{}
 
1555
Specify that only a particular subset of compilers and
 
1556
their runtime libraries should be built.  For a list of valid values for
 
1557
@var{langN} you can issue the following command in the
 
1558
@file{gcc} directory of your GCC source tree:@*
 
1559
@smallexample
 
1560
grep ^language= */config-lang.in
 
1561
@end smallexample
 
1562
Currently, you can use any of the following:
 
1563
@code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran},
 
1564
@code{go}, @code{java}, @code{jit}, @code{lto}, @code{objc}, @code{obj-c++}.
 
1565
Building the Ada compiler has special requirements, see below.
 
1566
If you do not pass this flag, or specify the option @code{all}, then all
 
1567
default languages available in the @file{gcc} sub-tree will be configured.
 
1568
Ada, Go, Jit, and Objective-C++ are not default languages.  LTO is not a
 
1569
default language, but is built by default because @option{--enable-lto} is
 
1570
enabled by default.  The other languages are default languages.
 
1571
 
 
1572
@item --enable-stage1-languages=@var{lang1},@var{lang2},@dots{}
 
1573
Specify that a particular subset of compilers and their runtime
 
1574
libraries should be built with the system C compiler during stage 1 of
 
1575
the bootstrap process, rather than only in later stages with the
 
1576
bootstrapped C compiler.  The list of valid values is the same as for
 
1577
@option{--enable-languages}, and the option @code{all} will select all
 
1578
of the languages enabled by @option{--enable-languages}.  This option is
 
1579
primarily useful for GCC development; for instance, when a development
 
1580
version of the compiler cannot bootstrap due to compiler bugs, or when
 
1581
one is debugging front ends other than the C front end.  When this
 
1582
option is used, one can then build the target libraries for the
 
1583
specified languages with the stage-1 compiler by using @command{make
 
1584
stage1-bubble all-target}, or run the testsuite on the stage-1 compiler
 
1585
for the specified languages using @command{make stage1-start check-gcc}.
 
1586
 
 
1587
@item --disable-libada
 
1588
Specify that the run-time libraries and tools used by GNAT should not
 
1589
be built.  This can be useful for debugging, or for compatibility with
 
1590
previous Ada build procedures, when it was required to explicitly
 
1591
do a @samp{make -C gcc gnatlib_and_tools}.
 
1592
 
 
1593
@item --disable-libsanitizer
 
1594
Specify that the run-time libraries for the various sanitizers should
 
1595
not be built.
 
1596
 
 
1597
@item --disable-libssp
 
1598
Specify that the run-time libraries for stack smashing protection
 
1599
should not be built.
 
1600
 
 
1601
@item --disable-libquadmath
 
1602
Specify that the GCC quad-precision math library should not be built.
 
1603
On some systems, the library is required to be linkable when building
 
1604
the Fortran front end, unless @option{--disable-libquadmath-support}
 
1605
is used.
 
1606
 
 
1607
@item --disable-libquadmath-support
 
1608
Specify that the Fortran front end and @code{libgfortran} do not add
 
1609
support for @code{libquadmath} on systems supporting it.
 
1610
 
 
1611
@item --disable-libgomp
 
1612
Specify that the GNU Offloading and Multi Processing Runtime Library
 
1613
should not be built.
 
1614
 
 
1615
@item --disable-libvtv
 
1616
Specify that the run-time libraries used by vtable verification
 
1617
should not be built.
 
1618
 
 
1619
@item --with-dwarf2
 
1620
Specify that the compiler should
 
1621
use DWARF 2 debugging information as the default.
 
1622
 
 
1623
@item --with-advance-toolchain=@var{at}
 
1624
On 64-bit PowerPC Linux systems, configure the compiler to use the
 
1625
header files, library files, and the dynamic linker from the Advance
 
1626
Toolchain release @var{at} instead of the default versions that are
 
1627
provided by the Linux distribution.  In general, this option is
 
1628
intended for the developers of GCC, and it is not intended for general
 
1629
use.
 
1630
 
 
1631
@item --enable-targets=all
 
1632
@itemx --enable-targets=@var{target_list}
 
1633
Some GCC targets, e.g.@: powerpc64-linux, build bi-arch compilers.
 
1634
These are compilers that are able to generate either 64-bit or 32-bit
 
1635
code.  Typically, the corresponding 32-bit target, e.g.@:
 
1636
powerpc-linux for powerpc64-linux, only generates 32-bit code.  This
 
1637
option enables the 32-bit target to be a bi-arch compiler, which is
 
1638
useful when you want a bi-arch compiler that defaults to 32-bit, and
 
1639
you are building a bi-arch or multi-arch binutils in a combined tree.
 
1640
On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
 
1641
defaulted to o32.
 
1642
Currently, this option only affects sparc-linux, powerpc-linux, x86-linux,
 
1643
mips-linux and s390-linux.
 
1644
 
 
1645
@item --enable-default-pie
 
1646
Turn on @option{-fPIE} and @option{-pie} by default.
 
1647
 
 
1648
@item --enable-secureplt
 
1649
This option enables @option{-msecure-plt} by default for powerpc-linux.
 
1650
@ifnothtml
 
1651
@xref{RS/6000 and PowerPC Options,, RS/6000 and PowerPC Options, gcc,
 
1652
Using the GNU Compiler Collection (GCC)},
 
1653
@end ifnothtml
 
1654
@ifhtml
 
1655
See ``RS/6000 and PowerPC Options'' in the main manual
 
1656
@end ifhtml
 
1657
 
 
1658
@item --enable-default-ssp
 
1659
Turn on @option{-fstack-protector-strong} by default.
 
1660
 
 
1661
@item --enable-cld
 
1662
This option enables @option{-mcld} by default for 32-bit x86 targets.
 
1663
@ifnothtml
 
1664
@xref{i386 and x86-64 Options,, i386 and x86-64 Options, gcc,
 
1665
Using the GNU Compiler Collection (GCC)},
 
1666
@end ifnothtml
 
1667
@ifhtml
 
1668
See ``i386 and x86-64 Options'' in the main manual
 
1669
@end ifhtml
 
1670
 
 
1671
@item --enable-win32-registry
 
1672
@itemx --enable-win32-registry=@var{key}
 
1673
@itemx --disable-win32-registry
 
1674
The @option{--enable-win32-registry} option enables Microsoft Windows-hosted GCC
 
1675
to look up installations paths in the registry using the following key:
 
1676
 
 
1677
@smallexample
 
1678
@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}}
 
1679
@end smallexample
 
1680
 
 
1681
@var{key} defaults to GCC version number, and can be overridden by the
 
1682
@option{--enable-win32-registry=@var{key}} option.  Vendors and distributors
 
1683
who use custom installers are encouraged to provide a different key,
 
1684
perhaps one comprised of vendor name and GCC version number, to
 
1685
avoid conflict with existing installations.  This feature is enabled
 
1686
by default, and can be disabled by @option{--disable-win32-registry}
 
1687
option.  This option has no effect on the other hosts.
 
1688
 
 
1689
@item --nfp
 
1690
Specify that the machine does not have a floating point unit.  This
 
1691
option only applies to @samp{m68k-sun-sunos@var{n}}.  On any other
 
1692
system, @option{--nfp} has no effect.
 
1693
 
 
1694
@item --enable-werror
 
1695
@itemx --disable-werror
 
1696
@itemx --enable-werror=yes
 
1697
@itemx --enable-werror=no
 
1698
When you specify this option, it controls whether certain files in the
 
1699
compiler are built with @option{-Werror} in bootstrap stage2 and later.
 
1700
If you don't specify it, @option{-Werror} is turned on for the main
 
1701
development trunk.  However it defaults to off for release branches and
 
1702
final releases.  The specific files which get @option{-Werror} are
 
1703
controlled by the Makefiles.
 
1704
 
 
1705
@item --enable-checking
 
1706
@itemx --enable-checking=@var{list}
 
1707
When you specify this option, the compiler is built to perform internal
 
1708
consistency checks of the requested complexity.  This does not change the
 
1709
generated code, but adds error checking within the compiler.  This will
 
1710
slow down the compiler and may only work properly if you are building
 
1711
the compiler with GCC@.  This is @samp{yes} by default when building
 
1712
from SVN or snapshots, but @samp{release} for releases.  The default
 
1713
for building the stage1 compiler is @samp{yes}.  More control
 
1714
over the checks may be had by specifying @var{list}.  The categories of
 
1715
checks available are @samp{yes} (most common checks
 
1716
@samp{assert,misc,tree,gc,rtlflag,runtime}), @samp{no} (no checks at
 
1717
all), @samp{all} (all but @samp{valgrind}), @samp{release} (cheapest
 
1718
checks @samp{assert,runtime}) or @samp{none} (same as @samp{no}).
 
1719
Individual checks can be enabled with these flags @samp{assert},
 
1720
@samp{df}, @samp{fold}, @samp{gc}, @samp{gcac} @samp{misc}, @samp{rtl},
 
1721
@samp{rtlflag}, @samp{runtime}, @samp{tree}, and @samp{valgrind}.
 
1722
 
 
1723
The @samp{valgrind} check requires the external @command{valgrind}
 
1724
simulator, available from @uref{http://valgrind.org/}.  The
 
1725
@samp{df}, @samp{rtl}, @samp{gcac} and @samp{valgrind} checks are very expensive.
 
1726
To disable all checking, @samp{--disable-checking} or
 
1727
@samp{--enable-checking=none} must be explicitly requested.  Disabling
 
1728
assertions will make the compiler and runtime slightly faster but
 
1729
increase the risk of undetected internal errors causing wrong code to be
 
1730
generated.
 
1731
 
 
1732
@item --disable-stage1-checking
 
1733
@itemx --enable-stage1-checking
 
1734
@itemx --enable-stage1-checking=@var{list}
 
1735
If no @option{--enable-checking} option is specified the stage1
 
1736
compiler will be built with @samp{yes} checking enabled, otherwise
 
1737
the stage1 checking flags are the same as specified by
 
1738
@option{--enable-checking}.  To build the stage1 compiler with
 
1739
different checking options use @option{--enable-stage1-checking}.
 
1740
The list of checking options is the same as for @option{--enable-checking}.
 
1741
If your system is too slow or too small to bootstrap a released compiler
 
1742
with checking for stage1 enabled, you can use @samp{--disable-stage1-checking}
 
1743
to disable checking for the stage1 compiler.
 
1744
 
 
1745
@item --enable-coverage
 
1746
@itemx --enable-coverage=@var{level}
 
1747
With this option, the compiler is built to collect self coverage
 
1748
information, every time it is run.  This is for internal development
 
1749
purposes, and only works when the compiler is being built with gcc.  The
 
1750
@var{level} argument controls whether the compiler is built optimized or
 
1751
not, values are @samp{opt} and @samp{noopt}.  For coverage analysis you
 
1752
want to disable optimization, for performance analysis you want to
 
1753
enable optimization.  When coverage is enabled, the default level is
 
1754
without optimization.
 
1755
 
 
1756
@item --enable-gather-detailed-mem-stats
 
1757
When this option is specified more detailed information on memory
 
1758
allocation is gathered.  This information is printed when using
 
1759
@option{-fmem-report}.
 
1760
 
 
1761
@item --enable-valgrind-annotations
 
1762
Mark selected memory related operations in the compiler when run under
 
1763
valgrind to suppress false positives.
 
1764
 
 
1765
@item --enable-nls
 
1766
@itemx --disable-nls
 
1767
The @option{--enable-nls} option enables Native Language Support (NLS),
 
1768
which lets GCC output diagnostics in languages other than American
 
1769
English.  Native Language Support is enabled by default if not doing a
 
1770
canadian cross build.  The @option{--disable-nls} option disables NLS@.
 
1771
 
 
1772
@item --with-included-gettext
 
1773
If NLS is enabled, the @option{--with-included-gettext} option causes the build
 
1774
procedure to prefer its copy of GNU @command{gettext}.
 
1775
 
 
1776
@item --with-catgets
 
1777
If NLS is enabled, and if the host lacks @code{gettext} but has the
 
1778
inferior @code{catgets} interface, the GCC build procedure normally
 
1779
ignores @code{catgets} and instead uses GCC's copy of the GNU
 
1780
@code{gettext} library.  The @option{--with-catgets} option causes the
 
1781
build procedure to use the host's @code{catgets} in this situation.
 
1782
 
 
1783
@item --with-libiconv-prefix=@var{dir}
 
1784
Search for libiconv header files in @file{@var{dir}/include} and
 
1785
libiconv library files in @file{@var{dir}/lib}.
 
1786
 
 
1787
@item --enable-obsolete
 
1788
Enable configuration for an obsoleted system.  If you attempt to
 
1789
configure GCC for a system (build, host, or target) which has been
 
1790
obsoleted, and you do not specify this flag, configure will halt with an
 
1791
error message.
 
1792
 
 
1793
All support for systems which have been obsoleted in one release of GCC
 
1794
is removed entirely in the next major release, unless someone steps
 
1795
forward to maintain the port.
 
1796
 
 
1797
@item --enable-decimal-float
 
1798
@itemx --enable-decimal-float=yes
 
1799
@itemx --enable-decimal-float=no
 
1800
@itemx --enable-decimal-float=bid
 
1801
@itemx --enable-decimal-float=dpd
 
1802
@itemx --disable-decimal-float
 
1803
Enable (or disable) support for the C decimal floating point extension
 
1804
that is in the IEEE 754-2008 standard.  This is enabled by default only
 
1805
on PowerPC, i386, and x86_64 GNU/Linux systems.  Other systems may also
 
1806
support it, but require the user to specifically enable it.  You can
 
1807
optionally control which decimal floating point format is used (either
 
1808
@samp{bid} or @samp{dpd}).  The @samp{bid} (binary integer decimal)
 
1809
format is default on i386 and x86_64 systems, and the @samp{dpd}
 
1810
(densely packed decimal) format is default on PowerPC systems.
 
1811
 
 
1812
@item --enable-fixed-point
 
1813
@itemx --disable-fixed-point
 
1814
Enable (or disable) support for C fixed-point arithmetic.
 
1815
This option is enabled by default for some targets (such as MIPS) which
 
1816
have hardware-support for fixed-point operations.  On other targets, you
 
1817
may enable this option manually.
 
1818
 
 
1819
@item --with-long-double-128
 
1820
Specify if @code{long double} type should be 128-bit by default on selected
 
1821
GNU/Linux architectures.  If using @code{--without-long-double-128},
 
1822
@code{long double} will be by default 64-bit, the same as @code{double} type.
 
1823
When neither of these configure options are used, the default will be
 
1824
128-bit @code{long double} when built against GNU C Library 2.4 and later,
 
1825
64-bit @code{long double} otherwise.
 
1826
 
 
1827
@item --enable-fdpic
 
1828
On SH Linux systems, generate ELF FDPIC code.
 
1829
 
 
1830
@item --with-gmp=@var{pathname}
 
1831
@itemx --with-gmp-include=@var{pathname}
 
1832
@itemx --with-gmp-lib=@var{pathname}
 
1833
@itemx --with-mpfr=@var{pathname}
 
1834
@itemx --with-mpfr-include=@var{pathname}
 
1835
@itemx --with-mpfr-lib=@var{pathname}
 
1836
@itemx --with-mpc=@var{pathname}
 
1837
@itemx --with-mpc-include=@var{pathname}
 
1838
@itemx --with-mpc-lib=@var{pathname}
 
1839
If you want to build GCC but do not have the GMP library, the MPFR
 
1840
library and/or the MPC library installed in a standard location and
 
1841
do not have their sources present in the GCC source tree then you
 
1842
can explicitly specify the directory where they are installed
 
1843
(@samp{--with-gmp=@var{gmpinstalldir}},
 
1844
@samp{--with-mpfr=@/@var{mpfrinstalldir}},
 
1845
@samp{--with-mpc=@/@var{mpcinstalldir}}).  The
 
1846
@option{--with-gmp=@/@var{gmpinstalldir}} option is shorthand for
 
1847
@option{--with-gmp-lib=@/@var{gmpinstalldir}/lib} and
 
1848
@option{--with-gmp-include=@/@var{gmpinstalldir}/include}.  Likewise the
 
1849
@option{--with-mpfr=@/@var{mpfrinstalldir}} option is shorthand for
 
1850
@option{--with-mpfr-lib=@/@var{mpfrinstalldir}/lib} and
 
1851
@option{--with-mpfr-include=@/@var{mpfrinstalldir}/include}, also the
 
1852
@option{--with-mpc=@/@var{mpcinstalldir}} option is shorthand for
 
1853
@option{--with-mpc-lib=@/@var{mpcinstalldir}/lib} and
 
1854
@option{--with-mpc-include=@/@var{mpcinstalldir}/include}.  If these
 
1855
shorthand assumptions are not correct, you can use the explicit
 
1856
include and lib options directly.  You might also need to ensure the
 
1857
shared libraries can be found by the dynamic linker when building and
 
1858
using GCC, for example by setting the runtime shared library path
 
1859
variable (@env{LD_LIBRARY_PATH} on GNU/Linux and Solaris systems).
 
1860
 
 
1861
These flags are applicable to the host platform only.  When building
 
1862
a cross compiler, they will not be used to configure target libraries.
 
1863
 
 
1864
@item --with-isl=@var{pathname}
 
1865
@itemx --with-isl-include=@var{pathname}
 
1866
@itemx --with-isl-lib=@var{pathname}
 
1867
If you do not have the isl library installed in a standard location and you
 
1868
want to build GCC, you can explicitly specify the directory where it is
 
1869
installed (@samp{--with-isl=@/@var{islinstalldir}}). The
 
1870
@option{--with-isl=@/@var{islinstalldir}} option is shorthand for
 
1871
@option{--with-isl-lib=@/@var{islinstalldir}/lib} and
 
1872
@option{--with-isl-include=@/@var{islinstalldir}/include}. If this
 
1873
shorthand assumption is not correct, you can use the explicit
 
1874
include and lib options directly.
 
1875
 
 
1876
These flags are applicable to the host platform only.  When building
 
1877
a cross compiler, they will not be used to configure target libraries.
 
1878
 
 
1879
@item --with-stage1-ldflags=@var{flags}
 
1880
This option may be used to set linker flags to be used when linking
 
1881
stage 1 of GCC.  These are also used when linking GCC if configured with
 
1882
@option{--disable-bootstrap}.  If @option{--with-stage1-libs} is not set to a
 
1883
value, then the default is @samp{-static-libstdc++ -static-libgcc}, if
 
1884
supported.
 
1885
 
 
1886
@item --with-stage1-libs=@var{libs}
 
1887
This option may be used to set libraries to be used when linking stage 1
 
1888
of GCC.  These are also used when linking GCC if configured with
 
1889
@option{--disable-bootstrap}.
 
1890
 
 
1891
@item --with-boot-ldflags=@var{flags}
 
1892
This option may be used to set linker flags to be used when linking
 
1893
stage 2 and later when bootstrapping GCC.  If --with-boot-libs
 
1894
is not is set to a value, then the default is
 
1895
@samp{-static-libstdc++ -static-libgcc}.
 
1896
 
 
1897
@item --with-boot-libs=@var{libs}
 
1898
This option may be used to set libraries to be used when linking stage 2
 
1899
and later when bootstrapping GCC.
 
1900
 
 
1901
@item --with-debug-prefix-map=@var{map}
 
1902
Convert source directory names using @option{-fdebug-prefix-map} when
 
1903
building runtime libraries.  @samp{@var{map}} is a space-separated
 
1904
list of maps of the form @samp{@var{old}=@var{new}}.
 
1905
 
 
1906
@item --enable-linker-build-id
 
1907
Tells GCC to pass @option{--build-id} option to the linker for all final
 
1908
links (links performed without the @option{-r} or @option{--relocatable}
 
1909
option), if the linker supports it.  If you specify
 
1910
@option{--enable-linker-build-id}, but your linker does not
 
1911
support @option{--build-id} option, a warning is issued and the
 
1912
@option{--enable-linker-build-id} option is ignored.  The default is off.
 
1913
 
 
1914
@item --with-linker-hash-style=@var{choice}
 
1915
Tells GCC to pass @option{--hash-style=@var{choice}} option to the
 
1916
linker for all final links. @var{choice} can be one of
 
1917
@samp{sysv}, @samp{gnu}, and @samp{both} where @samp{sysv} is the default.
 
1918
 
 
1919
@item --enable-gnu-unique-object
 
1920
@itemx --disable-gnu-unique-object
 
1921
Tells GCC to use the gnu_unique_object relocation for C++ template
 
1922
static data members and inline function local statics.  Enabled by
 
1923
default for a toolchain with an assembler that accepts it and
 
1924
GLIBC 2.11 or above, otherwise disabled.
 
1925
 
 
1926
@item --with-diagnostics-color=@var{choice}
 
1927
Tells GCC to use @var{choice} as the default for @option{-fdiagnostics-color=}
 
1928
option (if not used explicitly on the command line).  @var{choice}
 
1929
can be one of @samp{never}, @samp{auto}, @samp{always}, and @samp{auto-if-env}
 
1930
where @samp{auto} is the default.  @samp{auto-if-env} means that
 
1931
@option{-fdiagnostics-color=auto} will be the default if @code{GCC_COLORS}
 
1932
is present and non-empty in the environment, and
 
1933
@option{-fdiagnostics-color=never} otherwise.
 
1934
 
 
1935
@item --enable-lto
 
1936
@itemx --disable-lto
 
1937
Enable support for link-time optimization (LTO).  This is enabled by
 
1938
default, and may be disabled using @option{--disable-lto}.
 
1939
 
 
1940
@item --enable-linker-plugin-configure-flags=FLAGS
 
1941
@itemx --enable-linker-plugin-flags=FLAGS
 
1942
By default, linker plugins (such as the LTO plugin) are built for the
 
1943
host system architecture.  For the case that the linker has a
 
1944
different (but run-time compatible) architecture, these flags can be
 
1945
specified to build plugins that are compatible to the linker.  For
 
1946
example, if you are building GCC for a 64-bit x86_64
 
1947
(@samp{x86_64-unknown-linux-gnu}) host system, but have a 32-bit x86
 
1948
GNU/Linux (@samp{i686-pc-linux-gnu}) linker executable (which is
 
1949
executable on the former system), you can configure GCC as follows for
 
1950
getting compatible linker plugins:
 
1951
 
 
1952
@smallexample
 
1953
% @var{srcdir}/configure \
 
1954
    --host=x86_64-unknown-linux-gnu \
 
1955
    --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
 
1956
    --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
 
1957
@end smallexample
 
1958
 
 
1959
@item --with-plugin-ld=@var{pathname}
 
1960
Enable an alternate linker to be used at link-time optimization (LTO)
 
1961
link time when @option{-fuse-linker-plugin} is enabled.
 
1962
This linker should have plugin support such as gold starting with
 
1963
version 2.20 or GNU ld starting with version 2.21.
 
1964
See @option{-fuse-linker-plugin} for details.
 
1965
 
 
1966
@item --enable-canonical-system-headers
 
1967
@itemx --disable-canonical-system-headers
 
1968
Enable system header path canonicalization for @file{libcpp}.  This can
 
1969
produce shorter header file paths in diagnostics and dependency output
 
1970
files, but these changed header paths may conflict with some compilation
 
1971
environments.  Enabled by default, and may be disabled using
 
1972
@option{--disable-canonical-system-headers}.
 
1973
 
 
1974
@item --with-glibc-version=@var{major}.@var{minor}
 
1975
Tell GCC that when the GNU C Library (glibc) is used on the target it
 
1976
will be version @var{major}.@var{minor} or later.  Normally this can
 
1977
be detected from the C library's header files, but this option may be
 
1978
needed when bootstrapping a cross toolchain without the header files
 
1979
available for building the initial bootstrap compiler.
 
1980
 
 
1981
If GCC is configured with some multilibs that use glibc and some that
 
1982
do not, this option applies only to the multilibs that use glibc.
 
1983
However, such configurations may not work well as not all the relevant
 
1984
configuration in GCC is on a per-multilib basis.
 
1985
 
 
1986
@item --enable-as-accelerator-for=@var{target}
 
1987
Build as offload target compiler. Specify offload host triple by @var{target}.
 
1988
 
 
1989
@item --enable-offload-targets=@var{target1}[=@var{path1}],@dots{},@var{targetN}[=@var{pathN}]
 
1990
Enable offloading to targets @var{target1}, @dots{}, @var{targetN}.
 
1991
Offload compilers are expected to be already installed.  Default search
 
1992
path for them is @file{@var{exec-prefix}}, but it can be changed by
 
1993
specifying paths @var{path1}, @dots{}, @var{pathN}.
 
1994
 
 
1995
@smallexample
 
1996
% @var{srcdir}/configure \
 
1997
    --enable-offload-target=i686-unknown-linux-gnu=/path/to/i686/compiler,x86_64-pc-linux-gnu
 
1998
@end smallexample
 
1999
 
 
2000
If @samp{hsa} is specified as one of the targets, the compiler will be
 
2001
built with support for HSA GPU accelerators.  Because the same
 
2002
compiler will emit the accelerator code, no path should be specified.
 
2003
 
 
2004
@item --with-hsa-runtime=@var{pathname}
 
2005
@itemx --with-hsa-runtime-include=@var{pathname}
 
2006
@itemx --with-hsa-runtime-lib=@var{pathname}
 
2007
 
 
2008
If you configure GCC with HSA offloading but do not have the HSA
 
2009
run-time library installed in a standard location then you can
 
2010
explicitly specify the directory where they are installed.  The
 
2011
@option{--with-hsa-runtime=@/@var{hsainstalldir}} option is a
 
2012
shorthand for
 
2013
@option{--with-hsa-runtime-lib=@/@var{hsainstalldir}/lib} and
 
2014
@option{--with-hsa-runtime-include=@/@var{hsainstalldir}/include}.
 
2015
 
 
2016
@item --with-hsa-kmt-lib=@var{pathname}
 
2017
 
 
2018
If you configure GCC with HSA offloading but do not have the HSA
 
2019
KMT library installed in a standard location then you can
 
2020
explicitly specify the directory where it resides.
 
2021
@end table
 
2022
 
 
2023
@subheading Cross-Compiler-Specific Options
 
2024
The following options only apply to building cross compilers.
 
2025
 
 
2026
@table @code
 
2027
@item --with-sysroot
 
2028
@itemx --with-sysroot=@var{dir}
 
2029
Tells GCC to consider @var{dir} as the root of a tree that contains
 
2030
(a subset of) the root filesystem of the target operating system.
 
2031
Target system headers, libraries and run-time object files will be
 
2032
searched for in there.  More specifically, this acts as if
 
2033
@option{--sysroot=@var{dir}} was added to the default options of the built
 
2034
compiler.  The specified directory is not copied into the
 
2035
install tree, unlike the options @option{--with-headers} and
 
2036
@option{--with-libs} that this option obsoletes.  The default value,
 
2037
in case @option{--with-sysroot} is not given an argument, is
 
2038
@option{$@{gcc_tooldir@}/sys-root}.  If the specified directory is a
 
2039
subdirectory of @option{$@{exec_prefix@}}, then it will be found relative to
 
2040
the GCC binaries if the installation tree is moved.
 
2041
 
 
2042
This option affects the system root for the compiler used to build
 
2043
target libraries (which runs on the build system) and the compiler newly
 
2044
installed with @code{make install}; it does not affect the compiler which is
 
2045
used to build GCC itself.
 
2046
 
 
2047
If you specify the @option{--with-native-system-header-dir=@var{dirname}}
 
2048
option then the compiler will search that directory within @var{dirname} for
 
2049
native system headers rather than the default @file{/usr/include}.
 
2050
 
 
2051
@item --with-build-sysroot
 
2052
@itemx --with-build-sysroot=@var{dir}
 
2053
Tells GCC to consider @var{dir} as the system root (see
 
2054
@option{--with-sysroot}) while building target libraries, instead of
 
2055
the directory specified with @option{--with-sysroot}.  This option is
 
2056
only useful when you are already using @option{--with-sysroot}.  You
 
2057
can use @option{--with-build-sysroot} when you are configuring with
 
2058
@option{--prefix} set to a directory that is different from the one in
 
2059
which you are installing GCC and your target libraries.
 
2060
 
 
2061
This option affects the system root for the compiler used to build
 
2062
target libraries (which runs on the build system); it does not affect
 
2063
the compiler which is used to build GCC itself.
 
2064
 
 
2065
If you specify the @option{--with-native-system-header-dir=@var{dirname}}
 
2066
option then the compiler will search that directory within @var{dirname} for
 
2067
native system headers rather than the default @file{/usr/include}.
 
2068
 
 
2069
@item --with-headers
 
2070
@itemx --with-headers=@var{dir}
 
2071
Deprecated in favor of @option{--with-sysroot}.
 
2072
Specifies that target headers are available when building a cross compiler.
 
2073
The @var{dir} argument specifies a directory which has the target include
 
2074
files.  These include files will be copied into the @file{gcc} install
 
2075
directory.  @emph{This option with the @var{dir} argument is required} when
 
2076
building a cross compiler, if @file{@var{prefix}/@var{target}/sys-include}
 
2077
doesn't pre-exist.  If @file{@var{prefix}/@var{target}/sys-include} does
 
2078
pre-exist, the @var{dir} argument may be omitted.  @command{fixincludes}
 
2079
will be run on these files to make them compatible with GCC@.
 
2080
 
 
2081
@item --without-headers
 
2082
Tells GCC not use any target headers from a libc when building a cross
 
2083
compiler.  When crossing to GNU/Linux, you need the headers so GCC
 
2084
can build the exception handling for libgcc.
 
2085
 
 
2086
@item --with-libs
 
2087
@itemx --with-libs="@var{dir1} @var{dir2} @dots{} @var{dirN}"
 
2088
Deprecated in favor of @option{--with-sysroot}.
 
2089
Specifies a list of directories which contain the target runtime
 
2090
libraries.  These libraries will be copied into the @file{gcc} install
 
2091
directory.  If the directory list is omitted, this option has no
 
2092
effect.
 
2093
 
 
2094
@item --with-newlib
 
2095
Specifies that @samp{newlib} is
 
2096
being used as the target C library.  This causes @code{__eprintf} to be
 
2097
omitted from @file{libgcc.a} on the assumption that it will be provided by
 
2098
@samp{newlib}.
 
2099
 
 
2100
@item --with-avrlibc
 
2101
Specifies that @samp{AVR-Libc} is
 
2102
being used as the target C library.  This causes float support
 
2103
functions like @code{__addsf3} to be omitted from @file{libgcc.a} on
 
2104
the assumption that it will be provided by @file{libm.a}.  For more
 
2105
technical details, cf. @uref{http://gcc.gnu.org/PR54461,,PR54461}.
 
2106
This option is only supported for the AVR target.  It is not supported for
 
2107
RTEMS configurations, which currently use newlib.  The option is
 
2108
supported since version 4.7.2 and is the default in 4.8.0 and newer.
 
2109
 
 
2110
@item --with-nds32-lib=@var{library}
 
2111
Specifies that @var{library} setting is used for building @file{libgcc.a}.
 
2112
Currently, the valid @var{library} is @samp{newlib} or @samp{mculib}.
 
2113
This option is only supported for the NDS32 target.
 
2114
 
 
2115
@item --with-build-time-tools=@var{dir}
 
2116
Specifies where to find the set of target tools (assembler, linker, etc.)
 
2117
that will be used while building GCC itself.  This option can be useful
 
2118
if the directory layouts are different between the system you are building
 
2119
GCC on, and the system where you will deploy it.
 
2120
 
 
2121
For example, on an @samp{ia64-hp-hpux} system, you may have the GNU
 
2122
assembler and linker in @file{/usr/bin}, and the native tools in a
 
2123
different path, and build a toolchain that expects to find the
 
2124
native tools in @file{/usr/bin}.
 
2125
 
 
2126
When you use this option, you should ensure that @var{dir} includes
 
2127
@command{ar}, @command{as}, @command{ld}, @command{nm},
 
2128
@command{ranlib} and @command{strip} if necessary, and possibly
 
2129
@command{objdump}.  Otherwise, GCC may use an inconsistent set of
 
2130
tools.
 
2131
@end table
 
2132
 
 
2133
@subheading Java-Specific Options
 
2134
 
 
2135
The following option applies to the build of the Java front end.
 
2136
 
 
2137
@table @code
 
2138
@item --disable-libgcj
 
2139
Specify that the run-time libraries
 
2140
used by GCJ should not be built.  This is useful in case you intend
 
2141
to use GCJ with some other run-time, or you're going to install it
 
2142
separately, or it just happens not to build on your particular
 
2143
machine.  In general, if the Java front end is enabled, the GCJ
 
2144
libraries will be enabled too, unless they're known to not work on
 
2145
the target platform.  If GCJ is enabled but @samp{libgcj} isn't built, you
 
2146
may need to port it; in this case, before modifying the top-level
 
2147
@file{configure.ac} so that @samp{libgcj} is enabled by default on this platform,
 
2148
you may use @option{--enable-libgcj} to override the default.
 
2149
 
 
2150
@end table
 
2151
 
 
2152
The following options apply to building @samp{libgcj}.
 
2153
 
 
2154
@subsubheading General Options
 
2155
 
 
2156
@table @code
 
2157
@item --enable-java-maintainer-mode
 
2158
By default the @samp{libjava} build will not attempt to compile the
 
2159
@file{.java} source files to @file{.class}.  Instead, it will use the
 
2160
@file{.class} files from the source tree.  If you use this option you
 
2161
must have executables named @command{ecj1} and @command{gjavah} in your path
 
2162
for use by the build.  You must use this option if you intend to
 
2163
modify any @file{.java} files in @file{libjava}.
 
2164
 
 
2165
@item --with-java-home=@var{dirname}
 
2166
This @samp{libjava} option overrides the default value of the
 
2167
@samp{java.home} system property.  It is also used to set
 
2168
@samp{sun.boot.class.path} to @file{@var{dirname}/lib/rt.jar}.  By
 
2169
default @samp{java.home} is set to @file{@var{prefix}} and
 
2170
@samp{sun.boot.class.path} to
 
2171
@file{@var{datadir}/java/libgcj-@var{version}.jar}.
 
2172
 
 
2173
@item --with-ecj-jar=@var{filename}
 
2174
This option can be used to specify the location of an external jar
 
2175
file containing the Eclipse Java compiler.  A specially modified
 
2176
version of this compiler is used by @command{gcj} to parse
 
2177
@file{.java} source files.  If this option is given, the
 
2178
@samp{libjava} build will create and install an @file{ecj1} executable
 
2179
which uses this jar file at runtime.
 
2180
 
 
2181
If this option is not given, but an @file{ecj.jar} file is found in
 
2182
the topmost source tree at configure time, then the @samp{libgcj}
 
2183
build will create and install @file{ecj1}, and will also install the
 
2184
discovered @file{ecj.jar} into a suitable place in the install tree.
 
2185
 
 
2186
If @file{ecj1} is not installed, then the user will have to supply one
 
2187
on his path in order for @command{gcj} to properly parse @file{.java}
 
2188
source files.  A suitable jar is available from
 
2189
@uref{ftp://sourceware.org/pub/java/}.
 
2190
 
 
2191
@item --disable-getenv-properties
 
2192
Don't set system properties from @env{GCJ_PROPERTIES}.
 
2193
 
 
2194
@item --enable-hash-synchronization
 
2195
Use a global hash table for monitor locks.  Ordinarily,
 
2196
@samp{libgcj}'s @samp{configure} script automatically makes
 
2197
the correct choice for this option for your platform.  Only use
 
2198
this if you know you need the library to be configured differently.
 
2199
 
 
2200
@item --enable-interpreter
 
2201
Enable the Java interpreter.  The interpreter is automatically
 
2202
enabled by default on all platforms that support it.  This option
 
2203
is really only useful if you want to disable the interpreter
 
2204
(using @option{--disable-interpreter}).
 
2205
 
 
2206
@item --disable-java-net
 
2207
Disable java.net.  This disables the native part of java.net only,
 
2208
using non-functional stubs for native method implementations.
 
2209
 
 
2210
@item --disable-jvmpi
 
2211
Disable JVMPI support.
 
2212
 
 
2213
@item --disable-libgcj-bc
 
2214
Disable BC ABI compilation of certain parts of libgcj.  By default,
 
2215
some portions of libgcj are compiled with @option{-findirect-dispatch}
 
2216
and @option{-fno-indirect-classes}, allowing them to be overridden at
 
2217
run-time.
 
2218
 
 
2219
If @option{--disable-libgcj-bc} is specified, libgcj is built without
 
2220
these options.  This allows the compile-time linker to resolve
 
2221
dependencies when statically linking to libgcj.  However it makes it
 
2222
impossible to override the affected portions of libgcj at run-time.
 
2223
 
 
2224
@item --enable-reduced-reflection
 
2225
Build most of libgcj with @option{-freduced-reflection}.  This reduces
 
2226
the size of libgcj at the expense of not being able to do accurate
 
2227
reflection on the classes it contains.  This option is safe if you
 
2228
know that code using libgcj will never use reflection on the standard
 
2229
runtime classes in libgcj (including using serialization, RMI or CORBA).
 
2230
 
 
2231
@item --with-ecos
 
2232
Enable runtime eCos target support.
 
2233
 
 
2234
@item --without-libffi
 
2235
Don't use @samp{libffi}.  This will disable the interpreter and JNI
 
2236
support as well, as these require @samp{libffi} to work.
 
2237
 
 
2238
@item --enable-libgcj-debug
 
2239
Enable runtime debugging code.
 
2240
 
 
2241
@item --enable-libgcj-multifile
 
2242
If specified, causes all @file{.java} source files to be
 
2243
compiled into @file{.class} files in one invocation of
 
2244
@samp{gcj}.  This can speed up build time, but is more
 
2245
resource-intensive.  If this option is unspecified or
 
2246
disabled, @samp{gcj} is invoked once for each @file{.java}
 
2247
file to compile into a @file{.class} file.
 
2248
 
 
2249
@item --with-libiconv-prefix=DIR
 
2250
Search for libiconv in @file{DIR/include} and @file{DIR/lib}.
 
2251
 
 
2252
@item --enable-sjlj-exceptions
 
2253
Force use of the @code{setjmp}/@code{longjmp}-based scheme for exceptions.
 
2254
@samp{configure} ordinarily picks the correct value based on the platform.
 
2255
Only use this option if you are sure you need a different setting.
 
2256
 
 
2257
@item --with-system-zlib
 
2258
Use installed @samp{zlib} rather than that included with GCC@.
 
2259
 
 
2260
@item --with-win32-nlsapi=ansi, unicows or unicode
 
2261
Indicates how MinGW @samp{libgcj} translates between UNICODE
 
2262
characters and the Win32 API@.
 
2263
 
 
2264
@item --enable-java-home
 
2265
If enabled, this creates a JPackage compatible SDK environment during install.
 
2266
Note that if --enable-java-home is used, --with-arch-directory=ARCH must also
 
2267
be specified.
 
2268
 
 
2269
@item --with-arch-directory=ARCH
 
2270
Specifies the name to use for the @file{jre/lib/ARCH} directory in the SDK
 
2271
environment created when --enable-java-home is passed. Typical names for this
 
2272
directory include i386, amd64, ia64, etc.
 
2273
 
 
2274
@item --with-os-directory=DIR
 
2275
Specifies the OS directory for the SDK include directory. This is set to auto
 
2276
detect, and is typically 'linux'.
 
2277
 
 
2278
@item --with-origin-name=NAME
 
2279
Specifies the JPackage origin name. This defaults to the 'gcj' in
 
2280
java-1.5.0-gcj.
 
2281
 
 
2282
@item --with-arch-suffix=SUFFIX
 
2283
Specifies the suffix for the sdk directory. Defaults to the empty string.
 
2284
Examples include '.x86_64' in 'java-1.5.0-gcj-1.5.0.0.x86_64'.
 
2285
 
 
2286
@item --with-jvm-root-dir=DIR
 
2287
Specifies where to install the SDK. Default is $(prefix)/lib/jvm.
 
2288
 
 
2289
@item --with-jvm-jar-dir=DIR
 
2290
Specifies where to install jars. Default is $(prefix)/lib/jvm-exports.
 
2291
 
 
2292
@item --with-python-dir=DIR
 
2293
Specifies where to install the Python modules used for aot-compile. DIR should
 
2294
not include the prefix used in installation. For example, if the Python modules
 
2295
are to be installed in /usr/lib/python2.5/site-packages, then
 
2296
--with-python-dir=/lib/python2.5/site-packages should be passed. If this is
 
2297
not specified, then the Python modules are installed in $(prefix)/share/python.
 
2298
 
 
2299
@item --enable-aot-compile-rpm
 
2300
Adds aot-compile-rpm to the list of installed scripts.
 
2301
 
 
2302
@item --enable-browser-plugin
 
2303
Build the gcjwebplugin web browser plugin.
 
2304
 
 
2305
@item --enable-static-libjava
 
2306
Build static libraries in libjava. The default is to only build shared
 
2307
libraries.
 
2308
 
 
2309
@table @code
 
2310
@item ansi
 
2311
Use the single-byte @code{char} and the Win32 A functions natively,
 
2312
translating to and from UNICODE when using these functions.  If
 
2313
unspecified, this is the default.
 
2314
 
 
2315
@item unicows
 
2316
Use the @code{WCHAR} and Win32 W functions natively.  Adds
 
2317
@code{-lunicows} to @file{libgcj.spec} to link with @samp{libunicows}.
 
2318
@file{unicows.dll} needs to be deployed on Microsoft Windows 9X machines
 
2319
running built executables.  @file{libunicows.a}, an open-source
 
2320
import library around Microsoft's @code{unicows.dll}, is obtained from
 
2321
@uref{http://libunicows.sourceforge.net/}, which also gives details
 
2322
on getting @file{unicows.dll} from Microsoft.
 
2323
 
 
2324
@item unicode
 
2325
Use the @code{WCHAR} and Win32 W functions natively.  Does @emph{not}
 
2326
add @code{-lunicows} to @file{libgcj.spec}.  The built executables will
 
2327
only run on Microsoft Windows NT and above.
 
2328
@end table
 
2329
@end table
 
2330
 
 
2331
@subsubheading AWT-Specific Options
 
2332
 
 
2333
@table @code
 
2334
@item --with-x
 
2335
Use the X Window System.
 
2336
 
 
2337
@item --enable-java-awt=PEER(S)
 
2338
Specifies the AWT peer library or libraries to build alongside
 
2339
@samp{libgcj}.  If this option is unspecified or disabled, AWT
 
2340
will be non-functional.  Current valid values are @option{gtk} and
 
2341
@option{xlib}.  Multiple libraries should be separated by a
 
2342
comma (i.e.@: @option{--enable-java-awt=gtk,xlib}).
 
2343
 
 
2344
@item --enable-gtk-cairo
 
2345
Build the cairo Graphics2D implementation on GTK@.
 
2346
 
 
2347
@item --enable-java-gc=TYPE
 
2348
Choose garbage collector.  Defaults to @option{boehm} if unspecified.
 
2349
 
 
2350
@item --disable-gtktest
 
2351
Do not try to compile and run a test GTK+ program.
 
2352
 
 
2353
@item --disable-glibtest
 
2354
Do not try to compile and run a test GLIB program.
 
2355
 
 
2356
@item --with-libart-prefix=PFX
 
2357
Prefix where libart is installed (optional).
 
2358
 
 
2359
@item --with-libart-exec-prefix=PFX
 
2360
Exec prefix where libart is installed (optional).
 
2361
 
 
2362
@item --disable-libarttest
 
2363
Do not try to compile and run a test libart program.
 
2364
 
 
2365
@end table
 
2366
 
 
2367
@subsubheading Overriding @command{configure} test results
 
2368
 
 
2369
Sometimes, it might be necessary to override the result of some
 
2370
@command{configure} test, for example in order to ease porting to a new
 
2371
system or work around a bug in a test.  The toplevel @command{configure}
 
2372
script provides three variables for this:
 
2373
 
 
2374
@table @code
 
2375
 
 
2376
@item build_configargs
 
2377
@cindex @code{build_configargs}
 
2378
The contents of this variable is passed to all build @command{configure}
 
2379
scripts.
 
2380
 
 
2381
@item host_configargs
 
2382
@cindex @code{host_configargs}
 
2383
The contents of this variable is passed to all host @command{configure}
 
2384
scripts.
 
2385
 
 
2386
@item target_configargs
 
2387
@cindex @code{target_configargs}
 
2388
The contents of this variable is passed to all target @command{configure}
 
2389
scripts.
 
2390
 
 
2391
@end table
 
2392
 
 
2393
In order to avoid shell and @command{make} quoting issues for complex
 
2394
overrides, you can pass a setting for @env{CONFIG_SITE} and set
 
2395
variables in the site file.
 
2396
 
 
2397
@html
 
2398
<hr />
 
2399
<p>
 
2400
@end html
 
2401
@ifhtml
 
2402
@uref{./index.html,,Return to the GCC Installation page}
 
2403
@end ifhtml
 
2404
@end ifset
 
2405
 
 
2406
@c ***Building****************************************************************
 
2407
@ifnothtml
 
2408
@comment node-name,     next,          previous, up
 
2409
@node    Building, Testing, Configuration, Installing GCC
 
2410
@end ifnothtml
 
2411
@ifset buildhtml
 
2412
@ifnothtml
 
2413
@chapter Building
 
2414
@end ifnothtml
 
2415
@cindex Installing GCC: Building
 
2416
 
 
2417
Now that GCC is configured, you are ready to build the compiler and
 
2418
runtime libraries.
 
2419
 
 
2420
Some commands executed when making the compiler may fail (return a
 
2421
nonzero status) and be ignored by @command{make}.  These failures, which
 
2422
are often due to files that were not found, are expected, and can safely
 
2423
be ignored.
 
2424
 
 
2425
It is normal to have compiler warnings when compiling certain files.
 
2426
Unless you are a GCC developer, you can generally ignore these warnings
 
2427
unless they cause compilation to fail.  Developers should attempt to fix
 
2428
any warnings encountered, however they can temporarily continue past
 
2429
warnings-as-errors by specifying the configure flag
 
2430
@option{--disable-werror}.
 
2431
 
 
2432
On certain old systems, defining certain environment variables such as
 
2433
@env{CC} can interfere with the functioning of @command{make}.
 
2434
 
 
2435
If you encounter seemingly strange errors when trying to build the
 
2436
compiler in a directory other than the source directory, it could be
 
2437
because you have previously configured the compiler in the source
 
2438
directory.  Make sure you have done all the necessary preparations.
 
2439
 
 
2440
If you build GCC on a BSD system using a directory stored in an old System
 
2441
V file system, problems may occur in running @command{fixincludes} if the
 
2442
System V file system doesn't support symbolic links.  These problems
 
2443
result in a failure to fix the declaration of @code{size_t} in
 
2444
@file{sys/types.h}.  If you find that @code{size_t} is a signed type and
 
2445
that type mismatches occur, this could be the cause.
 
2446
 
 
2447
The solution is not to use such a directory for building GCC@.
 
2448
 
 
2449
Similarly, when building from SVN or snapshots, or if you modify
 
2450
@file{*.l} files, you need the Flex lexical analyzer generator
 
2451
installed.  If you do not modify @file{*.l} files, releases contain
 
2452
the Flex-generated files and you do not need Flex installed to build
 
2453
them.  There is still one Flex-based lexical analyzer (part of the
 
2454
build machinery, not of GCC itself) that is used even if you only
 
2455
build the C front end.
 
2456
 
 
2457
When building from SVN or snapshots, or if you modify Texinfo
 
2458
documentation, you need version 4.7 or later of Texinfo installed if you
 
2459
want Info documentation to be regenerated.  Releases contain Info
 
2460
documentation pre-built for the unmodified documentation in the release.
 
2461
 
 
2462
@section Building a native compiler
 
2463
 
 
2464
For a native build, the default configuration is to perform
 
2465
a 3-stage bootstrap of the compiler when @samp{make} is invoked.
 
2466
This will build the entire GCC system and ensure that it compiles
 
2467
itself correctly.  It can be disabled with the @option{--disable-bootstrap}
 
2468
parameter to @samp{configure}, but bootstrapping is suggested because
 
2469
the compiler will be tested more completely and could also have
 
2470
better performance.
 
2471
 
 
2472
The bootstrapping process will complete the following steps:
 
2473
 
 
2474
@itemize @bullet
 
2475
@item
 
2476
Build tools necessary to build the compiler.
 
2477
 
 
2478
@item
 
2479
Perform a 3-stage bootstrap of the compiler.  This includes building
 
2480
three times the target tools for use by the compiler such as binutils
 
2481
(bfd, binutils, gas, gprof, ld, and opcodes) if they have been
 
2482
individually linked or moved into the top level GCC source tree before
 
2483
configuring.
 
2484
 
 
2485
@item
 
2486
Perform a comparison test of the stage2 and stage3 compilers.
 
2487
 
 
2488
@item
 
2489
Build runtime libraries using the stage3 compiler from the previous step.
 
2490
 
 
2491
@end itemize
 
2492
 
 
2493
If you are short on disk space you might consider @samp{make
 
2494
bootstrap-lean} instead.  The sequence of compilation is the
 
2495
same described above, but object files from the stage1 and
 
2496
stage2 of the 3-stage bootstrap of the compiler are deleted as
 
2497
soon as they are no longer needed.
 
2498
 
 
2499
If you wish to use non-default GCC flags when compiling the stage2
 
2500
and stage3 compilers, set @code{BOOT_CFLAGS} on the command line when
 
2501
doing @samp{make}.  For example, if you want to save additional space
 
2502
during the bootstrap and in the final installation as well, you can
 
2503
build the compiler binaries without debugging information as in the
 
2504
following example.  This will save roughly 40% of disk space both for
 
2505
the bootstrap and the final installation.  (Libraries will still contain
 
2506
debugging information.)
 
2507
 
 
2508
@smallexample
 
2509
make BOOT_CFLAGS='-O' bootstrap
 
2510
@end smallexample
 
2511
 
 
2512
You can place non-default optimization flags into @code{BOOT_CFLAGS}; they
 
2513
are less well tested here than the default of @samp{-g -O2}, but should
 
2514
still work.  In a few cases, you may find that you need to specify special
 
2515
flags such as @option{-msoft-float} here to complete the bootstrap; or,
 
2516
if the native compiler miscompiles the stage1 compiler, you may need
 
2517
to work around this, by choosing @code{BOOT_CFLAGS} to avoid the parts
 
2518
of the stage1 compiler that were miscompiled, or by using @samp{make
 
2519
bootstrap4} to increase the number of stages of bootstrap.
 
2520
 
 
2521
@code{BOOT_CFLAGS} does not apply to bootstrapped target libraries.
 
2522
Since these are always compiled with the compiler currently being
 
2523
bootstrapped, you can use @code{CFLAGS_FOR_TARGET} to modify their
 
2524
compilation flags, as for non-bootstrapped target libraries.
 
2525
Again, if the native compiler miscompiles the stage1 compiler, you may
 
2526
need to work around this by avoiding non-working parts of the stage1
 
2527
compiler.  Use @code{STAGE1_TFLAGS} to this end.
 
2528
 
 
2529
If you used the flag @option{--enable-languages=@dots{}} to restrict
 
2530
the compilers to be built, only those you've actually enabled will be
 
2531
built.  This will of course only build those runtime libraries, for
 
2532
which the particular compiler has been built.  Please note,
 
2533
that re-defining @env{LANGUAGES} when calling @samp{make}
 
2534
@strong{does not} work anymore!
 
2535
 
 
2536
If the comparison of stage2 and stage3 fails, this normally indicates
 
2537
that the stage2 compiler has compiled GCC incorrectly, and is therefore
 
2538
a potentially serious bug which you should investigate and report.  (On
 
2539
a few systems, meaningful comparison of object files is impossible; they
 
2540
always appear ``different''.  If you encounter this problem, you will
 
2541
need to disable comparison in the @file{Makefile}.)
 
2542
 
 
2543
If you do not want to bootstrap your compiler, you can configure with
 
2544
@option{--disable-bootstrap}.  In particular cases, you may want to
 
2545
bootstrap your compiler even if the target system is not the same as
 
2546
the one you are building on: for example, you could build a
 
2547
@code{powerpc-unknown-linux-gnu} toolchain on a
 
2548
@code{powerpc64-unknown-linux-gnu} host.  In this case, pass
 
2549
@option{--enable-bootstrap} to the configure script.
 
2550
 
 
2551
@code{BUILD_CONFIG} can be used to bring in additional customization
 
2552
to the build.  It can be set to a whitespace-separated list of names.
 
2553
For each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will
 
2554
be included by the top-level @file{Makefile}, bringing in any settings
 
2555
it contains.  The default @code{BUILD_CONFIG} can be set using the
 
2556
configure option @option{--with-build-config=@code{NAME}...}.  Some
 
2557
examples of supported build configurations are:
 
2558
 
 
2559
@table @asis
 
2560
@item @samp{bootstrap-O1}
 
2561
Removes any @option{-O}-started option from @code{BOOT_CFLAGS}, and adds
 
2562
@option{-O1} to it.  @samp{BUILD_CONFIG=bootstrap-O1} is equivalent to
 
2563
@samp{BOOT_CFLAGS='-g -O1'}.
 
2564
 
 
2565
@item @samp{bootstrap-O3}
 
2566
Analogous to @code{bootstrap-O1}.
 
2567
 
 
2568
@item @samp{bootstrap-lto}
 
2569
Enables Link-Time Optimization for host tools during bootstrapping.
 
2570
@samp{BUILD_CONFIG=bootstrap-lto} is equivalent to adding
 
2571
@option{-flto} to @samp{BOOT_CFLAGS}.  This option assumes that the host
 
2572
supports the linker plugin (e.g. GNU ld version 2.21 or later or GNU gold
 
2573
version 2.21 or later).
 
2574
 
 
2575
@item @samp{bootstrap-lto-noplugin}
 
2576
This option is similar to @code{bootstrap-lto}, but is intended for
 
2577
hosts that do not support the linker plugin.  Without the linker plugin 
 
2578
static libraries are not compiled with link-time optimizations.  Since 
 
2579
the GCC middle end and back end are in @file{libbackend.a} this means
 
2580
that only the front end is actually LTO optimized.
 
2581
 
 
2582
@item @samp{bootstrap-debug}
 
2583
Verifies that the compiler generates the same executable code, whether
 
2584
or not it is asked to emit debug information.  To this end, this
 
2585
option builds stage2 host programs without debug information, and uses
 
2586
@file{contrib/compare-debug} to compare them with the stripped stage3
 
2587
object files.  If @code{BOOT_CFLAGS} is overridden so as to not enable
 
2588
debug information, stage2 will have it, and stage3 won't.  This option
 
2589
is enabled by default when GCC bootstrapping is enabled, if
 
2590
@code{strip} can turn object files compiled with and without debug
 
2591
info into identical object files.  In addition to better test
 
2592
coverage, this option makes default bootstraps faster and leaner.
 
2593
 
 
2594
@item @samp{bootstrap-debug-big}
 
2595
Rather than comparing stripped object files, as in
 
2596
@code{bootstrap-debug}, this option saves internal compiler dumps
 
2597
during stage2 and stage3 and compares them as well, which helps catch
 
2598
additional potential problems, but at a great cost in terms of disk
 
2599
space.  It can be specified in addition to @samp{bootstrap-debug}.
 
2600
 
 
2601
@item @samp{bootstrap-debug-lean}
 
2602
This option saves disk space compared with @code{bootstrap-debug-big},
 
2603
but at the expense of some recompilation.  Instead of saving the dumps
 
2604
of stage2 and stage3 until the final compare, it uses
 
2605
@option{-fcompare-debug} to generate, compare and remove the dumps
 
2606
during stage3, repeating the compilation that already took place in
 
2607
stage2, whose dumps were not saved.
 
2608
 
 
2609
@item @samp{bootstrap-debug-lib}
 
2610
This option tests executable code invariance over debug information
 
2611
generation on target libraries, just like @code{bootstrap-debug-lean}
 
2612
tests it on host programs.  It builds stage3 libraries with
 
2613
@option{-fcompare-debug}, and it can be used along with any of the
 
2614
@code{bootstrap-debug} options above.
 
2615
 
 
2616
There aren't @code{-lean} or @code{-big} counterparts to this option
 
2617
because most libraries are only build in stage3, so bootstrap compares
 
2618
would not get significant coverage.  Moreover, the few libraries built
 
2619
in stage2 are used in stage3 host programs, so we wouldn't want to
 
2620
compile stage2 libraries with different options for comparison purposes.
 
2621
 
 
2622
@item @samp{bootstrap-debug-ckovw}
 
2623
Arranges for error messages to be issued if the compiler built on any
 
2624
stage is run without the option @option{-fcompare-debug}.  This is
 
2625
useful to verify the full @option{-fcompare-debug} testing coverage.  It
 
2626
must be used along with @code{bootstrap-debug-lean} and
 
2627
@code{bootstrap-debug-lib}.
 
2628
 
 
2629
@item @samp{bootstrap-time}
 
2630
Arranges for the run time of each program started by the GCC driver,
 
2631
built in any stage, to be logged to @file{time.log}, in the top level of
 
2632
the build tree.
 
2633
 
 
2634
@end table
 
2635
 
 
2636
@section Building a cross compiler
 
2637
 
 
2638
When building a cross compiler, it is not generally possible to do a
 
2639
3-stage bootstrap of the compiler.  This makes for an interesting problem
 
2640
as parts of GCC can only be built with GCC@.
 
2641
 
 
2642
To build a cross compiler, we recommend first building and installing a
 
2643
native compiler.  You can then use the native GCC compiler to build the
 
2644
cross compiler.  The installed native compiler needs to be GCC version
 
2645
2.95 or later.
 
2646
 
 
2647
If the cross compiler is to be built with support for the Java
 
2648
programming language and the ability to compile .java source files is
 
2649
desired, the installed native compiler used to build the cross
 
2650
compiler needs to be the same GCC version as the cross compiler.  In
 
2651
addition the cross compiler needs to be configured with
 
2652
@option{--with-ecj-jar=@dots{}}.
 
2653
 
 
2654
Assuming you have already installed a native copy of GCC and configured
 
2655
your cross compiler, issue the command @command{make}, which performs the
 
2656
following steps:
 
2657
 
 
2658
@itemize @bullet
 
2659
@item
 
2660
Build host tools necessary to build the compiler.
 
2661
 
 
2662
@item
 
2663
Build target tools for use by the compiler such as binutils (bfd,
 
2664
binutils, gas, gprof, ld, and opcodes)
 
2665
if they have been individually linked or moved into the top level GCC source
 
2666
tree before configuring.
 
2667
 
 
2668
@item
 
2669
Build the compiler (single stage only).
 
2670
 
 
2671
@item
 
2672
Build runtime libraries using the compiler from the previous step.
 
2673
@end itemize
 
2674
 
 
2675
Note that if an error occurs in any step the make process will exit.
 
2676
 
 
2677
If you are not building GNU binutils in the same source tree as GCC,
 
2678
you will need a cross-assembler and cross-linker installed before
 
2679
configuring GCC@.  Put them in the directory
 
2680
@file{@var{prefix}/@var{target}/bin}.  Here is a table of the tools
 
2681
you should put in this directory:
 
2682
 
 
2683
@table @file
 
2684
@item as
 
2685
This should be the cross-assembler.
 
2686
 
 
2687
@item ld
 
2688
This should be the cross-linker.
 
2689
 
 
2690
@item ar
 
2691
This should be the cross-archiver: a program which can manipulate
 
2692
archive files (linker libraries) in the target machine's format.
 
2693
 
 
2694
@item ranlib
 
2695
This should be a program to construct a symbol table in an archive file.
 
2696
@end table
 
2697
 
 
2698
The installation of GCC will find these programs in that directory,
 
2699
and copy or link them to the proper place to for the cross-compiler to
 
2700
find them when run later.
 
2701
 
 
2702
The easiest way to provide these files is to build the Binutils package.
 
2703
Configure it with the same @option{--host} and @option{--target}
 
2704
options that you use for configuring GCC, then build and install
 
2705
them.  They install their executables automatically into the proper
 
2706
directory.  Alas, they do not support all the targets that GCC
 
2707
supports.
 
2708
 
 
2709
If you are not building a C library in the same source tree as GCC,
 
2710
you should also provide the target libraries and headers before
 
2711
configuring GCC, specifying the directories with
 
2712
@option{--with-sysroot} or @option{--with-headers} and
 
2713
@option{--with-libs}.  Many targets also require ``start files'' such
 
2714
as @file{crt0.o} and
 
2715
@file{crtn.o} which are linked into each executable.  There may be several
 
2716
alternatives for @file{crt0.o}, for use with profiling or other
 
2717
compilation options.  Check your target's definition of
 
2718
@code{STARTFILE_SPEC} to find out what start files it uses.
 
2719
 
 
2720
@section Building in parallel
 
2721
 
 
2722
GNU Make 3.80 and above, which is necessary to build GCC, support
 
2723
building in parallel.  To activate this, you can use @samp{make -j 2}
 
2724
instead of @samp{make}.  You can also specify a bigger number, and
 
2725
in most cases using a value greater than the number of processors in
 
2726
your machine will result in fewer and shorter I/O latency hits, thus
 
2727
improving overall throughput; this is especially true for slow drives
 
2728
and network filesystems.
 
2729
 
 
2730
@section Building the Ada compiler
 
2731
 
 
2732
In order to build GNAT, the Ada compiler, you need a working GNAT
 
2733
compiler (GCC version 4.0 or later).
 
2734
This includes GNAT tools such as @command{gnatmake} and
 
2735
@command{gnatlink}, since the Ada front end is written in Ada and
 
2736
uses some GNAT-specific extensions.
 
2737
 
 
2738
In order to build a cross compiler, it is suggested to install
 
2739
the new compiler as native first, and then use it to build the cross
 
2740
compiler.
 
2741
 
 
2742
@command{configure} does not test whether the GNAT installation works
 
2743
and has a sufficiently recent version; if too old a GNAT version is
 
2744
installed, the build will fail unless @option{--enable-languages} is
 
2745
used to disable building the Ada front end.
 
2746
 
 
2747
@env{ADA_INCLUDE_PATH} and @env{ADA_OBJECT_PATH} environment variables
 
2748
must not be set when building the Ada compiler, the Ada tools, or the
 
2749
Ada runtime libraries. You can check that your build environment is clean
 
2750
by verifying that @samp{gnatls -v} lists only one explicit path in each
 
2751
section.
 
2752
 
 
2753
@section Building with profile feedback
 
2754
 
 
2755
It is possible to use profile feedback to optimize the compiler itself.  This
 
2756
should result in a faster compiler binary.  Experiments done on x86 using gcc
 
2757
3.3 showed approximately 7 percent speedup on compiling C programs.  To
 
2758
bootstrap the compiler with profile feedback, use @code{make profiledbootstrap}.
 
2759
 
 
2760
When @samp{make profiledbootstrap} is run, it will first build a @code{stage1}
 
2761
compiler.  This compiler is used to build a @code{stageprofile} compiler
 
2762
instrumented to collect execution counts of instruction and branch
 
2763
probabilities.  Then runtime libraries are compiled with profile collected.
 
2764
Finally a @code{stagefeedback} compiler is built using the information collected.
 
2765
 
 
2766
Unlike standard bootstrap, several additional restrictions apply.  The
 
2767
compiler used to build @code{stage1} needs to support a 64-bit integral type.
 
2768
It is recommended to only use GCC for this.
 
2769
 
 
2770
@html
 
2771
<hr />
 
2772
<p>
 
2773
@end html
 
2774
@ifhtml
 
2775
@uref{./index.html,,Return to the GCC Installation page}
 
2776
@end ifhtml
 
2777
@end ifset
 
2778
 
 
2779
@c ***Testing*****************************************************************
 
2780
@ifnothtml
 
2781
@comment node-name,     next,          previous, up
 
2782
@node    Testing, Final install, Building, Installing GCC
 
2783
@end ifnothtml
 
2784
@ifset testhtml
 
2785
@ifnothtml
 
2786
@chapter Installing GCC: Testing
 
2787
@end ifnothtml
 
2788
@cindex Testing
 
2789
@cindex Installing GCC: Testing
 
2790
@cindex Testsuite
 
2791
 
 
2792
Before you install GCC, we encourage you to run the testsuites and to
 
2793
compare your results with results from a similar configuration that have
 
2794
been submitted to the
 
2795
@uref{http://gcc.gnu.org/ml/gcc-testresults/,,gcc-testresults mailing list}.
 
2796
Some of these archived results are linked from the build status lists
 
2797
at @uref{http://gcc.gnu.org/buildstat.html}, although not everyone who
 
2798
reports a successful build runs the testsuites and submits the results.
 
2799
This step is optional and may require you to download additional software,
 
2800
but it can give you confidence in your new GCC installation or point out
 
2801
problems before you install and start using your new GCC@.
 
2802
 
 
2803
First, you must have @uref{download.html,,downloaded the testsuites}.
 
2804
These are part of the full distribution, but if you downloaded the
 
2805
``core'' compiler plus any front ends, you must download the testsuites
 
2806
separately.
 
2807
 
 
2808
Second, you must have the testing tools installed.  This includes
 
2809
@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu}, Tcl, and Expect;
 
2810
the DejaGnu site has links to these.
 
2811
 
 
2812
If the directories where @command{runtest} and @command{expect} were
 
2813
installed are not in the @env{PATH}, you may need to set the following
 
2814
environment variables appropriately, as in the following example (which
 
2815
assumes that DejaGnu has been installed under @file{/usr/local}):
 
2816
 
 
2817
@smallexample
 
2818
TCL_LIBRARY = /usr/local/share/tcl8.0
 
2819
DEJAGNULIBS = /usr/local/share/dejagnu
 
2820
@end smallexample
 
2821
 
 
2822
(On systems such as Cygwin, these paths are required to be actual
 
2823
paths, not mounts or links; presumably this is due to some lack of
 
2824
portability in the DejaGnu code.)
 
2825
 
 
2826
 
 
2827
Finally, you can run the testsuite (which may take a long time):
 
2828
@smallexample
 
2829
cd @var{objdir}; make -k check
 
2830
@end smallexample
 
2831
 
 
2832
This will test various components of GCC, such as compiler
 
2833
front ends and runtime libraries.  While running the testsuite, DejaGnu
 
2834
might emit some harmless messages resembling
 
2835
@samp{WARNING: Couldn't find the global config file.} or
 
2836
@samp{WARNING: Couldn't find tool init file} that can be ignored.
 
2837
 
 
2838
If you are testing a cross-compiler, you may want to run the testsuite
 
2839
on a simulator as described at @uref{http://gcc.gnu.org/simtest-howto.html}.
 
2840
 
 
2841
@section How can you run the testsuite on selected tests?
 
2842
 
 
2843
In order to run sets of tests selectively, there are targets
 
2844
@samp{make check-gcc} and language specific @samp{make check-c},
 
2845
@samp{make check-c++}, @samp{make check-fortran}, @samp{make check-java},
 
2846
@samp{make check-ada}, @samp{make check-objc}, @samp{make check-obj-c++},
 
2847
@samp{make check-lto}
 
2848
in the @file{gcc} subdirectory of the object directory.  You can also
 
2849
just run @samp{make check} in a subdirectory of the object directory.
 
2850
 
 
2851
 
 
2852
A more selective way to just run all @command{gcc} execute tests in the
 
2853
testsuite is to use
 
2854
 
 
2855
@smallexample
 
2856
make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
 
2857
@end smallexample
 
2858
 
 
2859
Likewise, in order to run only the @command{g++} ``old-deja'' tests in
 
2860
the testsuite with filenames matching @samp{9805*}, you would use
 
2861
 
 
2862
@smallexample
 
2863
make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
 
2864
@end smallexample
 
2865
 
 
2866
The @file{*.exp} files are located in the testsuite directories of the GCC
 
2867
source, the most important ones being @file{compile.exp},
 
2868
@file{execute.exp}, @file{dg.exp} and @file{old-deja.exp}.
 
2869
To get a list of the possible @file{*.exp} files, pipe the
 
2870
output of @samp{make check} into a file and look at the
 
2871
@samp{Running @dots{}  .exp} lines.
 
2872
 
 
2873
@section Passing options and running multiple testsuites
 
2874
 
 
2875
You can pass multiple options to the testsuite using the
 
2876
@samp{--target_board} option of DejaGNU, either passed as part of
 
2877
@samp{RUNTESTFLAGS}, or directly to @command{runtest} if you prefer to
 
2878
work outside the makefiles.  For example,
 
2879
 
 
2880
@smallexample
 
2881
make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
 
2882
@end smallexample
 
2883
 
 
2884
will run the standard @command{g++} testsuites (``unix'' is the target name
 
2885
for a standard native testsuite situation), passing
 
2886
@samp{-O3 -fmerge-constants} to the compiler on every test, i.e.,
 
2887
slashes separate options.
 
2888
 
 
2889
You can run the testsuites multiple times using combinations of options
 
2890
with a syntax similar to the brace expansion of popular shells:
 
2891
 
 
2892
@smallexample
 
2893
@dots{}"--target_board=arm-sim\@{-mhard-float,-msoft-float\@}\@{-O1,-O2,-O3,\@}"
 
2894
@end smallexample
 
2895
 
 
2896
(Note the empty option caused by the trailing comma in the final group.)
 
2897
The following will run each testsuite eight times using the @samp{arm-sim}
 
2898
target, as if you had specified all possible combinations yourself:
 
2899
 
 
2900
@smallexample
 
2901
--target_board='arm-sim/-mhard-float/-O1 \
 
2902
                arm-sim/-mhard-float/-O2 \
 
2903
                arm-sim/-mhard-float/-O3 \
 
2904
                arm-sim/-mhard-float \
 
2905
                arm-sim/-msoft-float/-O1 \
 
2906
                arm-sim/-msoft-float/-O2 \
 
2907
                arm-sim/-msoft-float/-O3 \
 
2908
                arm-sim/-msoft-float'
 
2909
@end smallexample
 
2910
 
 
2911
They can be combined as many times as you wish, in arbitrary ways.  This
 
2912
list:
 
2913
 
 
2914
@smallexample
 
2915
@dots{}"--target_board=unix/-Wextra\@{-O3,-fno-strength\@}\@{-fomit-frame,\@}"
 
2916
@end smallexample
 
2917
 
 
2918
will generate four combinations, all involving @samp{-Wextra}.
 
2919
 
 
2920
The disadvantage to this method is that the testsuites are run in serial,
 
2921
which is a waste on multiprocessor systems.  For users with GNU Make and
 
2922
a shell which performs brace expansion, you can run the testsuites in
 
2923
parallel by having the shell perform the combinations and @command{make}
 
2924
do the parallel runs.  Instead of using @samp{--target_board}, use a
 
2925
special makefile target:
 
2926
 
 
2927
@smallexample
 
2928
make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
 
2929
@end smallexample
 
2930
 
 
2931
For example,
 
2932
 
 
2933
@smallexample
 
2934
make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
 
2935
@end smallexample
 
2936
 
 
2937
will run three concurrent ``make-gcc'' testsuites, eventually testing all
 
2938
ten combinations as described above.  Note that this is currently only
 
2939
supported in the @file{gcc} subdirectory.  (To see how this works, try
 
2940
typing @command{echo} before the example given here.)
 
2941
 
 
2942
 
 
2943
@section Additional testing for Java Class Libraries
 
2944
 
 
2945
The Java runtime tests can be executed via @samp{make check}
 
2946
in the @file{@var{target}/libjava/testsuite} directory in
 
2947
the build tree.
 
2948
 
 
2949
The @uref{http://sourceware.org/mauve/,,Mauve Project} provides
 
2950
a suite of tests for the Java Class Libraries.  This suite can be run
 
2951
as part of libgcj testing by placing the Mauve tree within the libjava
 
2952
testsuite at @file{libjava/testsuite/libjava.mauve/mauve}, or by
 
2953
specifying the location of that tree when invoking @samp{make}, as in
 
2954
@samp{make MAUVEDIR=~/mauve check}.
 
2955
 
 
2956
@section How to interpret test results
 
2957
 
 
2958
The result of running the testsuite are various @file{*.sum} and @file{*.log}
 
2959
files in the testsuite subdirectories.  The @file{*.log} files contain a
 
2960
detailed log of the compiler invocations and the corresponding
 
2961
results, the @file{*.sum} files summarize the results.  These summaries
 
2962
contain status codes for all tests:
 
2963
 
 
2964
@itemize @bullet
 
2965
@item
 
2966
PASS: the test passed as expected
 
2967
@item
 
2968
XPASS: the test unexpectedly passed
 
2969
@item
 
2970
FAIL: the test unexpectedly failed
 
2971
@item
 
2972
XFAIL: the test failed as expected
 
2973
@item
 
2974
UNSUPPORTED: the test is not supported on this platform
 
2975
@item
 
2976
ERROR: the testsuite detected an error
 
2977
@item
 
2978
WARNING: the testsuite detected a possible problem
 
2979
@end itemize
 
2980
 
 
2981
It is normal for some tests to report unexpected failures.  At the
 
2982
current time the testing harness does not allow fine grained control
 
2983
over whether or not a test is expected to fail.  This problem should
 
2984
be fixed in future releases.
 
2985
 
 
2986
 
 
2987
@section Submitting test results
 
2988
 
 
2989
If you want to report the results to the GCC project, use the
 
2990
@file{contrib/test_summary} shell script.  Start it in the @var{objdir} with
 
2991
 
 
2992
@smallexample
 
2993
@var{srcdir}/contrib/test_summary -p your_commentary.txt \
 
2994
    -m gcc-testresults@@gcc.gnu.org |sh
 
2995
@end smallexample
 
2996
 
 
2997
This script uses the @command{Mail} program to send the results, so
 
2998
make sure it is in your @env{PATH}.  The file @file{your_commentary.txt} is
 
2999
prepended to the testsuite summary and should contain any special
 
3000
remarks you have on your results or your build environment.  Please
 
3001
do not edit the testsuite result block or the subject line, as these
 
3002
messages may be automatically processed.
 
3003
 
 
3004
@html
 
3005
<hr />
 
3006
<p>
 
3007
@end html
 
3008
@ifhtml
 
3009
@uref{./index.html,,Return to the GCC Installation page}
 
3010
@end ifhtml
 
3011
@end ifset
 
3012
 
 
3013
@c ***Final install***********************************************************
 
3014
@ifnothtml
 
3015
@comment node-name,     next,          previous, up
 
3016
@node    Final install, , Testing, Installing GCC
 
3017
@end ifnothtml
 
3018
@ifset finalinstallhtml
 
3019
@ifnothtml
 
3020
@chapter Installing GCC: Final installation
 
3021
@end ifnothtml
 
3022
 
 
3023
Now that GCC has been built (and optionally tested), you can install it with
 
3024
@smallexample
 
3025
cd @var{objdir} && make install
 
3026
@end smallexample
 
3027
 
 
3028
We strongly recommend to install into a target directory where there is
 
3029
no previous version of GCC present.  Also, the GNAT runtime should not
 
3030
be stripped, as this would break certain features of the debugger that
 
3031
depend on this debugging information (catching Ada exceptions for
 
3032
instance).
 
3033
 
 
3034
That step completes the installation of GCC; user level binaries can
 
3035
be found in @file{@var{prefix}/bin} where @var{prefix} is the value
 
3036
you specified with the @option{--prefix} to configure (or
 
3037
@file{/usr/local} by default).  (If you specified @option{--bindir},
 
3038
that directory will be used instead; otherwise, if you specified
 
3039
@option{--exec-prefix}, @file{@var{exec-prefix}/bin} will be used.)
 
3040
Headers for the C++ and Java libraries are installed in
 
3041
@file{@var{prefix}/include}; libraries in @file{@var{libdir}}
 
3042
(normally @file{@var{prefix}/lib}); internal parts of the compiler in
 
3043
@file{@var{libdir}/gcc} and @file{@var{libexecdir}/gcc}; documentation
 
3044
in info format in @file{@var{infodir}} (normally
 
3045
@file{@var{prefix}/info}).
 
3046
 
 
3047
When installing cross-compilers, GCC's executables
 
3048
are not only installed into @file{@var{bindir}}, that
 
3049
is, @file{@var{exec-prefix}/bin}, but additionally into
 
3050
@file{@var{exec-prefix}/@var{target-alias}/bin}, if that directory
 
3051
exists.  Typically, such @dfn{tooldirs} hold target-specific
 
3052
binutils, including assembler and linker.
 
3053
 
 
3054
Installation into a temporary staging area or into a @command{chroot}
 
3055
jail can be achieved with the command
 
3056
 
 
3057
@smallexample
 
3058
make DESTDIR=@var{path-to-rootdir} install
 
3059
@end smallexample
 
3060
 
 
3061
@noindent
 
3062
where @var{path-to-rootdir} is the absolute path of
 
3063
a directory relative to which all installation paths will be
 
3064
interpreted.  Note that the directory specified by @code{DESTDIR}
 
3065
need not exist yet; it will be created if necessary.
 
3066
 
 
3067
There is a subtle point with tooldirs and @code{DESTDIR}:
 
3068
If you relocate a cross-compiler installation with
 
3069
e.g.@: @samp{DESTDIR=@var{rootdir}}, then the directory
 
3070
@file{@var{rootdir}/@var{exec-prefix}/@var{target-alias}/bin} will
 
3071
be filled with duplicated GCC executables only if it already exists,
 
3072
it will not be created otherwise.  This is regarded as a feature,
 
3073
not as a bug, because it gives slightly more control to the packagers
 
3074
using the @code{DESTDIR} feature.
 
3075
 
 
3076
You can install stripped programs and libraries with
 
3077
 
 
3078
@smallexample
 
3079
make install-strip
 
3080
@end smallexample
 
3081
 
 
3082
If you are bootstrapping a released version of GCC then please
 
3083
quickly review the build status page for your release, available from
 
3084
@uref{http://gcc.gnu.org/buildstat.html}.
 
3085
If your system is not listed for the version of GCC that you built,
 
3086
send a note to
 
3087
@email{gcc@@gcc.gnu.org} indicating
 
3088
that you successfully built and installed GCC@.
 
3089
Include the following information:
 
3090
 
 
3091
@itemize @bullet
 
3092
@item
 
3093
Output from running @file{@var{srcdir}/config.guess}.  Do not send
 
3094
that file itself, just the one-line output from running it.
 
3095
 
 
3096
@item
 
3097
The output of @samp{gcc -v} for your newly installed @command{gcc}.
 
3098
This tells us which version of GCC you built and the options you passed to
 
3099
configure.
 
3100
 
 
3101
@item
 
3102
Whether you enabled all languages or a subset of them.  If you used a
 
3103
full distribution then this information is part of the configure
 
3104
options in the output of @samp{gcc -v}, but if you downloaded the
 
3105
``core'' compiler plus additional front ends then it isn't apparent
 
3106
which ones you built unless you tell us about it.
 
3107
 
 
3108
@item
 
3109
If the build was for GNU/Linux, also include:
 
3110
@itemize @bullet
 
3111
@item
 
3112
The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3);
 
3113
this information should be available from @file{/etc/issue}.
 
3114
 
 
3115
@item
 
3116
The version of the Linux kernel, available from @samp{uname --version}
 
3117
or @samp{uname -a}.
 
3118
 
 
3119
@item
 
3120
The version of glibc you used; for RPM-based systems like Red Hat,
 
3121
Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version,
 
3122
and on systems like Debian and Progeny use @samp{dpkg -l libc6}.
 
3123
@end itemize
 
3124
For other systems, you can include similar information if you think it is
 
3125
relevant.
 
3126
 
 
3127
@item
 
3128
Any other information that you think would be useful to people building
 
3129
GCC on the same configuration.  The new entry in the build status list
 
3130
will include a link to the archived copy of your message.
 
3131
@end itemize
 
3132
 
 
3133
We'd also like to know if the
 
3134
@ifnothtml
 
3135
@ref{Specific, host/target specific installation notes}
 
3136
@end ifnothtml
 
3137
@ifhtml
 
3138
@uref{specific.html,,host/target specific installation notes}
 
3139
@end ifhtml
 
3140
didn't include your host/target information or if that information is
 
3141
incomplete or out of date.  Send a note to
 
3142
@email{gcc@@gcc.gnu.org} detailing how the information should be changed.
 
3143
 
 
3144
If you find a bug, please report it following the
 
3145
@uref{../bugs/,,bug reporting guidelines}.
 
3146
 
 
3147
If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
 
3148
dvi}.  You will need to have @command{texi2dvi} (version at least 4.7)
 
3149
and @TeX{} installed.  This creates a number of @file{.dvi} files in
 
3150
subdirectories of @file{@var{objdir}}; these may be converted for
 
3151
printing with programs such as @command{dvips}.  Alternately, by using
 
3152
@samp{make pdf} in place of @samp{make dvi}, you can create documentation
 
3153
in the form of @file{.pdf} files; this requires @command{texi2pdf}, which
 
3154
is included with Texinfo version 4.8 and later.  You can also
 
3155
@uref{http://shop.fsf.org/,,buy printed manuals from the
 
3156
Free Software Foundation}, though such manuals may not be for the most
 
3157
recent version of GCC@.
 
3158
 
 
3159
If you would like to generate online HTML documentation, do @samp{cd
 
3160
@var{objdir}; make html} and HTML will be generated for the gcc manuals in
 
3161
@file{@var{objdir}/gcc/HTML}.
 
3162
 
 
3163
@html
 
3164
<hr />
 
3165
<p>
 
3166
@end html
 
3167
@ifhtml
 
3168
@uref{./index.html,,Return to the GCC Installation page}
 
3169
@end ifhtml
 
3170
@end ifset
 
3171
 
 
3172
@c ***Binaries****************************************************************
 
3173
@ifnothtml
 
3174
@comment node-name,     next,          previous, up
 
3175
@node    Binaries, Specific, Installing GCC, Top
 
3176
@end ifnothtml
 
3177
@ifset binarieshtml
 
3178
@ifnothtml
 
3179
@chapter Installing GCC: Binaries
 
3180
@end ifnothtml
 
3181
@cindex Binaries
 
3182
@cindex Installing GCC: Binaries
 
3183
 
 
3184
We are often asked about pre-compiled versions of GCC@.  While we cannot
 
3185
provide these for all platforms, below you'll find links to binaries for
 
3186
various platforms where creating them by yourself is not easy due to various
 
3187
reasons.
 
3188
 
 
3189
Please note that we did not create these binaries, nor do we
 
3190
support them.  If you have any problems installing them, please
 
3191
contact their makers.
 
3192
 
 
3193
@itemize
 
3194
@item
 
3195
AIX:
 
3196
@itemize
 
3197
@item
 
3198
@uref{http://www.bullfreeware.com,,Bull's Open Source Software Archive for
 
3199
for AIX 5L and AIX 6};
 
3200
 
 
3201
@item
 
3202
@uref{http://www.perzl.org/aix/,,AIX Open Source Packages (AIX5L AIX 6.1
 
3203
AIX 7.1)}.
 
3204
@end itemize
 
3205
 
 
3206
@item
 
3207
DOS---@uref{http://www.delorie.com/djgpp/,,DJGPP}.
 
3208
 
 
3209
@item
 
3210
HP-UX:
 
3211
@itemize
 
3212
@item
 
3213
@uref{http://hpux.connect.org.uk/,,HP-UX Porting Center};
 
3214
@end itemize
 
3215
 
 
3216
@item
 
3217
Solaris 2 (SPARC, Intel):
 
3218
@itemize
 
3219
@item
 
3220
@uref{http://www.opencsw.org/,,OpenCSW}
 
3221
 
 
3222
@item
 
3223
@uref{http://jupiterrise.com/tgcware/,,TGCware}
 
3224
@end itemize
 
3225
 
 
3226
@item
 
3227
Microsoft Windows:
 
3228
@itemize
 
3229
@item
 
3230
The @uref{http://sourceware.org/cygwin/,,Cygwin} project;
 
3231
@item
 
3232
The @uref{http://www.mingw.org/,,MinGW} and
 
3233
@uref{http://mingw-w64.org/,,mingw-w64} projects.
 
3234
@end itemize
 
3235
 
 
3236
@item
 
3237
@uref{http://www.openpkg.org/,,OpenPKG} offers binaries for quite a
 
3238
number of platforms.
 
3239
 
 
3240
@item
 
3241
The @uref{http://gcc.gnu.org/wiki/GFortranBinaries,,GFortran Wiki} has
 
3242
links to GNU Fortran binaries for several platforms.
 
3243
@end itemize
 
3244
 
 
3245
@html
 
3246
<hr />
 
3247
<p>
 
3248
@end html
 
3249
@ifhtml
 
3250
@uref{./index.html,,Return to the GCC Installation page}
 
3251
@end ifhtml
 
3252
@end ifset
 
3253
 
 
3254
@c ***Specific****************************************************************
 
3255
@ifnothtml
 
3256
@comment node-name,     next,          previous, up
 
3257
@node    Specific, Old, Binaries, Top
 
3258
@end ifnothtml
 
3259
@ifset specifichtml
 
3260
@ifnothtml
 
3261
@chapter Host/target specific installation notes for GCC
 
3262
@end ifnothtml
 
3263
@cindex Specific
 
3264
@cindex Specific installation notes
 
3265
@cindex Target specific installation
 
3266
@cindex Host specific installation
 
3267
@cindex Target specific installation notes
 
3268
 
 
3269
Please read this document carefully @emph{before} installing the
 
3270
GNU Compiler Collection on your machine.
 
3271
 
 
3272
Note that this list of install notes is @emph{not} a list of supported
 
3273
hosts or targets.  Not all supported hosts and targets are listed
 
3274
here, only the ones that require host-specific or target-specific
 
3275
information have to. 
 
3276
 
 
3277
@ifhtml
 
3278
@itemize
 
3279
@item
 
3280
@uref{#aarch64-x-x,,aarch64*-*-*}
 
3281
@item
 
3282
@uref{#alpha-x-x,,alpha*-*-*}
 
3283
@item
 
3284
@uref{#alpha-dec-osf51,,alpha*-dec-osf5.1}
 
3285
@item
 
3286
@uref{#amd64-x-solaris210,,amd64-*-solaris2.10}
 
3287
@item
 
3288
@uref{#arm-x-eabi,,arm-*-eabi}
 
3289
@item
 
3290
@uref{#avr,,avr}
 
3291
@item
 
3292
@uref{#bfin,,Blackfin}
 
3293
@item
 
3294
@uref{#dos,,DOS}
 
3295
@item
 
3296
@uref{#x-x-freebsd,,*-*-freebsd*}
 
3297
@item
 
3298
@uref{#h8300-hms,,h8300-hms}
 
3299
@item
 
3300
@uref{#hppa-hp-hpux,,hppa*-hp-hpux*}
 
3301
@item
 
3302
@uref{#hppa-hp-hpux10,,hppa*-hp-hpux10}
 
3303
@item
 
3304
@uref{#hppa-hp-hpux11,,hppa*-hp-hpux11}
 
3305
@item
 
3306
@uref{#x-x-linux-gnu,,*-*-linux-gnu}
 
3307
@item
 
3308
@uref{#ix86-x-linux,,i?86-*-linux*}
 
3309
@item
 
3310
@uref{#ix86-x-solaris210,,i?86-*-solaris2.10}
 
3311
@item
 
3312
@uref{#ia64-x-linux,,ia64-*-linux}
 
3313
@item
 
3314
@uref{#ia64-x-hpux,,ia64-*-hpux*}
 
3315
@item
 
3316
@uref{#x-ibm-aix,,*-ibm-aix*}
 
3317
@item
 
3318
@uref{#iq2000-x-elf,,iq2000-*-elf}
 
3319
@item
 
3320
@uref{#lm32-x-elf,,lm32-*-elf}
 
3321
@item
 
3322
@uref{#lm32-x-uclinux,,lm32-*-uclinux}
 
3323
@item
 
3324
@uref{#m32c-x-elf,,m32c-*-elf}
 
3325
@item
 
3326
@uref{#m32r-x-elf,,m32r-*-elf}
 
3327
@item
 
3328
@uref{#m68k-x-x,,m68k-*-*}
 
3329
@item
 
3330
@uref{#m68k-uclinux,,m68k-uclinux}
 
3331
@item
 
3332
@uref{#mep-x-elf,,mep-*-elf}
 
3333
@item
 
3334
@uref{#microblaze-x-elf,,microblaze-*-elf}
 
3335
@item
 
3336
@uref{#mips-x-x,,mips-*-*}
 
3337
@item
 
3338
@uref{#mips-sgi-irix5,,mips-sgi-irix5}
 
3339
@item
 
3340
@uref{#mips-sgi-irix6,,mips-sgi-irix6}
 
3341
@item
 
3342
@uref{#nds32le-x-elf,,nds32le-*-elf}
 
3343
@item
 
3344
@uref{#nds32be-x-elf,,nds32be-*-elf}
 
3345
@item
 
3346
@uref{#nvptx-x-none,,nvptx-*-none}
 
3347
@item
 
3348
@uref{#powerpc-x-x,,powerpc*-*-*}
 
3349
@item
 
3350
@uref{#powerpc-x-darwin,,powerpc-*-darwin*}
 
3351
@item
 
3352
@uref{#powerpc-x-elf,,powerpc-*-elf}
 
3353
@item
 
3354
@uref{#powerpc-x-linux-gnu,,powerpc*-*-linux-gnu*}
 
3355
@item
 
3356
@uref{#powerpc-x-netbsd,,powerpc-*-netbsd*}
 
3357
@item
 
3358
@uref{#powerpc-x-eabisim,,powerpc-*-eabisim}
 
3359
@item
 
3360
@uref{#powerpc-x-eabi,,powerpc-*-eabi}
 
3361
@item
 
3362
@uref{#powerpcle-x-elf,,powerpcle-*-elf}
 
3363
@item
 
3364
@uref{#powerpcle-x-eabisim,,powerpcle-*-eabisim}
 
3365
@item
 
3366
@uref{#powerpcle-x-eabi,,powerpcle-*-eabi}
 
3367
@item
 
3368
@uref{#s390-x-linux,,s390-*-linux*}
 
3369
@item
 
3370
@uref{#s390x-x-linux,,s390x-*-linux*}
 
3371
@item
 
3372
@uref{#s390x-ibm-tpf,,s390x-ibm-tpf*}
 
3373
@item
 
3374
@uref{#x-x-solaris2,,*-*-solaris2*}
 
3375
@item
 
3376
@uref{#sparc-x-x,,sparc*-*-*}
 
3377
@item
 
3378
@uref{#sparc-sun-solaris2,,sparc-sun-solaris2*}
 
3379
@item
 
3380
@uref{#sparc-sun-solaris210,,sparc-sun-solaris2.10}
 
3381
@item
 
3382
@uref{#sparc-x-linux,,sparc-*-linux*}
 
3383
@item
 
3384
@uref{#sparc64-x-solaris2,,sparc64-*-solaris2*}
 
3385
@item
 
3386
@uref{#sparcv9-x-solaris2,,sparcv9-*-solaris2*}
 
3387
@item
 
3388
@uref{#c6x-x-x,,c6x-*-*}
 
3389
@item
 
3390
@uref{#tilegx-x-linux,,tilegx-*-linux*}
 
3391
@item
 
3392
@uref{#tilegxbe-x-linux,,tilegxbe-*-linux*}
 
3393
@item
 
3394
@uref{#tilepro-x-linux,,tilepro-*-linux*}
 
3395
@item
 
3396
@uref{#visium-x-elf, visium-*-elf}
 
3397
@item
 
3398
@uref{#x-x-vxworks,,*-*-vxworks*}
 
3399
@item
 
3400
@uref{#x86-64-x-x,,x86_64-*-*, amd64-*-*}
 
3401
@item
 
3402
@uref{#x86-64-x-solaris210,,x86_64-*-solaris2.1[0-9]*}
 
3403
@item
 
3404
@uref{#xtensa-x-elf,,xtensa*-*-elf}
 
3405
@item
 
3406
@uref{#xtensa-x-linux,,xtensa*-*-linux*}
 
3407
@item
 
3408
@uref{#windows,,Microsoft Windows}
 
3409
@item
 
3410
@uref{#x-x-cygwin,,*-*-cygwin}
 
3411
@item
 
3412
@uref{#x-x-interix,,*-*-interix}
 
3413
@item
 
3414
@uref{#x-x-mingw32,,*-*-mingw32}
 
3415
@item
 
3416
@uref{#os2,,OS/2}
 
3417
@item
 
3418
@uref{#older,,Older systems}
 
3419
@end itemize
 
3420
 
 
3421
@itemize
 
3422
@item
 
3423
@uref{#elf,,all ELF targets} (SVR4, Solaris 2, etc.)
 
3424
@end itemize
 
3425
@end ifhtml
 
3426
 
 
3427
 
 
3428
@html
 
3429
<!-- -------- host/target specific issues start here ---------------- -->
 
3430
<hr />
 
3431
@end html
 
3432
@anchor{aarch64-x-x}
 
3433
@heading aarch64*-*-*
 
3434
Binutils pre 2.24 does not have support for selecting @option{-mabi} and
 
3435
does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
 
3436
not support option @option{-mabi=ilp32}.
 
3437
 
 
3438
To enable a workaround for the Cortex-A53 erratum number 835769 by default
 
3439
(for all CPUs regardless of -mcpu option given) at configure time use the
 
3440
@option{--enable-fix-cortex-a53-835769} option.  This will enable the fix by
 
3441
default and can be explicitly disabled during compilation by passing the
 
3442
@option{-mno-fix-cortex-a53-835769} option.  Conversely,
 
3443
@option{--disable-fix-cortex-a53-835769} will disable the workaround by
 
3444
default.  The workaround is disabled by default if neither of
 
3445
@option{--enable-fix-cortex-a53-835769} or
 
3446
@option{--disable-fix-cortex-a53-835769} is given at configure time.
 
3447
 
 
3448
To enable a workaround for the Cortex-A53 erratum number 843419 by default
 
3449
(for all CPUs regardless of -mcpu option given) at configure time use the
 
3450
@option{--enable-fix-cortex-a53-843419} option.  This workaround is applied at
 
3451
link time.  Enabling the workaround will cause GCC to pass the relevant option
 
3452
to the linker.  It can be explicitly disabled during compilation by passing the
 
3453
@option{-mno-fix-cortex-a53-843419} option.  Conversely,
 
3454
@option{--disable-fix-cortex-a53-843419} will disable the workaround by default.
 
3455
The workaround is disabled by default if neither of
 
3456
@option{--enable-fix-cortex-a53-843419} or
 
3457
@option{--disable-fix-cortex-a53-843419} is given at configure time.
 
3458
 
 
3459
@html
 
3460
<hr />
 
3461
@end html
 
3462
@anchor{alpha-x-x}
 
3463
@heading alpha*-*-*
 
3464
This section contains general configuration information for all
 
3465
alpha-based platforms using ELF (in particular, ignore this section for
 
3466
DEC OSF/1, Digital UNIX and Tru64 UNIX)@.  In addition to reading this
 
3467
section, please read all other sections that match your target.
 
3468
 
 
3469
We require binutils 2.11.2 or newer.
 
3470
Previous binutils releases had a number of problems with DWARF 2
 
3471
debugging information, not the least of which is incorrect linking of
 
3472
shared libraries.
 
3473
 
 
3474
@html
 
3475
<hr />
 
3476
@end html
 
3477
@anchor{alpha-dec-osf51}
 
3478
@heading alpha*-dec-osf5.1
 
3479
Systems using processors that implement the DEC Alpha architecture and
 
3480
are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP
 
3481
Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
 
3482
 
 
3483
Support for Tru64 UNIX V5.1 has been removed in GCC 4.8.  As of GCC 4.6,
 
3484
support for Tru64 UNIX V4.0 and V5.0 has been removed.  As of GCC 3.2,
 
3485
versions before @code{alpha*-dec-osf4} are no longer supported.  (These
 
3486
are the versions which identify themselves as DEC OSF/1.)
 
3487
 
 
3488
@html
 
3489
<hr />
 
3490
@end html
 
3491
@anchor{amd64-x-solaris210}
 
3492
@heading amd64-*-solaris2.1[0-9]*
 
3493
This is a synonym for @samp{x86_64-*-solaris2.1[0-9]*}.
 
3494
 
 
3495
@html
 
3496
<hr />
 
3497
@end html
 
3498
@anchor{arc-x-elf32}
 
3499
@heading arc-*-elf32
 
3500
 
 
3501
Use @samp{configure --target=arc-elf32 --with-cpu=@var{cpu} --enable-languages="c,c++"}
 
3502
to configure GCC, with @var{cpu} being one of @samp{arc600}, @samp{arc601},
 
3503
or @samp{arc700}@.
 
3504
 
 
3505
@html
 
3506
<hr />
 
3507
@end html
 
3508
@anchor{arc-linux-uclibc}
 
3509
@heading arc-linux-uclibc
 
3510
 
 
3511
Use @samp{configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"} to configure GCC@.
 
3512
 
 
3513
@html
 
3514
<hr />
 
3515
@end html
 
3516
@anchor{arm-x-eabi}
 
3517
@heading arm-*-eabi
 
3518
ARM-family processors.  Subtargets that use the ELF object format
 
3519
require GNU binutils 2.13 or newer.  Such subtargets include:
 
3520
@code{arm-*-netbsdelf}, @code{arm-*-*linux-*}
 
3521
and @code{arm-*-rtemseabi}.
 
3522
 
 
3523
Building the Ada frontend commonly fails (an infinite loop executing
 
3524
@code{xsinfo}) if the host compiler is GNAT 4.8.  Host compilers built from the
 
3525
GNAT 4.6, 4.9 or 5 release branches are known to succeed.
 
3526
 
 
3527
@html
 
3528
<hr />
 
3529
@end html
 
3530
@anchor{avr}
 
3531
@heading avr
 
3532
ATMEL AVR-family micro controllers.  These are used in embedded
 
3533
applications.  There are no standard Unix configurations.
 
3534
@ifnothtml
 
3535
@xref{AVR Options,, AVR Options, gcc, Using the GNU Compiler
 
3536
Collection (GCC)},
 
3537
@end ifnothtml
 
3538
@ifhtml
 
3539
See ``AVR Options'' in the main manual
 
3540
@end ifhtml
 
3541
for the list of supported MCU types.
 
3542
 
 
3543
Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@.
 
3544
 
 
3545
Further installation notes and other useful information about AVR tools
 
3546
can also be obtained from:
 
3547
 
 
3548
@itemize @bullet
 
3549
@item
 
3550
@uref{http://www.nongnu.org/avr/,,http://www.nongnu.org/avr/}
 
3551
@item
 
3552
@uref{http://www.amelek.gda.pl/avr/,,http://www.amelek.gda.pl/avr/}
 
3553
@end itemize
 
3554
 
 
3555
We @emph{strongly} recommend using binutils 2.13 or newer.
 
3556
 
 
3557
The following error:
 
3558
@smallexample
 
3559
Error: register required
 
3560
@end smallexample
 
3561
 
 
3562
indicates that you should upgrade to a newer version of the binutils.
 
3563
 
 
3564
@html
 
3565
<hr />
 
3566
@end html
 
3567
@anchor{bfin}
 
3568
@heading Blackfin
 
3569
The Blackfin processor, an Analog Devices DSP.
 
3570
@ifnothtml
 
3571
@xref{Blackfin Options,, Blackfin Options, gcc, Using the GNU Compiler
 
3572
Collection (GCC)},
 
3573
@end ifnothtml
 
3574
@ifhtml
 
3575
See ``Blackfin Options'' in the main manual
 
3576
@end ifhtml
 
3577
 
 
3578
More information, and a version of binutils with support for this processor,
 
3579
is available at @uref{http://blackfin.uclinux.org}
 
3580
 
 
3581
@html
 
3582
<hr />
 
3583
@end html
 
3584
@anchor{cr16}
 
3585
@heading CR16
 
3586
The CR16 CompactRISC architecture is a 16-bit architecture. This
 
3587
architecture is used in embedded applications.
 
3588
 
 
3589
@ifnothtml
 
3590
@xref{CR16 Options,, CR16 Options, gcc, Using and Porting the GNU Compiler
 
3591
Collection (GCC)},
 
3592
@end ifnothtml
 
3593
 
 
3594
@ifhtml
 
3595
See ``CR16 Options'' in the main manual for a list of CR16-specific options.
 
3596
@end ifhtml
 
3597
 
 
3598
Use @samp{configure --target=cr16-elf --enable-languages=c,c++} to configure
 
3599
GCC@ for building a CR16 elf cross-compiler.
 
3600
 
 
3601
Use @samp{configure --target=cr16-uclinux --enable-languages=c,c++} to
 
3602
configure GCC@ for building a CR16 uclinux cross-compiler.
 
3603
 
 
3604
@html
 
3605
<hr />
 
3606
@end html
 
3607
@anchor{cris}
 
3608
@heading CRIS
 
3609
CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
 
3610
series.  These are used in embedded applications.
 
3611
 
 
3612
@ifnothtml
 
3613
@xref{CRIS Options,, CRIS Options, gcc, Using the GNU Compiler
 
3614
Collection (GCC)},
 
3615
@end ifnothtml
 
3616
@ifhtml
 
3617
See ``CRIS Options'' in the main manual
 
3618
@end ifhtml
 
3619
for a list of CRIS-specific options.
 
3620
 
 
3621
There are a few different CRIS targets:
 
3622
@table @code
 
3623
@item cris-axis-elf
 
3624
Mainly for monolithic embedded systems.  Includes a multilib for the
 
3625
@samp{v10} core used in @samp{ETRAX 100 LX}.
 
3626
@item cris-axis-linux-gnu
 
3627
A GNU/Linux port for the CRIS architecture, currently targeting
 
3628
@samp{ETRAX 100 LX} by default.
 
3629
@end table
 
3630
 
 
3631
For @code{cris-axis-elf} you need binutils 2.11
 
3632
or newer.  For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer.
 
3633
 
 
3634
Pre-packaged tools can be obtained from
 
3635
@uref{ftp://ftp.axis.com/@/pub/@/axis/@/tools/@/cris/@/compiler-kit/}.  More
 
3636
information about this platform is available at
 
3637
@uref{http://developer.axis.com/}.
 
3638
 
 
3639
@html
 
3640
<hr />
 
3641
@end html
 
3642
@anchor{dos}
 
3643
@heading DOS
 
3644
Please have a look at the @uref{binaries.html,,binaries page}.
 
3645
 
 
3646
You cannot install GCC by itself on MSDOS; it will not compile under
 
3647
any MSDOS compiler except itself.  You need to get the complete
 
3648
compilation package DJGPP, which includes binaries as well as sources,
 
3649
and includes all the necessary compilation tools and libraries.
 
3650
 
 
3651
@html
 
3652
<hr />
 
3653
@end html
 
3654
@anchor{epiphany-x-elf}
 
3655
@heading epiphany-*-elf
 
3656
Adapteva Epiphany.
 
3657
This configuration is intended for embedded systems.
 
3658
 
 
3659
@html
 
3660
<hr />
 
3661
@end html
 
3662
@anchor{x-x-freebsd}
 
3663
@heading *-*-freebsd*
 
3664
Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for
 
3665
FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
 
3666
discontinued in GCC 4.0.
 
3667
 
 
3668
In order to better utilize FreeBSD base system functionality and match
 
3669
the configuration of the system compiler, GCC 4.5 and above as well as
 
3670
GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present
 
3671
on FreeBSD 7 or later) and the use of @code{__cxa_atexit} by default
 
3672
(on FreeBSD 6 or later).  The use of @code{dl_iterate_phdr} inside
 
3673
@file{libgcc_s.so.1} and boehm-gc (on FreeBSD 7 or later) is enabled
 
3674
by GCC 4.5 and above.
 
3675
 
 
3676
We support FreeBSD using the ELF file format with DWARF 2 debugging
 
3677
for all CPU architectures.  You may use @option{-gstabs} instead of
 
3678
@option{-g}, if you really want the old debugging format.  There are
 
3679
no known issues with mixing object files and libraries with different
 
3680
debugging formats.  Otherwise, this release of GCC should now match
 
3681
more of the configuration used in the stock FreeBSD configuration of
 
3682
GCC@.  In particular, @option{--enable-threads} is now configured by
 
3683
default.  However, as a general user, do not attempt to replace the
 
3684
system compiler with this release.  Known to bootstrap and check with
 
3685
good results on FreeBSD 7.2-STABLE@.  In the past, known to bootstrap
 
3686
and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4,
 
3687
4.5, 4.8, 4.9 and 5-CURRENT@.
 
3688
 
 
3689
The version of binutils installed in @file{/usr/bin} probably works
 
3690
with this release of GCC@.  Bootstrapping against the latest GNU
 
3691
binutils and/or the version found in @file{/usr/ports/devel/binutils} has
 
3692
been known to enable additional features and improve overall testsuite
 
3693
results.  However, it is currently known that boehm-gc (which itself
 
3694
is required for java) may not configure properly on FreeBSD prior to
 
3695
the FreeBSD 7.0 release with GNU binutils after 2.16.1.
 
3696
 
 
3697
@html
 
3698
<hr />
 
3699
@end html
 
3700
@anchor{ft32-x-elf}
 
3701
@heading ft32-*-elf
 
3702
The FT32 processor.
 
3703
This configuration is intended for embedded systems.
 
3704
 
 
3705
@html
 
3706
<hr />
 
3707
@end html
 
3708
@anchor{h8300-hms}
 
3709
@heading h8300-hms
 
3710
Renesas H8/300 series of processors.
 
3711
 
 
3712
Please have a look at the @uref{binaries.html,,binaries page}.
 
3713
 
 
3714
The calling convention and structure layout has changed in release 2.6.
 
3715
All code must be recompiled.  The calling convention now passes the
 
3716
first three arguments in function calls in registers.  Structures are no
 
3717
longer a multiple of 2 bytes.
 
3718
 
 
3719
@html
 
3720
<hr />
 
3721
@end html
 
3722
@anchor{hppa-hp-hpux}
 
3723
@heading hppa*-hp-hpux*
 
3724
Support for HP-UX version 9 and older was discontinued in GCC 3.4.
 
3725
 
 
3726
We require using gas/binutils on all hppa platforms.  Version 2.19 or
 
3727
later is recommended.
 
3728
 
 
3729
It may be helpful to configure GCC with the
 
3730
@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
 
3731
@option{--with-as=@dots{}} options to ensure that GCC can find GAS@.
 
3732
 
 
3733
The HP assembler should not be used with GCC.  It is rarely tested and may
 
3734
not work.  It shouldn't be used with any languages other than C due to its
 
3735
many limitations.
 
3736
 
 
3737
Specifically, @option{-g} does not work (HP-UX uses a peculiar debugging
 
3738
format which GCC does not know about).  It also inserts timestamps
 
3739
into each object file it creates, causing the 3-stage comparison test to
 
3740
fail during a bootstrap.  You should be able to continue by saying
 
3741
@samp{make all-host all-target} after getting the failure from @samp{make}.
 
3742
 
 
3743
Various GCC features are not supported.  For example, it does not support weak
 
3744
symbols or alias definitions.  As a result, explicit template instantiations
 
3745
are required when using C++.  This makes it difficult if not impossible to
 
3746
build many C++ applications.
 
3747
 
 
3748
There are two default scheduling models for instructions.  These are
 
3749
PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
 
3750
architecture specified for the target machine when configuring.
 
3751
PROCESSOR_8000 is the default.  PROCESSOR_7100LC is selected when
 
3752
the target is a @samp{hppa1*} machine.
 
3753
 
 
3754
The PROCESSOR_8000 model is not well suited to older processors.  Thus,
 
3755
it is important to completely specify the machine architecture when
 
3756
configuring if you want a model other than PROCESSOR_8000.  The macro
 
3757
TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
 
3758
default scheduling model is desired.
 
3759
 
 
3760
As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
 
3761
through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later.
 
3762
This namespace change might cause problems when bootstrapping with
 
3763
an earlier version of GCC or the HP compiler as essentially the same
 
3764
namespace is required for an entire build.  This problem can be avoided
 
3765
in a number of ways.  With HP cc, @env{UNIX_STD} can be set to @samp{95}
 
3766
or @samp{98}.  Another way is to add an appropriate set of predefines
 
3767
to @env{CC}.  The description for the @option{munix=} option contains
 
3768
a list of the predefines used with each standard.
 
3769
 
 
3770
More specific information to @samp{hppa*-hp-hpux*} targets follows.
 
3771
 
 
3772
@html
 
3773
<hr />
 
3774
@end html
 
3775
@anchor{hppa-hp-hpux10}
 
3776
@heading hppa*-hp-hpux10
 
3777
For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch
 
3778
@code{PHCO_19798} from HP@.
 
3779
 
 
3780
The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces are
 
3781
used for one-only code and data.  This resolves many of the previous
 
3782
problems in using C++ on this target.  However, the ABI is not compatible
 
3783
with the one implemented under HP-UX 11 using secondary definitions.
 
3784
 
 
3785
@html
 
3786
<hr />
 
3787
@end html
 
3788
@anchor{hppa-hp-hpux11}
 
3789
@heading hppa*-hp-hpux11
 
3790
GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
 
3791
be used to compile GCC 3.0 and up.
 
3792
 
 
3793
The libffi and libjava libraries haven't been ported to 64-bit HP-UX@
 
3794
and don't build.
 
3795
 
 
3796
Refer to @uref{binaries.html,,binaries} for information about obtaining
 
3797
precompiled GCC binaries for HP-UX@.  Precompiled binaries must be obtained
 
3798
to build the Ada language as it can't be bootstrapped using C@.  Ada is
 
3799
only available for the 32-bit PA-RISC runtime.
 
3800
 
 
3801
Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
 
3802
bundled compiler supports only traditional C; you will need either HP's
 
3803
unbundled compiler, or a binary distribution of GCC@.
 
3804
 
 
3805
It is possible to build GCC 3.3 starting with the bundled HP compiler,
 
3806
but the process requires several steps.  GCC 3.3 can then be used to
 
3807
build later versions.  The fastjar program contains ISO C code and
 
3808
can't be built with the HP bundled compiler.  This problem can be
 
3809
avoided by not building the Java language.  For example, use the
 
3810
@option{--enable-languages="c,c++,f77,objc"} option in your configure
 
3811
command.
 
3812
 
 
3813
There are several possible approaches to building the distribution.
 
3814
Binutils can be built first using the HP tools.  Then, the GCC
 
3815
distribution can be built.  The second approach is to build GCC
 
3816
first using the HP tools, then build binutils, then rebuild GCC@.
 
3817
There have been problems with various binary distributions, so it
 
3818
is best not to start from a binary distribution.
 
3819
 
 
3820
On 64-bit capable systems, there are two distinct targets.  Different
 
3821
installation prefixes must be used if both are to be installed on
 
3822
the same system.  The @samp{hppa[1-2]*-hp-hpux11*} target generates code
 
3823
for the 32-bit PA-RISC runtime architecture and uses the HP linker.
 
3824
The @samp{hppa64-hp-hpux11*} target generates 64-bit code for the
 
3825
PA-RISC 2.0 architecture.
 
3826
 
 
3827
The script config.guess now selects the target type based on the compiler
 
3828
detected during configuration.  You must define @env{PATH} or @env{CC} so
 
3829
that configure finds an appropriate compiler for the initial bootstrap.
 
3830
When @env{CC} is used, the definition should contain the options that are
 
3831
needed whenever @env{CC} is used.
 
3832
 
 
3833
Specifically, options that determine the runtime architecture must be
 
3834
in @env{CC} to correctly select the target for the build.  It is also
 
3835
convenient to place many other compiler options in @env{CC}.  For example,
 
3836
@env{CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"}
 
3837
can be used to bootstrap the GCC 3.3 branch with the HP compiler in
 
3838
64-bit K&R/bundled mode.  The @option{+DA2.0W} option will result in
 
3839
the automatic selection of the @samp{hppa64-hp-hpux11*} target.  The
 
3840
macro definition table of cpp needs to be increased for a successful
 
3841
build with the HP compiler.  _CLASSIC_TYPES and _HPUX_SOURCE need to
 
3842
be defined when building with the bundled compiler, or when using the
 
3843
@option{-Ac} option.  These defines aren't necessary with @option{-Ae}.
 
3844
 
 
3845
It is best to explicitly configure the @samp{hppa64-hp-hpux11*} target
 
3846
with the @option{--with-ld=@dots{}} option.  This overrides the standard
 
3847
search for ld.  The two linkers supported on this target require different
 
3848
commands.  The default linker is determined during configuration.  As a
 
3849
result, it's not possible to switch linkers in the middle of a GCC build.
 
3850
This has been reported to sometimes occur in unified builds of binutils
 
3851
and GCC@.
 
3852
 
 
3853
A recent linker patch must be installed for the correct operation of
 
3854
GCC 3.3 and later.  @code{PHSS_26559} and @code{PHSS_24304} are the
 
3855
oldest linker patches that are known to work.  They are for HP-UX
 
3856
11.00 and 11.11, respectively.  @code{PHSS_24303}, the companion to
 
3857
@code{PHSS_24304}, might be usable but it hasn't been tested.  These
 
3858
patches have been superseded.  Consult the HP patch database to obtain
 
3859
the currently recommended linker patch for your system.
 
3860
 
 
3861
The patches are necessary for the support of weak symbols on the
 
3862
32-bit port, and for the running of initializers and finalizers.  Weak
 
3863
symbols are implemented using SOM secondary definition symbols.  Prior
 
3864
to HP-UX 11, there are bugs in the linker support for secondary symbols.
 
3865
The patches correct a problem of linker core dumps creating shared
 
3866
libraries containing secondary symbols, as well as various other
 
3867
linking issues involving secondary symbols.
 
3868
 
 
3869
GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
 
3870
run initializers and finalizers on the 64-bit port.  The 32-bit port
 
3871
uses the linker @option{+init} and @option{+fini} options for the same
 
3872
purpose.  The patches correct various problems with the +init/+fini
 
3873
options, including program core dumps.  Binutils 2.14 corrects a
 
3874
problem on the 64-bit port resulting from HP's non-standard use of
 
3875
the .init and .fini sections for array initializers and finalizers.
 
3876
 
 
3877
Although the HP and GNU linkers are both supported for the
 
3878
@samp{hppa64-hp-hpux11*} target, it is strongly recommended that the
 
3879
HP linker be used for link editing on this target.
 
3880
 
 
3881
At this time, the GNU linker does not support the creation of long
 
3882
branch stubs.  As a result, it can't successfully link binaries
 
3883
containing branch offsets larger than 8 megabytes.  In addition,
 
3884
there are problems linking shared libraries, linking executables
 
3885
with @option{-static}, and with dwarf2 unwind and exception support.
 
3886
It also doesn't provide stubs for internal calls to global functions
 
3887
in shared libraries, so these calls can't be overloaded.
 
3888
 
 
3889
The HP dynamic loader does not support GNU symbol versioning, so symbol
 
3890
versioning is not supported.  It may be necessary to disable symbol
 
3891
versioning with @option{--disable-symvers} when using GNU ld.
 
3892
 
 
3893
POSIX threads are the default.  The optional DCE thread library is not
 
3894
supported, so @option{--enable-threads=dce} does not work.
 
3895
 
 
3896
@html
 
3897
<hr />
 
3898
@end html
 
3899
@anchor{x-x-linux-gnu}
 
3900
@heading *-*-linux-gnu
 
3901
Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
 
3902
in glibc 2.2.5 and later.  More information is available in the
 
3903
libstdc++-v3 documentation.
 
3904
 
 
3905
@html
 
3906
<hr />
 
3907
@end html
 
3908
@anchor{ix86-x-linux}
 
3909
@heading i?86-*-linux*
 
3910
As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
 
3911
See @uref{http://gcc.gnu.org/PR10877,,bug 10877} for more information.
 
3912
 
 
3913
If you receive Signal 11 errors when building on GNU/Linux, then it is
 
3914
possible you have a hardware problem.  Further information on this can be
 
3915
found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
 
3916
 
 
3917
@html
 
3918
<hr />
 
3919
@end html
 
3920
@anchor{ix86-x-solaris210}
 
3921
@heading i?86-*-solaris2.10
 
3922
Use this for Solaris 10 or later on x86 and x86-64 systems.  Starting
 
3923
with GCC 4.7, there is also a 64-bit @samp{amd64-*-solaris2.1[0-9]*} or
 
3924
@samp{x86_64-*-solaris2.1[0-9]*} configuration that corresponds to
 
3925
@samp{sparcv9-sun-solaris2*}.
 
3926
 
 
3927
It is recommended that you configure GCC to use the GNU assembler.  The
 
3928
versions included in Solaris 10, from GNU binutils 2.15 (in
 
3929
@file{/usr/sfw/bin/gas}), and Solaris 11, from GNU binutils 2.19 or
 
3930
newer (also available as @file{/usr/bin/gas} and
 
3931
@file{/usr/gnu/bin/as}), work fine.  Please note that the current
 
3932
version, from GNU binutils 2.26, only works on Solaris 12 when using the
 
3933
Solaris linker.  On Solaris 10 and 11, you either have to wait for GNU
 
3934
binutils 2.26.1 or newer, or stay with GNU binutils 2.25.1.  Recent
 
3935
versions of the Solaris assembler in @file{/usr/ccs/bin/as} work almost
 
3936
as well, though.
 
3937
@c FIXME: as patch requirements?
 
3938
 
 
3939
For linking, the Solaris linker, is preferred.  If you want to use the GNU
 
3940
linker instead, note that due to a packaging bug the version in Solaris
 
3941
10, from GNU binutils 2.15 (in @file{/usr/sfw/bin/gld}), cannot be used,
 
3942
while the version in Solaris 11, from GNU binutils 2.19 or newer (also
 
3943
in @file{/usr/gnu/bin/ld} and @file{/usr/bin/gld}), works, as does the
 
3944
latest version, from GNU binutils 2.26.
 
3945
 
 
3946
To use GNU @command{as}, configure with the options
 
3947
@option{--with-gnu-as --with-as=@//usr/@/sfw/@/bin/@/gas}.  It may be necessary
 
3948
to configure with @option{--without-gnu-ld --with-ld=@//usr/@/ccs/@/bin/@/ld} to
 
3949
guarantee use of Sun @command{ld}.
 
3950
@c FIXME: why --without-gnu-ld --with-ld?
 
3951
 
 
3952
@html
 
3953
<hr />
 
3954
@end html
 
3955
@anchor{ia64-x-linux}
 
3956
@heading ia64-*-linux
 
3957
IA-64 processor (also known as IPF, or Itanium Processor Family)
 
3958
running GNU/Linux.
 
3959
 
 
3960
If you are using the installed system libunwind library with
 
3961
@option{--with-system-libunwind}, then you must use libunwind 0.98 or
 
3962
later.
 
3963
 
 
3964
None of the following versions of GCC has an ABI that is compatible
 
3965
with any of the other versions in this list, with the exception that
 
3966
Red Hat 2.96 and Trillian 000171 are compatible with each other:
 
3967
3.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717.
 
3968
This primarily affects C++ programs and programs that create shared libraries.
 
3969
GCC 3.1 or later is recommended for compiling linux, the kernel.
 
3970
As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
 
3971
more major ABI changes are expected.
 
3972
 
 
3973
@html
 
3974
<hr />
 
3975
@end html
 
3976
@anchor{ia64-x-hpux}
 
3977
@heading ia64-*-hpux*
 
3978
Building GCC on this target requires the GNU Assembler.  The bundled HP
 
3979
assembler will not work.  To prevent GCC from using the wrong assembler,
 
3980
the option @option{--with-gnu-as} may be necessary.
 
3981
 
 
3982
The GCC libunwind library has not been ported to HPUX@.  This means that for
 
3983
GCC versions 3.2.3 and earlier, @option{--enable-libunwind-exceptions}
 
3984
is required to build GCC@.  For GCC 3.3 and later, this is the default.
 
3985
For gcc 3.4.3 and later, @option{--enable-libunwind-exceptions} is
 
3986
removed and the system libunwind library will always be used.
 
3987
 
 
3988
@html
 
3989
<hr />
 
3990
<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
 
3991
@end html
 
3992
@anchor{x-ibm-aix}
 
3993
@heading *-ibm-aix*
 
3994
Support for AIX version 3 and older was discontinued in GCC 3.4.
 
3995
Support for AIX version 4.2 and older was discontinued in GCC 4.5.
 
3996
 
 
3997
``out of memory'' bootstrap failures may indicate a problem with
 
3998
process resource limits (ulimit).  Hard limits are configured in the
 
3999
@file{/etc/security/limits} system configuration file.
 
4000
 
 
4001
GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ / xlC
 
4002
cannot bootstrap GCC.  xlc can bootstrap an older version of GCC and
 
4003
G++ can bootstrap recent releases of GCC.
 
4004
 
 
4005
GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
 
4006
with an earlier release of GCC is recommended.  Bootstrapping with XLC
 
4007
requires a larger data segment, which can be enabled through the
 
4008
@var{LDR_CNTRL} environment variable, e.g.,
 
4009
 
 
4010
@smallexample
 
4011
% LDR_CNTRL=MAXDATA=0x50000000
 
4012
% export LDR_CNTRL
 
4013
@end smallexample
 
4014
 
 
4015
One can start with a pre-compiled version of GCC to build from
 
4016
sources.  One may delete GCC's ``fixed'' header files when starting
 
4017
with a version of GCC built for an earlier release of AIX.
 
4018
 
 
4019
To speed up the configuration phases of bootstrapping and installing GCC,
 
4020
one may use GNU Bash instead of AIX @command{/bin/sh}, e.g.,
 
4021
 
 
4022
@smallexample
 
4023
% CONFIG_SHELL=/opt/freeware/bin/bash
 
4024
% export CONFIG_SHELL
 
4025
@end smallexample
 
4026
 
 
4027
and then proceed as described in @uref{build.html,,the build
 
4028
instructions}, where we strongly recommend specifying an absolute path
 
4029
to invoke @var{srcdir}/configure.
 
4030
 
 
4031
Because GCC on AIX is built as a 32-bit executable by default,
 
4032
(although it can generate 64-bit programs) the GMP and MPFR libraries
 
4033
required by gfortran must be 32-bit libraries.  Building GMP and MPFR
 
4034
as static archive libraries works better than shared libraries.
 
4035
 
 
4036
Errors involving @code{alloca} when building GCC generally are due
 
4037
to an incorrect definition of @code{CC} in the Makefile or mixing files
 
4038
compiled with the native C compiler and GCC@.  During the stage1 phase of
 
4039
the build, the native AIX compiler @strong{must} be invoked as @command{cc}
 
4040
(not @command{xlc}).  Once @command{configure} has been informed of
 
4041
@command{xlc}, one needs to use @samp{make distclean} to remove the
 
4042
configure cache files and ensure that @env{CC} environment variable
 
4043
does not provide a definition that will confuse @command{configure}.
 
4044
If this error occurs during stage2 or later, then the problem most likely
 
4045
is the version of Make (see above).
 
4046
 
 
4047
The native @command{as} and @command{ld} are recommended for
 
4048
bootstrapping on AIX@.  The GNU Assembler, GNU Linker, and GNU
 
4049
Binutils version 2.20 is the minimum level that supports bootstrap on
 
4050
AIX 5@.  The GNU Assembler has not been updated to support AIX 6@ or
 
4051
AIX 7.  The native AIX tools do interoperate with GCC@.
 
4052
 
 
4053
AIX 7.1 added partial support for DWARF debugging, but full support
 
4054
requires AIX 7.1 TL03 SP7 that supports additional DWARF sections and
 
4055
fixes a bug in the assembler.  AIX 7.1 TL03 SP5 distributed a version
 
4056
of libm.a missing important symbols; a fix for IV77796 will be
 
4057
included in SP6.
 
4058
 
 
4059
AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
 
4060
assembler change that sometimes produces corrupt assembly files
 
4061
causing AIX linker errors.  The bug breaks GCC bootstrap on AIX and
 
4062
can cause compilation failures with existing GCC installations.  An
 
4063
AIX iFix for AIX 5.3 is available (APAR IZ98385 for AIX 5.3 TL10, APAR
 
4064
IZ98477 for AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12). AIX 5.3 TL11 SP8,
 
4065
AIX 5.3 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6,
 
4066
AIX 6.1 TL07 and AIX 7.1 TL01 should include the fix.
 
4067
 
 
4068
Building @file{libstdc++.a} requires a fix for an AIX Assembler bug
 
4069
APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a
 
4070
fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
 
4071
referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
 
4072
 
 
4073
@anchor{TransferAixShobj}
 
4074
@samp{libstdc++} in GCC 3.4 increments the major version number of the
 
4075
shared object and GCC installation places the @file{libstdc++.a}
 
4076
shared library in a common location which will overwrite the and GCC
 
4077
3.3 version of the shared library.  Applications either need to be
 
4078
re-linked against the new shared library or the GCC 3.1 and GCC 3.3
 
4079
versions of the @samp{libstdc++} shared object needs to be available
 
4080
to the AIX runtime loader.  The GCC 3.1 @samp{libstdc++.so.4}, if
 
4081
present, and GCC 3.3 @samp{libstdc++.so.5} shared objects can be
 
4082
installed for runtime dynamic loading using the following steps to set
 
4083
the @samp{F_LOADONLY} flag in the shared object for @emph{each}
 
4084
multilib @file{libstdc++.a} installed:
 
4085
 
 
4086
Extract the shared objects from the currently installed
 
4087
@file{libstdc++.a} archive:
 
4088
@smallexample
 
4089
% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
 
4090
@end smallexample
 
4091
 
 
4092
Enable the @samp{F_LOADONLY} flag so that the shared object will be
 
4093
available for runtime dynamic loading, but not linking:
 
4094
@smallexample
 
4095
% strip -e libstdc++.so.4 libstdc++.so.5
 
4096
@end smallexample
 
4097
 
 
4098
Archive the runtime-only shared object in the GCC 3.4
 
4099
@file{libstdc++.a} archive:
 
4100
@smallexample
 
4101
% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
 
4102
@end smallexample
 
4103
 
 
4104
Eventually, the
 
4105
@uref{./configure.html#WithAixSoname,,@option{--with-aix-soname=svr4}}
 
4106
configure option may drop the need for this procedure for libraries that
 
4107
support it.
 
4108
 
 
4109
Linking executables and shared libraries may produce warnings of
 
4110
duplicate symbols.  The assembly files generated by GCC for AIX always
 
4111
have included multiple symbol definitions for certain global variable
 
4112
and function declarations in the original program.  The warnings should
 
4113
not prevent the linker from producing a correct library or runnable
 
4114
executable.
 
4115
 
 
4116
AIX 4.3 utilizes a ``large format'' archive to support both 32-bit and
 
4117
64-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
 
4118
to parse archive libraries did not handle the new format correctly.
 
4119
These routines are used by GCC and result in error messages during
 
4120
linking such as ``not a COFF file''.  The version of the routines shipped
 
4121
with AIX 4.3.1 should work for a 32-bit environment.  The @option{-g}
 
4122
option of the archive command may be used to create archives of 32-bit
 
4123
objects using the original ``small format''.  A correct version of the
 
4124
routines is shipped with AIX 4.3.2 and above.
 
4125
 
 
4126
Some versions of the AIX binder (linker) can fail with a relocation
 
4127
overflow severe error when the @option{-bbigtoc} option is used to link
 
4128
GCC-produced object files into an executable that overflows the TOC@.  A fix
 
4129
for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
 
4130
available from IBM Customer Support and from its
 
4131
@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
 
4132
website as PTF U455193.
 
4133
 
 
4134
The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
 
4135
with a segmentation fault when invoked by any version of GCC@.  A fix for
 
4136
APAR IX87327 is available from IBM Customer Support and from its
 
4137
@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
 
4138
website as PTF U461879.  This fix is incorporated in AIX 4.3.3 and above.
 
4139
 
 
4140
The initial assembler shipped with AIX 4.3.0 generates incorrect object
 
4141
files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
 
4142
TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
 
4143
@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
 
4144
website as PTF U453956.  This fix is incorporated in AIX 4.3.1 and above.
 
4145
 
 
4146
AIX provides National Language Support (NLS)@.  Compilers and assemblers
 
4147
use NLS to support locale-specific representations of various data
 
4148
formats including floating-point numbers (e.g., @samp{.}  vs @samp{,} for
 
4149
separating decimal fractions).  There have been problems reported where
 
4150
GCC does not produce the same floating-point formats that the assembler
 
4151
expects.  If one encounters this problem, set the @env{LANG}
 
4152
environment variable to @samp{C} or @samp{En_US}.
 
4153
 
 
4154
A default can be specified with the @option{-mcpu=@var{cpu_type}}
 
4155
switch and using the configure option @option{--with-cpu-@var{cpu_type}}.
 
4156
 
 
4157
@html
 
4158
<hr />
 
4159
@end html
 
4160
@anchor{iq2000-x-elf}
 
4161
@heading iq2000-*-elf
 
4162
Vitesse IQ2000 processors.  These are used in embedded
 
4163
applications.  There are no standard Unix configurations.
 
4164
 
 
4165
@html
 
4166
<hr />
 
4167
@end html
 
4168
@anchor{lm32-x-elf}
 
4169
@heading lm32-*-elf
 
4170
Lattice Mico32 processor.
 
4171
This configuration is intended for embedded systems.
 
4172
 
 
4173
@html
 
4174
<hr />
 
4175
@end html
 
4176
@anchor{lm32-x-uclinux}
 
4177
@heading lm32-*-uclinux
 
4178
Lattice Mico32 processor.
 
4179
This configuration is intended for embedded systems running uClinux.
 
4180
 
 
4181
@html
 
4182
<hr />
 
4183
@end html
 
4184
@anchor{m32c-x-elf}
 
4185
@heading m32c-*-elf
 
4186
Renesas M32C processor.
 
4187
This configuration is intended for embedded systems.
 
4188
 
 
4189
@html
 
4190
<hr />
 
4191
@end html
 
4192
@anchor{m32r-x-elf}
 
4193
@heading m32r-*-elf
 
4194
Renesas M32R processor.
 
4195
This configuration is intended for embedded systems.
 
4196
 
 
4197
@html
 
4198
<hr />
 
4199
@end html
 
4200
@anchor{m68k-x-x}
 
4201
@heading m68k-*-*
 
4202
By default,
 
4203
@samp{m68k-*-elf*}, @samp{m68k-*-rtems},  @samp{m68k-*-uclinux} and
 
4204
@samp{m68k-*-linux}
 
4205
build libraries for both M680x0 and ColdFire processors.  If you only
 
4206
need the M680x0 libraries, you can omit the ColdFire ones by passing
 
4207
@option{--with-arch=m68k} to @command{configure}.  Alternatively, you
 
4208
can omit the M680x0 libraries by passing @option{--with-arch=cf} to
 
4209
@command{configure}.  These targets default to 5206 or 5475 code as
 
4210
appropriate for the target system when
 
4211
configured with @option{--with-arch=cf} and 68020 code otherwise.
 
4212
 
 
4213
The @samp{m68k-*-netbsd} and
 
4214
@samp{m68k-*-openbsd} targets also support the @option{--with-arch}
 
4215
option.  They will generate ColdFire CFV4e code when configured with
 
4216
@option{--with-arch=cf} and 68020 code otherwise.
 
4217
 
 
4218
You can override the default processors listed above by configuring
 
4219
with @option{--with-cpu=@var{target}}.  This @var{target} can either
 
4220
be a @option{-mcpu} argument or one of the following values:
 
4221
@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
 
4222
@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}.
 
4223
 
 
4224
GCC requires at least binutils version 2.17 on these targets.
 
4225
 
 
4226
@html
 
4227
<hr />
 
4228
@end html
 
4229
@anchor{m68k-x-uclinux}
 
4230
@heading m68k-*-uclinux
 
4231
GCC 4.3 changed the uClinux configuration so that it uses the
 
4232
@samp{m68k-linux-gnu} ABI rather than the @samp{m68k-elf} ABI.
 
4233
It also added improved support for C++ and flat shared libraries,
 
4234
both of which were ABI changes.
 
4235
 
 
4236
@html
 
4237
<hr />
 
4238
@end html
 
4239
@anchor{mep-x-elf}
 
4240
@heading mep-*-elf
 
4241
Toshiba Media embedded Processor.
 
4242
This configuration is intended for embedded systems.
 
4243
 
 
4244
@html
 
4245
<hr />
 
4246
@end html
 
4247
@anchor{microblaze-x-elf}
 
4248
@heading microblaze-*-elf
 
4249
Xilinx MicroBlaze processor.
 
4250
This configuration is intended for embedded systems.
 
4251
 
 
4252
@html
 
4253
<hr />
 
4254
@end html
 
4255
@anchor{mips-x-x}
 
4256
@heading mips-*-*
 
4257
If on a MIPS system you get an error message saying ``does not have gp
 
4258
sections for all it's [sic] sectons [sic]'', don't worry about it.  This
 
4259
happens whenever you use GAS with the MIPS linker, but there is not
 
4260
really anything wrong, and it is okay to use the output file.  You can
 
4261
stop such warnings by installing the GNU linker.
 
4262
 
 
4263
It would be nice to extend GAS to produce the gp tables, but they are
 
4264
optional, and there should not be a warning about their absence.
 
4265
 
 
4266
The libstdc++ atomic locking routines for MIPS targets requires MIPS II
 
4267
and later.  A patch went in just after the GCC 3.3 release to
 
4268
make @samp{mips*-*-*} use the generic implementation instead.  You can also
 
4269
configure for @samp{mipsel-elf} as a workaround.  The
 
4270
@samp{mips*-*-linux*} target continues to use the MIPS II routines.  More
 
4271
work on this is expected in future releases.
 
4272
 
 
4273
@c If you make --with-llsc the default for another target, please also
 
4274
@c update the description of the --with-llsc option.
 
4275
 
 
4276
The built-in @code{__sync_*} functions are available on MIPS II and
 
4277
later systems and others that support the @samp{ll}, @samp{sc} and
 
4278
@samp{sync} instructions.  This can be overridden by passing
 
4279
@option{--with-llsc} or @option{--without-llsc} when configuring GCC.
 
4280
Since the Linux kernel emulates these instructions if they are
 
4281
missing, the default for @samp{mips*-*-linux*} targets is
 
4282
@option{--with-llsc}.  The @option{--with-llsc} and
 
4283
@option{--without-llsc} configure options may be overridden at compile
 
4284
time by passing the @option{-mllsc} or @option{-mno-llsc} options to
 
4285
the compiler.
 
4286
 
 
4287
MIPS systems check for division by zero (unless
 
4288
@option{-mno-check-zero-division} is passed to the compiler) by
 
4289
generating either a conditional trap or a break instruction.  Using
 
4290
trap results in smaller code, but is only supported on MIPS II and
 
4291
later.  Also, some versions of the Linux kernel have a bug that
 
4292
prevents trap from generating the proper signal (@code{SIGFPE}).  To enable
 
4293
the use of break, use the @option{--with-divide=breaks}
 
4294
@command{configure} option when configuring GCC@.  The default is to
 
4295
use traps on systems that support them.
 
4296
 
 
4297
The assembler from GNU binutils 2.17 and earlier has a bug in the way
 
4298
it sorts relocations for REL targets (o32, o64, EABI).  This can cause
 
4299
bad code to be generated for simple C++ programs.  Also the linker
 
4300
from GNU binutils versions prior to 2.17 has a bug which causes the
 
4301
runtime linker stubs in very large programs, like @file{libgcj.so}, to
 
4302
be incorrectly generated.  GNU Binutils 2.18 and later (and snapshots
 
4303
made after Nov. 9, 2006) should be free from both of these problems.
 
4304
 
 
4305
@html
 
4306
<hr />
 
4307
@end html
 
4308
@anchor{mips-sgi-irix5}
 
4309
@heading mips-sgi-irix5
 
4310
Support for IRIX 5 has been removed in GCC 4.6.
 
4311
 
 
4312
@html
 
4313
<hr />
 
4314
@end html
 
4315
@anchor{mips-sgi-irix6}
 
4316
@heading mips-sgi-irix6
 
4317
Support for IRIX 6.5 has been removed in GCC 4.8.  Support for IRIX 6
 
4318
releases before 6.5 has been removed in GCC 4.6, as well as support for
 
4319
the O32 ABI.
 
4320
 
 
4321
@html
 
4322
<hr />
 
4323
@end html
 
4324
@anchor{moxie-x-elf}
 
4325
@heading moxie-*-elf
 
4326
The moxie processor.
 
4327
 
 
4328
@html
 
4329
<hr />
 
4330
@end html
 
4331
@anchor{msp430-x-elf}
 
4332
@heading msp430-*-elf
 
4333
TI MSP430 processor.
 
4334
This configuration is intended for embedded systems.
 
4335
 
 
4336
@html
 
4337
<hr />
 
4338
@end html
 
4339
@anchor{nds32le-x-elf}
 
4340
@heading nds32le-*-elf
 
4341
Andes NDS32 target in little endian mode.
 
4342
 
 
4343
@html
 
4344
<hr />
 
4345
@end html
 
4346
@anchor{nds32be-x-elf}
 
4347
@heading nds32be-*-elf
 
4348
Andes NDS32 target in big endian mode.
 
4349
 
 
4350
@html
 
4351
<hr />
 
4352
@end html
 
4353
@anchor{nvptx-x-none}
 
4354
@heading nvptx-*-none
 
4355
Nvidia PTX target.
 
4356
 
 
4357
Instead of GNU binutils, you will need to install
 
4358
@uref{https://github.com/MentorEmbedded/nvptx-tools/,,nvptx-tools}.
 
4359
Tell GCC where to find it:
 
4360
@option{--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin}.
 
4361
 
 
4362
A nvptx port of newlib is available at
 
4363
@uref{https://github.com/MentorEmbedded/nvptx-newlib/,,nvptx-newlib}.
 
4364
It can be automatically built together with GCC@.  For this, add a
 
4365
symbolic link to nvptx-newlib's @file{newlib} directory to the
 
4366
directory containing the GCC sources.
 
4367
 
 
4368
Use the @option{--disable-sjlj-exceptions} and
 
4369
@option{--enable-newlib-io-long-long} options when configuring.
 
4370
 
 
4371
@html
 
4372
<hr />
 
4373
@end html
 
4374
@anchor{powerpc-x-x}
 
4375
@heading powerpc-*-*
 
4376
You can specify a default version for the @option{-mcpu=@var{cpu_type}}
 
4377
switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
 
4378
 
 
4379
You will need
 
4380
@uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.15}
 
4381
or newer for a working GCC@.
 
4382
 
 
4383
@html
 
4384
<hr />
 
4385
@end html
 
4386
@anchor{powerpc-x-darwin}
 
4387
@heading powerpc-*-darwin*
 
4388
PowerPC running Darwin (Mac OS X kernel).
 
4389
 
 
4390
Pre-installed versions of Mac OS X may not include any developer tools,
 
4391
meaning that you will not be able to build GCC from source.  Tool
 
4392
binaries are available at
 
4393
@uref{http://opensource.apple.com/}.
 
4394
 
 
4395
This version of GCC requires at least cctools-590.36.  The
 
4396
cctools-590.36 package referenced from
 
4397
@uref{http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html} will not work
 
4398
on systems older than 10.3.9 (aka darwin7.9.0).
 
4399
 
 
4400
@html
 
4401
<hr />
 
4402
@end html
 
4403
@anchor{powerpc-x-elf}
 
4404
@heading powerpc-*-elf
 
4405
PowerPC system in big endian mode, running System V.4.
 
4406
 
 
4407
@html
 
4408
<hr />
 
4409
@end html
 
4410
@anchor{powerpc-x-linux-gnu}
 
4411
@heading powerpc*-*-linux-gnu*
 
4412
PowerPC system in big endian mode running Linux.
 
4413
 
 
4414
@html
 
4415
<hr />
 
4416
@end html
 
4417
@anchor{powerpc-x-netbsd}
 
4418
@heading powerpc-*-netbsd*
 
4419
PowerPC system in big endian mode running NetBSD@.
 
4420
 
 
4421
@html
 
4422
<hr />
 
4423
@end html
 
4424
@anchor{powerpc-x-eabisim}
 
4425
@heading powerpc-*-eabisim
 
4426
Embedded PowerPC system in big endian mode for use in running under the
 
4427
PSIM simulator.
 
4428
 
 
4429
@html
 
4430
<hr />
 
4431
@end html
 
4432
@anchor{powerpc-x-eabi}
 
4433
@heading powerpc-*-eabi
 
4434
Embedded PowerPC system in big endian mode.
 
4435
 
 
4436
@html
 
4437
<hr />
 
4438
@end html
 
4439
@anchor{powerpcle-x-elf}
 
4440
@heading powerpcle-*-elf
 
4441
PowerPC system in little endian mode, running System V.4.
 
4442
 
 
4443
@html
 
4444
<hr />
 
4445
@end html
 
4446
@anchor{powerpcle-x-eabisim}
 
4447
@heading powerpcle-*-eabisim
 
4448
Embedded PowerPC system in little endian mode for use in running under
 
4449
the PSIM simulator.
 
4450
 
 
4451
@html
 
4452
<hr />
 
4453
@end html
 
4454
@anchor{powerpcle-x-eabi}
 
4455
@heading powerpcle-*-eabi
 
4456
Embedded PowerPC system in little endian mode.
 
4457
 
 
4458
@html
 
4459
<hr />
 
4460
@end html
 
4461
@anchor{rl78-x-elf}
 
4462
@heading rl78-*-elf
 
4463
The Renesas RL78 processor.
 
4464
This configuration is intended for embedded systems.
 
4465
 
 
4466
@html
 
4467
<hr />
 
4468
@end html
 
4469
@anchor{rx-x-elf}
 
4470
@heading rx-*-elf
 
4471
The Renesas RX processor.  See
 
4472
@uref{http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&fp=/products/mpumcu/rx_family/rx600_series}
 
4473
for more information about this processor.
 
4474
 
 
4475
@html
 
4476
<hr />
 
4477
@end html
 
4478
@anchor{s390-x-linux}
 
4479
@heading s390-*-linux*
 
4480
S/390 system running GNU/Linux for S/390@.
 
4481
 
 
4482
@html
 
4483
<hr />
 
4484
@end html
 
4485
@anchor{s390x-x-linux}
 
4486
@heading s390x-*-linux*
 
4487
zSeries system (64-bit) running GNU/Linux for zSeries@.
 
4488
 
 
4489
@html
 
4490
<hr />
 
4491
@end html
 
4492
@anchor{s390x-ibm-tpf}
 
4493
@heading s390x-ibm-tpf*
 
4494
zSeries system (64-bit) running TPF@.  This platform is
 
4495
supported as cross-compilation target only.
 
4496
 
 
4497
@html
 
4498
<hr />
 
4499
@end html
 
4500
@c Please use Solaris 2 to refer to all release of Solaris, starting
 
4501
@c with 2.0 until 2.6, 7, 8, etc.  Solaris 1 was a marketing name for
 
4502
@c SunOS 4 releases which we don't use to avoid confusion.  Solaris
 
4503
@c alone is too unspecific and must be avoided.
 
4504
@anchor{x-x-solaris2}
 
4505
@heading *-*-solaris2*
 
4506
Support for Solaris 9 has been removed in GCC 4.10.  Support for Solaris
 
4507
8 has been removed in GCC 4.8.  Support for Solaris 7 has been removed
 
4508
in GCC 4.6.
 
4509
 
 
4510
Sun does not ship a C compiler with Solaris 2 before Solaris 10, though
 
4511
you can download the Sun Studio compilers for free.  In Solaris 10 and
 
4512
11, GCC 3.4.3 is available as @command{/usr/sfw/bin/gcc}.  Solaris 11
 
4513
also provides GCC 4.5.2, 4.7.3, and 4.8.2 as
 
4514
@command{/usr/gcc/4.5/bin/gcc} or similar.  Alternatively,
 
4515
you can install a pre-built GCC to bootstrap and install GCC.  See the
 
4516
@uref{binaries.html,,binaries page} for details.
 
4517
 
 
4518
The Solaris 2 @command{/bin/sh} will often fail to configure
 
4519
@samp{libstdc++-v3}, @samp{boehm-gc} or @samp{libjava}.  We therefore
 
4520
recommend using the following initial sequence of commands
 
4521
 
 
4522
@smallexample
 
4523
% CONFIG_SHELL=/bin/ksh
 
4524
% export CONFIG_SHELL
 
4525
@end smallexample
 
4526
 
 
4527
@noindent
 
4528
and proceed as described in @uref{configure.html,,the configure instructions}.
 
4529
In addition we strongly recommend specifying an absolute path to invoke
 
4530
@command{@var{srcdir}/configure}.
 
4531
 
 
4532
Solaris 10 comes with a number of optional OS packages.  Some of these
 
4533
are needed to use GCC fully, namely @code{SUNWarc},
 
4534
@code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm},
 
4535
@code{SUNWsprot}, and @code{SUNWtoo}.  If you did not install all
 
4536
optional packages when installing Solaris 10, you will need to verify that
 
4537
the packages that GCC needs are installed.
 
4538
To check whether an optional package is installed, use
 
4539
the @command{pkginfo} command.  To add an optional package, use the
 
4540
@command{pkgadd} command.  For further details, see the Solaris 10
 
4541
documentation.
 
4542
 
 
4543
Starting with Solaris 11, the package management has changed, so you
 
4544
need to check for @code{system/header}, @code{system/linker}, and
 
4545
@code{developer/assembler} packages.  Checking for and installing
 
4546
packages is done with the @command{pkg} command now.
 
4547
 
 
4548
Trying to use the linker and other tools in
 
4549
@file{/usr/ucb} to install GCC has been observed to cause trouble.
 
4550
For example, the linker may hang indefinitely.  The fix is to remove
 
4551
@file{/usr/ucb} from your @env{PATH}.
 
4552
 
 
4553
The build process works more smoothly with the legacy Sun tools so, if you
 
4554
have @file{/usr/xpg4/bin} in your @env{PATH}, we recommend that you place
 
4555
@file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build.
 
4556
 
 
4557
We recommend the use of the Solaris assembler or the GNU assembler, in
 
4558
conjunction with the Solaris linker.  The GNU @command{as}
 
4559
versions included in Solaris 10, from GNU binutils 2.15 (in
 
4560
@file{/usr/sfw/bin/gas}), and Solaris 11,
 
4561
from GNU binutils 2.19 or newer (also in @file{/usr/bin/gas} and
 
4562
@file{/usr/gnu/bin/as}), are known to work.
 
4563
Current versions of GNU binutils (2.26)
 
4564
are known to work as well, with the caveat mentioned in
 
4565
@uref{#ix86-x-solaris210,,i?86-*-solaris2.10} .  Note that your mileage may vary
 
4566
if you use a combination of the GNU tools and the Solaris tools: while the
 
4567
combination GNU @command{as} + Sun @command{ld} should reasonably work,
 
4568
the reverse combination Sun @command{as} + GNU @command{ld} may fail to
 
4569
build or cause memory corruption at runtime in some cases for C++ programs.
 
4570
@c FIXME: still?
 
4571
GNU @command{ld} usually works as well, although the version included in
 
4572
Solaris 10 cannot be used due to several bugs.  Again, the current
 
4573
version (2.26) is known to work, but generally lacks platform specific
 
4574
features, so better stay with Solaris @command{ld}.  To use the LTO linker
 
4575
plugin (@option{-fuse-linker-plugin}) with GNU @command{ld}, GNU
 
4576
binutils @emph{must} be configured with @option{--enable-largefile}.
 
4577
 
 
4578
To enable symbol versioning in @samp{libstdc++} with Solaris @command{ld},
 
4579
you need to have any version of GNU @command{c++filt}, which is part of
 
4580
GNU binutils.  @samp{libstdc++} symbol versioning will be disabled if no
 
4581
appropriate version is found.  Solaris @command{c++filt} from the Solaris Studio
 
4582
compilers does @emph{not} work.
 
4583
 
 
4584
Sun bug 4927647 sometimes causes random spurious testsuite failures
 
4585
related to missing diagnostic output.  This bug doesn't affect GCC
 
4586
itself, rather it is a kernel bug triggered by the @command{expect}
 
4587
program which is used only by the GCC testsuite driver.  When the bug
 
4588
causes the @command{expect} program to miss anticipated output, extra
 
4589
testsuite failures appear.
 
4590
 
 
4591
@html
 
4592
<hr />
 
4593
@end html
 
4594
@anchor{sparc-x-x}
 
4595
@heading sparc*-*-*
 
4596
This section contains general configuration information for all
 
4597
SPARC-based platforms.  In addition to reading this section, please
 
4598
read all other sections that match your target.
 
4599
 
 
4600
Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
 
4601
library and the MPC library are known to be miscompiled by earlier
 
4602
versions of GCC on these platforms.  We therefore recommend the use
 
4603
of the exact versions of these libraries listed as minimal versions
 
4604
in @uref{prerequisites.html,,the prerequisites}.
 
4605
 
 
4606
@html
 
4607
<hr />
 
4608
@end html
 
4609
@anchor{sparc-sun-solaris2}
 
4610
@heading sparc-sun-solaris2*
 
4611
When GCC is configured to use GNU binutils 2.14 or later, the binaries
 
4612
produced are smaller than the ones produced using Sun's native tools;
 
4613
this difference is quite significant for binaries containing debugging
 
4614
information.
 
4615
 
 
4616
Starting with Solaris 7, the operating system is capable of executing
 
4617
64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports
 
4618
this; the @option{-m64} option enables 64-bit code generation.
 
4619
However, if all you want is code tuned for the UltraSPARC CPU, you
 
4620
should try the @option{-mtune=ultrasparc} option instead, which produces
 
4621
code that, unlike full 64-bit code, can still run on non-UltraSPARC
 
4622
machines.
 
4623
 
 
4624
When configuring the GNU Multiple Precision Library (GMP), the MPFR
 
4625
library or the MPC library on a Solaris 7 or later system, the canonical
 
4626
target triplet must be specified as the @command{build} parameter on the
 
4627
configure line.  This target triplet can be obtained by invoking @command{./config.guess} in the toplevel source directory of GCC (and
 
4628
not that of GMP or MPFR or MPC).  For example on a Solaris 9 system:
 
4629
 
 
4630
@smallexample
 
4631
% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
 
4632
@end smallexample
 
4633
 
 
4634
@html
 
4635
<hr />
 
4636
@end html
 
4637
@anchor{sparc-sun-solaris210}
 
4638
@heading sparc-sun-solaris2.10
 
4639
There is a bug in older versions of the Sun assembler which breaks
 
4640
thread-local storage (TLS).  A typical error message is
 
4641
 
 
4642
@smallexample
 
4643
ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
 
4644
  symbol <unknown>: bad symbol type SECT: symbol type must be TLS
 
4645
@end smallexample
 
4646
 
 
4647
@noindent
 
4648
This bug is fixed in Sun patch 118683-03 or later.
 
4649
 
 
4650
@html
 
4651
<hr />
 
4652
@end html
 
4653
@anchor{sparc-x-linux}
 
4654
@heading sparc-*-linux*
 
4655
 
 
4656
GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
 
4657
or newer on this platform.  All earlier binutils and glibc
 
4658
releases mishandled unaligned relocations on @code{sparc-*-*} targets.
 
4659
 
 
4660
 
 
4661
@html
 
4662
<hr />
 
4663
@end html
 
4664
@anchor{sparc64-x-solaris2}
 
4665
@heading sparc64-*-solaris2*
 
4666
When configuring the GNU Multiple Precision Library (GMP), the MPFR
 
4667
library or the MPC library, the canonical target triplet must be specified
 
4668
as the @command{build} parameter on the configure line.  For example
 
4669
on a Solaris 9 system:
 
4670
 
 
4671
@smallexample
 
4672
% ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
 
4673
@end smallexample
 
4674
 
 
4675
@html
 
4676
<hr />
 
4677
@end html
 
4678
@anchor{sparcv9-x-solaris2}
 
4679
@heading sparcv9-*-solaris2*
 
4680
This is a synonym for @samp{sparc64-*-solaris2*}.
 
4681
 
 
4682
@html
 
4683
<hr />
 
4684
@end html
 
4685
@anchor{c6x-x-x}
 
4686
@heading c6x-*-*
 
4687
The C6X family of processors. This port requires binutils-2.22 or newer.
 
4688
 
 
4689
@html
 
4690
<hr />
 
4691
@end html
 
4692
@anchor{tilegx-*-linux}
 
4693
@heading tilegx-*-linux*
 
4694
The TILE-Gx processor in little endian mode, running GNU/Linux.  This
 
4695
port requires binutils-2.22 or newer.
 
4696
 
 
4697
@html
 
4698
<hr />
 
4699
@end html
 
4700
@anchor{tilegxbe-*-linux}
 
4701
@heading tilegxbe-*-linux*
 
4702
The TILE-Gx processor in big endian mode, running GNU/Linux.  This
 
4703
port requires binutils-2.23 or newer.
 
4704
 
 
4705
@html
 
4706
<hr />
 
4707
@end html
 
4708
@anchor{tilepro-*-linux}
 
4709
@heading tilepro-*-linux*
 
4710
The TILEPro processor running GNU/Linux.  This port requires
 
4711
binutils-2.22 or newer.
 
4712
 
 
4713
@html
 
4714
<hr />
 
4715
@end html
 
4716
@anchor{visium-x-elf}
 
4717
@heading visium-*-elf
 
4718
CDS VISIUMcore processor.
 
4719
This configuration is intended for embedded systems.
 
4720
 
 
4721
@html
 
4722
<hr />
 
4723
@end html
 
4724
@anchor{x-x-vxworks}
 
4725
@heading *-*-vxworks*
 
4726
Support for VxWorks is in flux.  At present GCC supports @emph{only} the
 
4727
very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC@.
 
4728
We welcome patches for other architectures supported by VxWorks 5.5.
 
4729
Support for VxWorks AE would also be welcome; we believe this is merely
 
4730
a matter of writing an appropriate ``configlette'' (see below).  We are
 
4731
not interested in supporting older, a.out or COFF-based, versions of
 
4732
VxWorks in GCC 3.
 
4733
 
 
4734
VxWorks comes with an older version of GCC installed in
 
4735
@file{@var{$WIND_BASE}/host}; we recommend you do not overwrite it.
 
4736
Choose an installation @var{prefix} entirely outside @var{$WIND_BASE}.
 
4737
Before running @command{configure}, create the directories @file{@var{prefix}}
 
4738
and @file{@var{prefix}/bin}.  Link or copy the appropriate assembler,
 
4739
linker, etc.@: into @file{@var{prefix}/bin}, and set your @var{PATH} to
 
4740
include that directory while running both @command{configure} and
 
4741
@command{make}.
 
4742
 
 
4743
You must give @command{configure} the
 
4744
@option{--with-headers=@var{$WIND_BASE}/target/h} switch so that it can
 
4745
find the VxWorks system headers.  Since VxWorks is a cross compilation
 
4746
target only, you must also specify @option{--target=@var{target}}.
 
4747
@command{configure} will attempt to create the directory
 
4748
@file{@var{prefix}/@var{target}/sys-include} and copy files into it;
 
4749
make sure the user running @command{configure} has sufficient privilege
 
4750
to do so.
 
4751
 
 
4752
GCC's exception handling runtime requires a special ``configlette''
 
4753
module, @file{contrib/gthr_supp_vxw_5x.c}.  Follow the instructions in
 
4754
that file to add the module to your kernel build.  (Future versions of
 
4755
VxWorks will incorporate this module.)
 
4756
 
 
4757
@html
 
4758
<hr />
 
4759
@end html
 
4760
@anchor{x86-64-x-x}
 
4761
@heading x86_64-*-*, amd64-*-*
 
4762
GCC supports the x86-64 architecture implemented by the AMD64 processor
 
4763
(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD@.
 
4764
On GNU/Linux the default is a bi-arch compiler which is able to generate
 
4765
both 64-bit x86-64 and 32-bit x86 code (via the @option{-m32} switch).
 
4766
 
 
4767
@html
 
4768
<hr />
 
4769
@end html
 
4770
@anchor{x86-64-x-solaris210}
 
4771
@heading x86_64-*-solaris2.1[0-9]*
 
4772
GCC also supports the x86-64 architecture implemented by the AMD64
 
4773
processor (@samp{amd64-*-*} is an alias for @samp{x86_64-*-*}) on
 
4774
Solaris 10 or later.  Unlike other systems, without special options a
 
4775
bi-arch compiler is built which generates 32-bit code by default, but
 
4776
can generate 64-bit x86-64 code with the @option{-m64} switch.  Since
 
4777
GCC 4.7, there is also a configuration that defaults to 64-bit code, but
 
4778
can generate 32-bit code with @option{-m32}.  To configure and build
 
4779
this way, you have to provide all support libraries like @file{libgmp}
 
4780
as 64-bit code, configure with @option{--target=x86_64-pc-solaris2.1x}
 
4781
and @samp{CC=gcc -m64}.
 
4782
 
 
4783
@html
 
4784
<hr />
 
4785
@end html
 
4786
@anchor{xtensa-x-elf}
 
4787
@heading xtensa*-*-elf
 
4788
This target is intended for embedded Xtensa systems using the
 
4789
@samp{newlib} C library.  It uses ELF but does not support shared
 
4790
objects.  Designed-defined instructions specified via the
 
4791
Tensilica Instruction Extension (TIE) language are only supported
 
4792
through inline assembly.
 
4793
 
 
4794
The Xtensa configuration information must be specified prior to
 
4795
building GCC@.  The @file{include/xtensa-config.h} header
 
4796
file contains the configuration information.  If you created your
 
4797
own Xtensa configuration with the Xtensa Processor Generator, the
 
4798
downloaded files include a customized copy of this header file,
 
4799
which you can use to replace the default header file.
 
4800
 
 
4801
@html
 
4802
<hr />
 
4803
@end html
 
4804
@anchor{xtensa-x-linux}
 
4805
@heading xtensa*-*-linux*
 
4806
This target is for Xtensa systems running GNU/Linux.  It supports ELF
 
4807
shared objects and the GNU C library (glibc).  It also generates
 
4808
position-independent code (PIC) regardless of whether the
 
4809
@option{-fpic} or @option{-fPIC} options are used.  In other
 
4810
respects, this target is the same as the
 
4811
@uref{#xtensa*-*-elf,,@samp{xtensa*-*-elf}} target.
 
4812
 
 
4813
@html
 
4814
<hr />
 
4815
@end html
 
4816
@anchor{windows}
 
4817
@heading Microsoft Windows
 
4818
 
 
4819
@subheading Intel 16-bit versions
 
4820
The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
 
4821
supported.
 
4822
 
 
4823
However, the 32-bit port has limited support for Microsoft
 
4824
Windows 3.11 in the Win32s environment, as a target only.  See below.
 
4825
 
 
4826
@subheading Intel 32-bit versions
 
4827
The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
 
4828
XP, and Windows Vista, are supported by several different target
 
4829
platforms.  These targets differ in which Windows subsystem they target
 
4830
and which C libraries are used.
 
4831
 
 
4832
@itemize
 
4833
@item Cygwin @uref{#x-x-cygwin,,*-*-cygwin}: Cygwin provides a user-space
 
4834
Linux API emulation layer in the Win32 subsystem.
 
4835
@item Interix @uref{#x-x-interix,,*-*-interix}: The Interix subsystem
 
4836
provides native support for POSIX.
 
4837
@item MinGW @uref{#x-x-mingw32,,*-*-mingw32}: MinGW is a native GCC port for
 
4838
the Win32 subsystem that provides a subset of POSIX.
 
4839
@item MKS i386-pc-mks: NuTCracker from MKS.  See
 
4840
@uref{http://www.mkssoftware.com/} for more information.
 
4841
@end itemize
 
4842
 
 
4843
@subheading Intel 64-bit versions
 
4844
GCC contains support for x86-64 using the mingw-w64
 
4845
runtime library, available from @uref{http://mingw-w64.sourceforge.net/}.
 
4846
This library should be used with the target triple x86_64-pc-mingw32.
 
4847
 
 
4848
Presently Windows for Itanium is not supported.
 
4849
 
 
4850
@subheading Windows CE
 
4851
Windows CE is supported as a target only on Hitachi
 
4852
SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
 
4853
 
 
4854
@subheading Other Windows Platforms
 
4855
GCC no longer supports Windows NT on the Alpha or PowerPC.
 
4856
 
 
4857
GCC no longer supports the Windows POSIX subsystem.  However, it does
 
4858
support the Interix subsystem.  See above.
 
4859
 
 
4860
Old target names including *-*-winnt and *-*-windowsnt are no longer used.
 
4861
 
 
4862
PW32 (i386-pc-pw32) support was never completed, and the project seems to
 
4863
be inactive.  See @uref{http://pw32.sourceforge.net/} for more information.
 
4864
 
 
4865
UWIN support has been removed due to a lack of maintenance.
 
4866
 
 
4867
@html
 
4868
<hr />
 
4869
@end html
 
4870
@anchor{x-x-cygwin}
 
4871
@heading *-*-cygwin
 
4872
Ports of GCC are included with the
 
4873
@uref{http://www.cygwin.com/,,Cygwin environment}.
 
4874
 
 
4875
GCC will build under Cygwin without modification; it does not build
 
4876
with Microsoft's C++ compiler and there are no plans to make it do so.
 
4877
 
 
4878
The Cygwin native compiler can be configured to target any 32-bit x86
 
4879
cpu architecture desired; the default is i686-pc-cygwin.  It should be
 
4880
used with as up-to-date a version of binutils as possible; use either
 
4881
the latest official GNU binutils release in the Cygwin distribution,
 
4882
or version 2.20 or above if building your own.
 
4883
 
 
4884
@html
 
4885
<hr />
 
4886
@end html
 
4887
@anchor{x-x-interix}
 
4888
@heading *-*-interix
 
4889
The Interix target is used by OpenNT, Interix, Services For UNIX (SFU),
 
4890
and Subsystem for UNIX-based Applications (SUA).  Applications compiled
 
4891
with this target run in the Interix subsystem, which is separate from
 
4892
the Win32 subsystem.  This target was last known to work in GCC 3.3.
 
4893
 
 
4894
@html
 
4895
<hr />
 
4896
@end html
 
4897
@anchor{x-x-mingw32}
 
4898
@heading *-*-mingw32
 
4899
GCC will build with and support only MinGW runtime 3.12 and later.
 
4900
Earlier versions of headers are incompatible with the new default semantics
 
4901
of @code{extern inline} in @code{-std=c99} and @code{-std=gnu99} modes.
 
4902
 
 
4903
@html
 
4904
<hr />
 
4905
@end html
 
4906
@anchor{older}
 
4907
@heading Older systems
 
4908
GCC contains support files for many older (1980s and early
 
4909
1990s) Unix variants.  For the most part, support for these systems
 
4910
has not been deliberately removed, but it has not been maintained for
 
4911
several years and may suffer from bitrot.
 
4912
 
 
4913
Starting with GCC 3.1, each release has a list of ``obsoleted'' systems.
 
4914
Support for these systems is still present in that release, but
 
4915
@command{configure} will fail unless the @option{--enable-obsolete}
 
4916
option is given.  Unless a maintainer steps forward, support for these
 
4917
systems will be removed from the next release of GCC@.
 
4918
 
 
4919
Support for old systems as hosts for GCC can cause problems if the
 
4920
workarounds for compiler, library and operating system bugs affect the
 
4921
cleanliness or maintainability of the rest of GCC@.  In some cases, to
 
4922
bring GCC up on such a system, if still possible with current GCC, may
 
4923
require first installing an old version of GCC which did work on that
 
4924
system, and using it to compile a more recent GCC, to avoid bugs in the
 
4925
vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
 
4926
@file{old-releases} directory on the @uref{../mirrors.html,,GCC mirror
 
4927
sites}.  Header bugs may generally be avoided using
 
4928
@command{fixincludes}, but bugs or deficiencies in libraries and the
 
4929
operating system may still cause problems.
 
4930
 
 
4931
Support for older systems as targets for cross-compilation is less
 
4932
problematic than support for them as hosts for GCC; if an enthusiast
 
4933
wishes to make such a target work again (including resurrecting any of
 
4934
the targets that never worked with GCC 2, starting from the last
 
4935
version before they were removed), patches
 
4936
@uref{../contribute.html,,following the usual requirements} would be
 
4937
likely to be accepted, since they should not affect the support for more
 
4938
modern targets.
 
4939
 
 
4940
For some systems, old versions of GNU binutils may also be useful,
 
4941
and are available from @file{pub/binutils/old-releases} on
 
4942
@uref{http://sourceware.org/mirrors.html,,sourceware.org mirror sites}.
 
4943
 
 
4944
Some of the information on specific systems above relates to
 
4945
such older systems, but much of the information
 
4946
about GCC on such systems (which may no longer be applicable to
 
4947
current GCC) is to be found in the GCC texinfo manual.
 
4948
 
 
4949
@html
 
4950
<hr />
 
4951
@end html
 
4952
@anchor{elf}
 
4953
@heading all ELF targets (SVR4, Solaris 2, etc.)
 
4954
C++ support is significantly better on ELF targets if you use the
 
4955
@uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of
 
4956
inlines, vtables and template instantiations will be discarded
 
4957
automatically.
 
4958
 
 
4959
 
 
4960
@html
 
4961
<hr />
 
4962
<p>
 
4963
@end html
 
4964
@ifhtml
 
4965
@uref{./index.html,,Return to the GCC Installation page}
 
4966
@end ifhtml
 
4967
@end ifset
 
4968
 
 
4969
@c ***Old documentation******************************************************
 
4970
@ifset oldhtml
 
4971
@include install-old.texi
 
4972
@html
 
4973
<hr />
 
4974
<p>
 
4975
@end html
 
4976
@ifhtml
 
4977
@uref{./index.html,,Return to the GCC Installation page}
 
4978
@end ifhtml
 
4979
@end ifset
 
4980
 
 
4981
@c ***GFDL********************************************************************
 
4982
@ifset gfdlhtml
 
4983
@include fdl.texi
 
4984
@html
 
4985
<hr />
 
4986
<p>
 
4987
@end html
 
4988
@ifhtml
 
4989
@uref{./index.html,,Return to the GCC Installation page}
 
4990
@end ifhtml
 
4991
@end ifset
 
4992
 
 
4993
@c ***************************************************************************
 
4994
@c Part 6 The End of the Document
 
4995
@ifinfo
 
4996
@comment node-name,     next,          previous, up
 
4997
@node    Concept Index, , GNU Free Documentation License, Top
 
4998
@end ifinfo
 
4999
 
 
5000
@ifinfo
 
5001
@unnumbered Concept Index
 
5002
 
 
5003
@printindex cp
 
5004
 
 
5005
@contents
 
5006
@end ifinfo
 
5007
@bye