]> gcc.gnu.org Git - gcc.git/blame - gcc/INSTALL
Bring in final gcc-2.8.0 changes.
[gcc.git] / gcc / INSTALL
CommitLineData
861bb6c1
JL
1This file documents the installation of the GNU compiler. Copyright
2(C) 1988, 1989, 1992, 1994, 1995 Free Software Foundation, Inc. You
3may copy, distribute, and modify it freely as long as you preserve this
4copyright notice and permission notice.
5
f2d76545
JL
6Note most of this information is out of date and superceded by the EGCS
7install procedures. It is provided for historical reference only.
8
861bb6c1
JL
9Installing GNU CC
10*****************
11
12 Here is the procedure for installing GNU CC on a Unix system. See
13*Note VMS Install::, for VMS systems. In this section we assume you
14compile in the same directory that contains the source files; see *Note
15Other Dir::, to find out how to compile in a separate directory on Unix
16systems.
17
18 You cannot install GNU C by itself on MSDOS; it will not compile
19under any MSDOS compiler except itself. You need to get the complete
20compilation package DJGPP, which includes binaries as well as sources,
21and includes all the necessary compilation tools and libraries.
22
23 1. If you have built GNU CC previously in the same directory for a
24 different target machine, do `make distclean' to delete all files
25 that might be invalid. One of the files this deletes is
26 `Makefile'; if `make distclean' complains that `Makefile' does not
27 exist, it probably means that the directory is already suitably
28 clean.
29
30 2. On a System V release 4 system, make sure `/usr/bin' precedes
31 `/usr/ucb' in `PATH'. The `cc' command in `/usr/ucb' uses
32 libraries which have bugs.
33
34 3. Specify the host, build and target machine configurations. You do
35 this by running the file `configure'.
36
37 The "build" machine is the system which you are using, the "host"
38 machine is the system where you want to run the resulting compiler
39 (normally the build machine), and the "target" machine is the
40 system for which you want the compiler to generate code.
41
42 If you are building a compiler to produce code for the machine it
43 runs on (a native compiler), you normally do not need to specify
44 any operands to `configure'; it will try to guess the type of
45 machine you are on and use that as the build, host and target
46 machines. So you don't need to specify a configuration when
47 building a native compiler unless `configure' cannot figure out
48 what your configuration is or guesses wrong.
49
50 In those cases, specify the build machine's "configuration name"
51 with the `--build' option; the host and target will default to be
52 the same as the build machine. (If you are building a
53 cross-compiler, see *Note Cross-Compiler::.)
54
55 Here is an example:
56
57 ./configure --build=sparc-sun-sunos4.1
58
59 A configuration name may be canonical or it may be more or less
60 abbreviated.
61
62 A canonical configuration name has three parts, separated by
63 dashes. It looks like this: `CPU-COMPANY-SYSTEM'. (The three
64 parts may themselves contain dashes; `configure' can figure out
65 which dashes serve which purpose.) For example,
66 `m68k-sun-sunos4.1' specifies a Sun 3.
67
68 You can also replace parts of the configuration by nicknames or
69 aliases. For example, `sun3' stands for `m68k-sun', so
70 `sun3-sunos4.1' is another way to specify a Sun 3. You can also
71 use simply `sun3-sunos', since the version of SunOS is assumed by
e9a25f70 72 default to be version 4.
861bb6c1
JL
73
74 You can specify a version number after any of the system types,
75 and some of the CPU types. In most cases, the version is
76 irrelevant, and will be ignored. So you might as well specify the
77 version if you know it.
78
79 See *Note Configurations::, for a list of supported configuration
80 names and notes on many of the configurations. You should check
81 the notes in that section before proceeding any further with the
82 installation of GNU CC.
83
84 There are four additional options you can specify independently to
85 describe variant hardware and software configurations. These are
86 `--with-gnu-as', `--with-gnu-ld', `--with-stabs' and `--nfp'.
87
88 `--with-gnu-as'
89 If you will use GNU CC with the GNU assembler (GAS), you
90 should declare this by using the `--with-gnu-as' option when
91 you run `configure'.
92
93 Using this option does not install GAS. It only modifies the
94 output of GNU CC to work with GAS. Building and installing
95 GAS is up to you.
96
97 Conversely, if you *do not* wish to use GAS and do not specify
98 `--with-gnu-as' when building GNU CC, it is up to you to make
99 sure that GAS is not installed. GNU CC searches for a
100 program named `as' in various directories; if the program it
101 finds is GAS, then it runs GAS. If you are not sure where
102 GNU CC finds the assembler it is using, try specifying `-v'
103 when you run it.
104
105 The systems where it makes a difference whether you use GAS
106 are
107 `hppa1.0-ANY-ANY', `hppa1.1-ANY-ANY', `i386-ANY-sysv',
108 `i386-ANY-isc',
e9a25f70
JL
109 `i860-ANY-bsd', `m68k-bull-sysv',
110 `m68k-hp-hpux', `m68k-sony-bsd',
111 `m68k-altos-sysv', `m68000-hp-hpux',
112 `m68000-att-sysv', `ANY-lynx-lynxos', and `mips-ANY'). On
113 any other system, `--with-gnu-as' has no effect.
861bb6c1
JL
114
115 On the systems listed above (except for the HP-PA, for ISC on
116 the 386, and for `mips-sgi-irix5.*'), if you use GAS, you
117 should also use the GNU linker (and specify `--with-gnu-ld').
118
119 `--with-gnu-ld'
120 Specify the option `--with-gnu-ld' if you plan to use the GNU
121 linker with GNU CC.
122
123 This option does not cause the GNU linker to be installed; it
124 just modifies the behavior of GNU CC to work with the GNU
125 linker. Specifically, it inhibits the installation of
126 `collect2', a program which otherwise serves as a front-end
127 for the system's linker on most configurations.
128
129 `--with-stabs'
130 On MIPS based systems and on Alphas, you must specify whether
131 you want GNU CC to create the normal ECOFF debugging format,
132 or to use BSD-style stabs passed through the ECOFF symbol
133 table. The normal ECOFF debug format cannot fully handle
134 languages other than C. BSD stabs format can handle other
135 languages, but it only works with the GNU debugger GDB.
136
137 Normally, GNU CC uses the ECOFF debugging format by default;
138 if you prefer BSD stabs, specify `--with-stabs' when you
139 configure GNU CC.
140
141 No matter which default you choose when you configure GNU CC,
142 the user can use the `-gcoff' and `-gstabs+' options to
143 specify explicitly the debug format for a particular
144 compilation.
145
146 `--with-stabs' is meaningful on the ISC system on the 386,
147 also, if `--with-gas' is used. It selects use of stabs
148 debugging information embedded in COFF output. This kind of
149 debugging information supports C++ well; ordinary COFF
150 debugging information does not.
151
152 `--with-stabs' is also meaningful on 386 systems running
153 SVR4. It selects use of stabs debugging information embedded
154 in ELF output. The C++ compiler currently (2.6.0) does not
155 support the DWARF debugging information normally used on 386
156 SVR4 platforms; stabs provide a workable alternative. This
157 requires gas and gdb, as the normal SVR4 tools can not
158 generate or interpret stabs.
159
160 `--nfp'
161 On certain systems, you must specify whether the machine has
162 a floating point unit. These systems include
163 `m68k-sun-sunosN' and `m68k-isi-bsd'. On any other system,
164 `--nfp' currently has no effect, though perhaps there are
165 other systems where it could usefully make a difference.
166
6d8ccdbb 167 `--enable-threads=TYPE'
e9a25f70
JL
168 Certain systems, notably Linux-based GNU systems, can't be
169 relied on to supply a threads facility for the Objective C
170 runtime and so will default to single-threaded runtime. They
171 may, however, have a library threads implementation
172 available, in which case threads can be enabled with this
173 option by supplying a suitable TYPE, probably `posix'. The
174 possibilities for TYPE are `single', `posix', `win32',
175 `solaris', `irix' and `mach'.
176
861bb6c1
JL
177 The `configure' script searches subdirectories of the source
178 directory for other compilers that are to be integrated into GNU
179 CC. The GNU compiler for C++, called G++ is in a subdirectory
180 named `cp'. `configure' inserts rules into `Makefile' to build
181 all of those compilers.
182
183 Here we spell out what files will be set up by `configure'.
184 Normally you need not be concerned with these files.
185
186 * A file named `config.h' is created that contains a `#include'
187 of the top-level config file for the machine you will run the
188 compiler on (*note The Configuration File:
189 (gcc.info)Config.). This file is responsible for defining
190 information about the host machine. It includes `tm.h'.
191
192 The top-level config file is located in the subdirectory
193 `config'. Its name is always `xm-SOMETHING.h'; usually
194 `xm-MACHINE.h', but there are some exceptions.
195
196 If your system does not support symbolic links, you might
197 want to set up `config.h' to contain a `#include' command
198 which refers to the appropriate file.
199
200 * A file named `tconfig.h' is created which includes the
201 top-level config file for your target machine. This is used
202 for compiling certain programs to run on that machine.
203
204 * A file named `tm.h' is created which includes the
205 machine-description macro file for your target machine. It
206 should be in the subdirectory `config' and its name is often
207 `MACHINE.h'.
208
209 * The command file `configure' also constructs the file
210 `Makefile' by adding some text to the template file
211 `Makefile.in'. The additional text comes from files in the
212 `config' directory, named `t-TARGET' and `x-HOST'. If these
213 files do not exist, it means nothing needs to be added for a
214 given target or host.
215
216 4. The standard directory for installing GNU CC is `/usr/local/lib'.
217 If you want to install its files somewhere else, specify
218 `--prefix=DIR' when you run `configure'. Here DIR is a directory
219 name to use instead of `/usr/local' for all purposes with one
220 exception: the directory `/usr/local/include' is searched for
221 header files no matter where you install the compiler. To override
222 this name, use the `--local-prefix' option below.
223
224 5. Specify `--local-prefix=DIR' if you want the compiler to search
225 directory `DIR/include' for locally installed header files
226 *instead* of `/usr/local/include'.
227
228 You should specify `--local-prefix' *only* if your site has a
229 different convention (not `/usr/local') for where to put
230 site-specific files.
231
e9a25f70
JL
232 The default value for `--local-prefix' is `/usr/local' regardless
233 of the value of `--prefix'. Specifying `--prefix' has no effect
234 on which directory GNU CC searches for local header files. This
235 may seem counterintuitive, but actually it is logical.
236
237 The purpose of `--prefix' is to specify where to *install GNU CC*.
238 The local header files in `/usr/local/include'--if you put any in
239 that directory--are not part of GNU CC. They are part of other
240 programs--perhaps many others. (GNU CC installs its own header
241 files in another directory which is based on the `--prefix' value.)
242
861bb6c1
JL
243 *Do not* specify `/usr' as the `--local-prefix'! The directory
244 you use for `--local-prefix' *must not* contain any of the
245 system's standard header files. If it did contain them, certain
246 programs would be miscompiled (including GNU Emacs, on certain
247 targets), because this would override and nullify the header file
248 corrections made by the `fixincludes' script.
249
e9a25f70
JL
250 Indications are that people who use this option use it based on
251 mistaken ideas of what it is for. People use it as if it specified
252 where to install part of GNU CC. Perhaps they make this assumption
253 because installing GNU CC creates the directory.
254
861bb6c1
JL
255 6. Make sure the Bison parser generator is installed. (This is
256 unnecessary if the Bison output files `c-parse.c' and `cexp.c' are
257 more recent than `c-parse.y' and `cexp.y' and you do not plan to
258 change the `.y' files.)
259
260 Bison versions older than Sept 8, 1988 will produce incorrect
261 output for `c-parse.c'.
262
263 7. If you have chosen a configuration for GNU CC which requires other
264 GNU tools (such as GAS or the GNU linker) instead of the standard
265 system tools, install the required tools in the build directory
266 under the names `as', `ld' or whatever is appropriate. This will
267 enable the compiler to find the proper tools for compilation of
268 the program `enquire'.
269
270 Alternatively, you can do subsequent compilation using a value of
271 the `PATH' environment variable such that the necessary GNU tools
272 come before the standard system tools.
273
274 8. Build the compiler. Just type `make LANGUAGES=c' in the compiler
275 directory.
276
277 `LANGUAGES=c' specifies that only the C compiler should be
278 compiled. The makefile normally builds compilers for all the
279 supported languages; currently, C, C++ and Objective C. However,
280 C is the only language that is sure to work when you build with
281 other non-GNU C compilers. In addition, building anything but C
282 at this stage is a waste of time.
283
284 In general, you can specify the languages to build by typing the
285 argument `LANGUAGES="LIST"', where LIST is one or more words from
286 the list `c', `c++', and `objective-c'. If you have any
287 additional GNU compilers as subdirectories of the GNU CC source
288 directory, you may also specify their names in this list.
289
290 Ignore any warnings you may see about "statement not reached" in
291 `insn-emit.c'; they are normal. Also, warnings about "unknown
292 escape sequence" are normal in `genopinit.c' and perhaps some
293 other files. Likewise, you should ignore warnings about "constant
294 is so large that it is unsigned" in `insn-emit.c' and
295 `insn-recog.c' and a warning about a comparison always being zero
296 in `enquire.o'. Any other compilation errors may represent bugs in
297 the port to your machine or operating system, and should be
298 investigated and reported.
299
300 Some commercial compilers fail to compile GNU CC because they have
301 bugs or limitations. For example, the Microsoft compiler is said
302 to run out of macro space. Some Ultrix compilers run out of
303 expression space; then you need to break up the statement where
304 the problem happens.
305
306 9. If you are building a cross-compiler, stop here. *Note
307 Cross-Compiler::.
308
309 10. Move the first-stage object files and executables into a
310 subdirectory with this command:
311
312 make stage1
313
314 The files are moved into a subdirectory named `stage1'. Once
315 installation is complete, you may wish to delete these files with
316 `rm -r stage1'.
317
318 11. If you have chosen a configuration for GNU CC which requires other
319 GNU tools (such as GAS or the GNU linker) instead of the standard
320 system tools, install the required tools in the `stage1'
321 subdirectory under the names `as', `ld' or whatever is
322 appropriate. This will enable the stage 1 compiler to find the
323 proper tools in the following stage.
324
325 Alternatively, you can do subsequent compilation using a value of
326 the `PATH' environment variable such that the necessary GNU tools
327 come before the standard system tools.
328
329 12. Recompile the compiler with itself, with this command:
330
331 make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2"
332
333 This is called making the stage 2 compiler.
334
335 The command shown above builds compilers for all the supported
336 languages. If you don't want them all, you can specify the
337 languages to build by typing the argument `LANGUAGES="LIST"'. LIST
338 should contain one or more words from the list `c', `c++',
339 `objective-c', and `proto'. Separate the words with spaces.
340 `proto' stands for the programs `protoize' and `unprotoize'; they
341 are not a separate language, but you use `LANGUAGES' to enable or
342 disable their installation.
343
344 If you are going to build the stage 3 compiler, then you might
345 want to build only the C language in stage 2.
346
347 Once you have built the stage 2 compiler, if you are short of disk
348 space, you can delete the subdirectory `stage1'.
349
350 On a 68000 or 68020 system lacking floating point hardware, unless
351 you have selected a `tm.h' file that expects by default that there
352 is no such hardware, do this instead:
353
354 make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2 -msoft-float"
355
356 13. If you wish to test the compiler by compiling it with itself one
357 more time, install any other necessary GNU tools (such as GAS or
358 the GNU linker) in the `stage2' subdirectory as you did in the
359 `stage1' subdirectory, then do this:
360
361 make stage2
362 make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O2"
363
364 This is called making the stage 3 compiler. Aside from the `-B'
365 option, the compiler options should be the same as when you made
366 the stage 2 compiler. But the `LANGUAGES' option need not be the
367 same. The command shown above builds compilers for all the
368 supported languages; if you don't want them all, you can specify
369 the languages to build by typing the argument `LANGUAGES="LIST"',
370 as described above.
371
372 If you do not have to install any additional GNU tools, you may
373 use the command
374
375 make bootstrap LANGUAGES=LANGUAGE-LIST BOOT_CFLAGS=OPTION-LIST
376
377 instead of making `stage1', `stage2', and performing the two
378 compiler builds.
379
380 14. Then compare the latest object files with the stage 2 object
381 files--they ought to be identical, aside from time stamps (if any).
382
383 On some systems, meaningful comparison of object files is
384 impossible; they always appear "different." This is currently
385 true on Solaris and some systems that use ELF object file format.
386 On some versions of Irix on SGI machines and DEC Unix (OSF/1) on
387 Alpha systems, you will not be able to compare the files without
388 specifying `-save-temps'; see the description of individual
389 systems above to see if you get comparison failures. You may have
390 similar problems on other systems.
391
392 Use this command to compare the files:
393
394 make compare
395
396 This will mention any object files that differ between stage 2 and
397 stage 3. Any difference, no matter how innocuous, indicates that
398 the stage 2 compiler has compiled GNU CC incorrectly, and is
399 therefore a potentially serious bug which you should investigate
400 and report.
401
402 If your system does not put time stamps in the object files, then
403 this is a faster way to compare them (using the Bourne shell):
404
405 for file in *.o; do
406 cmp $file stage2/$file
407 done
408
409 If you have built the compiler with the `-mno-mips-tfile' option on
410 MIPS machines, you will not be able to compare the files.
411
412 15. Install the compiler driver, the compiler's passes and run-time
413 support with `make install'. Use the same value for `CC',
414 `CFLAGS' and `LANGUAGES' that you used when compiling the files
415 that are being installed. One reason this is necessary is that
416 some versions of Make have bugs and recompile files gratuitously
417 when you do this step. If you use the same variable values, those
418 files will be recompiled properly.
419
420 For example, if you have built the stage 2 compiler, you can use
421 the following command:
422
423 make install CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" LANGUAGES="LIST"
424
425 This copies the files `cc1', `cpp' and `libgcc.a' to files `cc1',
426 `cpp' and `libgcc.a' in the directory
427 `/usr/local/lib/gcc-lib/TARGET/VERSION', which is where the
428 compiler driver program looks for them. Here TARGET is the target
429 machine type specified when you ran `configure', and VERSION is
430 the version number of GNU CC. This naming scheme permits various
e9a25f70
JL
431 versions and/or cross-compilers to coexist. It also copies the
432 executables for compilers for other languages (e.g., `cc1plus' for
433 C++) to the same directory.
861bb6c1
JL
434
435 This also copies the driver program `xgcc' into
436 `/usr/local/bin/gcc', so that it appears in typical execution
e9a25f70
JL
437 search paths. It also copies `gcc.1' into `/usr/local/man/man1'
438 and info pages into `/usr/local/info'.
861bb6c1
JL
439
440 On some systems, this command causes recompilation of some files.
441 This is usually due to bugs in `make'. You should either ignore
442 this problem, or use GNU Make.
443
444 *Warning: there is a bug in `alloca' in the Sun library. To avoid
445 this bug, be sure to install the executables of GNU CC that were
446 compiled by GNU CC. (That is, the executables from stage 2 or 3,
447 not stage 1.) They use `alloca' as a built-in function and never
448 the one in the library.*
449
450 (It is usually better to install GNU CC executables from stage 2
451 or 3, since they usually run faster than the ones compiled with
452 some other compiler.)
453
454 16. If you're going to use C++, it's likely that you need to also
c85f7c16
JL
455 install a C++ runtime library. Just as GNU C does not distribute
456 a C runtime library, it also does not include a C++ runtime
457 library. All I/O functionality, special class libraries, etc., are
458 provided by the C++ runtime library.
459
460 Here's one way to build and install a C++ runtime library for GNU
461 CC:
462
463 * Build and install GNU CC, so that invoking `gcc' obtains the
464 GNU CC that was just built.
465
466 * Obtain a copy of a compatible `libstdc++' distribution. For
467 example, the `libstdc++-2.8.0.tar.gz' distribution should be
468 compatible with GCC 2.8.0. GCC distributors normally
469 distribute `libstdc++' as well.
470
471 * Set the `CXX' environment variable to `gcc' while running the
472 `libstdc++' distribution's `configure' command. Use the same
473 `configure' options that you used when you invoked GCC's
474 `configure' command.
475
476 * Invoke `make' to build the C++ runtime.
477
478 * Invoke `make install' to install the C++ runtime.
479
480 To summarize, after building and installing GNU CC, invoke the
481 following shell commands in the topmost directory of the C++
482 library distribution. For CONFIGURE-OPTIONS, use the same options
483 that you used to configure GNU CC.
484
485 $ CXX=gcc ./configure CONFIGURE-OPTIONS
486 $ make
487 $ make install
861bb6c1 488
e9a25f70
JL
489 17. GNU CC includes a runtime library for Objective-C because it is an
490 integral part of the language. You can find the files associated
491 with the library in the subdirectory `objc'. The GNU Objective-C
492 Runtime Library requires header files for the target's C library in
493 order to be compiled,and also requires the header files for the
494 target's thread library if you want thread support. *Note
495 Cross-Compilers and Header Files: Cross Headers, for discussion
496 about header files issues for cross-compilation.
497
498 When you run `configure', it picks the appropriate Objective-C
499 thread implementation file for the target platform. In some
500 situations, you may wish to choose a different back-end as some
501 platforms support multiple thread implementations or you may wish
502 to disable thread support completely. You do this by specifying a
503 value for the OBJC_THREAD_FILE makefile variable on the command
504 line when you run make, for example:
505
506 make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O2" OBJC_THREAD_FILE=thr-single
507
508 Below is a list of the currently available back-ends.
509
510 * thr-single Disable thread support, should work for all
511 platforms.
512
513 * thr-decosf1 DEC OSF/1 thread support.
514
515 * thr-irix SGI IRIX thread support.
516
517 * thr-mach Generic MACH thread support, known to work on
518 NEXTSTEP.
519
520 * thr-os2 IBM OS/2 thread support.
521
522 * thr-posix Generix POSIX thread support.
523
524 * thr-pthreads PCThreads on Linux-based GNU systems.
525
526 * thr-solaris SUN Solaris thread support.
527
528 * thr-win32 Microsoft Win32 API thread support.
529
861bb6c1
JL
530Configurations Supported by GNU CC
531==================================
532
533 Here are the possible CPU types:
534
535 1750a, a29k, alpha, arm, cN, clipper, dsp16xx, elxsi, h8300,
e9a25f70
JL
536 hppa1.0, hppa1.1, i370, i386, i486, i586, i860, i960, m32r,
537 m68000, m68k, m88k, mips, mipsel, mips64, mips64el, ns32k,
538 powerpc, powerpcle, pyramid, romp, rs6000, sh, sparc, sparclite,
539 sparc64, vax, we32k.
861bb6c1
JL
540
541 Here are the recognized company names. As you can see, customary
542abbreviations are used rather than the longer official names.
543
e9a25f70
JL
544 acorn, alliant, altos, apollo, apple, att, bull, cbm, convergent,
545 convex, crds, dec, dg, dolphin, elxsi, encore, harris, hitachi,
546 hp, ibm, intergraph, isi, mips, motorola, ncr, next, ns, omron,
547 plexus, sequent, sgi, sony, sun, tti, unicom, wrs.
861bb6c1
JL
548
549 The company name is meaningful only to disambiguate when the rest of
550the information supplied is insufficient. You can omit it, writing
551just `CPU-SYSTEM', if it is not needed. For example, `vax-ultrix4.2'
552is equivalent to `vax-dec-ultrix4.2'.
553
554 Here is a list of system types:
555
e9a25f70 556 386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff,
861bb6c1 557 ctix, cxux, dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms,
e9a25f70 558 genix, gnu, linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos,
861bb6c1
JL
559 mach, minix, msdos, mvs, netbsd, newsos, nindy, ns, osf, osfrose,
560 ptx, riscix, riscos, rtu, sco, sim, solaris, sunos, sym, sysv,
561 udi, ultrix, unicos, uniplus, unos, vms, vsta, vxworks, winnt,
562 xenix.
563
564You can omit the system type; then `configure' guesses the operating
565system from the CPU and company.
566
567 You can add a version number to the system type; this may or may not
568make a difference. For example, you can write `bsd4.3' or `bsd4.4' to
569distinguish versions of BSD. In practice, the version number is most
570needed for `sysv3' and `sysv4', which are often treated differently.
571
572 If you specify an impossible combination such as `i860-dg-vms', then
573you may get an error message from `configure', or it may ignore part of
574the information and do the best it can with the rest. `configure'
575always prints the canonical name for the alternative that it used. GNU
576CC does not support all possible alternatives.
577
578 Often a particular model of machine has a name. Many machine names
579are recognized as aliases for CPU/company combinations. Thus, the
580machine name `sun3', mentioned above, is an alias for `m68k-sun'.
581Sometimes we accept a company name as a machine name, when the name is
582popularly used for a particular machine. Here is a table of the known
583machine names:
584
585 3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300,
586 balance, convex-cN, crds, decstation-3100, decstation, delta,
587 encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN, hp9k7NN,
588 hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin, miniframe,
589 mmax, news-3600, news800, news, next, pbd, pc532, pmax, powerpc,
590 powerpcle, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3,
591 sun4, symmetry, tower-32, tower.
592
593Remember that a machine name specifies both the cpu type and the company
594name. If you want to install your own homemade configuration files,
595you can use `local' as the company name to access them. If you use
596configuration `CPU-local', the configuration name without the cpu prefix
597is used to form the configuration file names.
598
599 Thus, if you specify `m68k-local', configuration uses files
600`m68k.md', `local.h', `m68k.c', `xm-local.h', `t-local', and `x-local',
601all in the directory `config/m68k'.
602
603 Here is a list of configurations that have special treatment or
604special things you must know:
605
606`1750a-*-*'
607 MIL-STD-1750A processors.
608
e9a25f70
JL
609 The MIL-STD-1750A cross configuration produces output for
610 `as1750', an assembler/linker available under the GNU Public
611 License for the 1750A. `as1750' can be obtained at
612 *ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/*. A similarly
613 licensed simulator for the 1750A is available from same address.
861bb6c1
JL
614
615 You should ignore a fatal error during the building of libgcc
616 (libgcc is not yet implemented for the 1750A.)
617
618 The `as1750' assembler requires the file `ms1750.inc', which is
619 found in the directory `config/1750a'.
620
621 GNU CC produced the same sections as the Fairchild F9450 C
622 Compiler, namely:
623
624 `Normal'
625 The program code section.
626
627 `Static'
628 The read/write (RAM) data section.
629
630 `Konst'
631 The read-only (ROM) constants section.
632
633 `Init'
634 Initialization section (code to copy KREL to SREL).
635
636 The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16).
637 This means that type `char' is represented with a 16-bit word per
638 character. The 1750A's "Load/Store Upper/Lower Byte" instructions
639 are not used by GNU CC.
640
641`alpha-*-osf1'
642 Systems using processors that implement the DEC Alpha architecture
643 and are running the DEC Unix (OSF/1) operating system, for example
956d6950 644 the DEC Alpha AXP systems.CC.)
861bb6c1
JL
645
646 GNU CC writes a `.verstamp' directive to the assembler output file
647 unless it is built as a cross-compiler. It gets the version to
648 use from the system header file `/usr/include/stamp.h'. If you
649 install a new version of DEC Unix, you should rebuild GCC to pick
650 up the new version stamp.
651
652 Note that since the Alpha is a 64-bit architecture,
653 cross-compilers from 32-bit machines will not generate code as
654 efficient as that generated when the compiler is running on a
655 64-bit machine because many optimizations that depend on being
656 able to represent a word on the target in an integral value on the
657 host cannot be performed. Building cross-compilers on the Alpha
658 for 32-bit machines has only been tested in a few cases and may
659 not work properly.
660
661 `make compare' may fail on old versions of DEC Unix unless you add
662 `-save-temps' to `CFLAGS'. On these systems, the name of the
663 assembler input file is stored in the object file, and that makes
664 comparison fail if it differs between the `stage1' and `stage2'
665 compilations. The option `-save-temps' forces a fixed name to be
666 used for the assembler input file, instead of a randomly chosen
667 name in `/tmp'. Do not add `-save-temps' unless the comparisons
668 fail without that option. If you add `-save-temps', you will have
669 to manually delete the `.i' and `.s' files after each series of
670 compilations.
671
672 GNU CC now supports both the native (ECOFF) debugging format used
673 by DBX and GDB and an encapsulated STABS format for use only with
674 GDB. See the discussion of the `--with-stabs' option of
675 `configure' above for more information on these formats and how to
676 select them.
677
678 There is a bug in DEC's assembler that produces incorrect line
679 numbers for ECOFF format when the `.align' directive is used. To
680 work around this problem, GNU CC will not emit such alignment
681 directives while writing ECOFF format debugging information even
682 if optimization is being performed. Unfortunately, this has the
683 very undesirable side-effect that code addresses when `-O' is
684 specified are different depending on whether or not `-g' is also
685 specified.
686
687 To avoid this behavior, specify `-gstabs+' and use GDB instead of
688 DBX. DEC is now aware of this problem with the assembler and
689 hopes to provide a fix shortly.
690
e9a25f70
JL
691`arc-*-elf'
692 Argonaut ARC processor. This configuration is intended for
693 embedded systems.
694
695`arm-*-aout'
861bb6c1
JL
696 Advanced RISC Machines ARM-family processors. These are often
697 used in embedded applications. There are no standard Unix
698 configurations. This configuration corresponds to the basic
e9a25f70
JL
699 instruction sequences and will produce `a.out' format object
700 modules.
861bb6c1
JL
701
702 You may need to make a variant of the file `arm.h' for your
703 particular configuration.
704
e9a25f70
JL
705`arm-*-linuxaout'
706 Any of the ARM family processors running the Linux-based GNU
707 system with the `a.out' binary format (ELF is not yet supported).
956d6950 708 You must use version 2.8.1.0.7 or later of the GNU/Linux binutils,
e9a25f70
JL
709 which you can download from `sunsite.unc.edu:/pub/Linux/GCC' and
710 other mirror sites for Linux-based GNU systems.
711
861bb6c1
JL
712`arm-*-riscix'
713 The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD
714 Unix. If you are running a version of RISC iX prior to 1.2 then
715 you must specify the version number during configuration. Note
716 that the assembler shipped with RISC iX does not support stabs
717 debugging information; a new version of the assembler, with stabs
14cd4d23
JL
718 support included, is now available from Acorn and via ftp
719 `ftp.acorn.com:/pub/riscix/as+xterm.tar.Z'. To enable stabs
720 debugging, pass `--with-gnu-as' to configure.
721
722 You will need to install GNU `sed' before you can run configure.
861bb6c1
JL
723
724`a29k'
725 AMD Am29k-family processors. These are normally used in embedded
726 applications. There are no standard Unix configurations. This
727 configuration corresponds to AMD's standard calling sequence and
728 binary interface and is compatible with other 29k tools.
729
730 You may need to make a variant of the file `a29k.h' for your
731 particular configuration.
732
733`a29k-*-bsd'
734 AMD Am29050 used in a system running a variant of BSD Unix.
735
736`decstation-*'
737 DECstations can support three different personalities: Ultrix, DEC
738 OSF/1, and OSF/rose. To configure GCC for these platforms use the
739 following configurations:
740
741 `decstation-ultrix'
742 Ultrix configuration.
743
744 `decstation-osf1'
745 Dec's version of OSF/1.
746
747 `decstation-osfrose'
748 Open Software Foundation reference port of OSF/1 which uses
749 the OSF/rose object file format instead of ECOFF. Normally,
750 you would not select this configuration.
751
752 The MIPS C compiler needs to be told to increase its table size
753 for switch statements with the `-Wf,-XNg1500' option in order to
754 compile `cp/parse.c'. If you use the `-O2' optimization option,
755 you also need to use `-Olimit 3000'. Both of these options are
756 automatically generated in the `Makefile' that the shell script
757 `configure' builds. If you override the `CC' make variable and
758 use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
759 3000'.
760
761`elxsi-elxsi-bsd'
762 The Elxsi's C compiler has known limitations that prevent it from
763 compiling GNU C. Please contact `mrs@cygnus.com' for more details.
764
765`dsp16xx'
766 A port to the AT&T DSP1610 family of processors.
767
768`h8300-*-*'
e9a25f70
JL
769 Hitachi H8/300 series of processors.
770
861bb6c1
JL
771 The calling convention and structure layout has changed in release
772 2.6. All code must be recompiled. The calling convention now
773 passes the first three arguments in function calls in registers.
774 Structures are no longer a multiple of 2 bytes.
775
776`hppa*-*-*'
e9a25f70
JL
777 There are several variants of the HP-PA processor which run a
778 variety of operating systems. GNU CC must be configured to use
779 the correct processor type and operating system, or GNU CC will
780 not function correctly. The easiest way to handle this problem is
781 to *not* specify a target when configuring GNU CC, the `configure'
782 script will try to automatically determine the right processor
783 type and operating system.
861bb6c1
JL
784
785 `-g' does not work on HP-UX, since that system uses a peculiar
786 debugging format which GNU CC does not know about. However, `-g'
787 will work if you also use GAS and GDB in conjunction with GCC. We
788 highly recommend using GAS for all HP-PA configurations.
789
e9a25f70 790 You should be using GAS-2.6 (or later) along with GDB-4.16 (or
861bb6c1
JL
791 later). These can be retrieved from all the traditional GNU ftp
792 archive sites.
793
e9a25f70
JL
794 GAS will need to be installed into a directory before `/bin',
795 `/usr/bin', and `/usr/ccs/bin' in your search path. You should
796 install GAS before you build GNU CC.
861bb6c1 797
e9a25f70
JL
798 To enable debugging, you must configure GNU CC with the
799 `--with-gnu-as' option before building.
861bb6c1
JL
800
801`i370-*-*'
802 This port is very preliminary and has many known bugs. We hope to
803 have a higher-quality port for this machine soon.
804
e9a25f70
JL
805`i386-*-linux-gnuoldld'
806 Use this configuration to generate `a.out' binaries on Linux-based
807 GNU systems if you do not have gas/binutils version 2.5.2 or later
808 installed. This is an obsolete configuration.
861bb6c1 809
e9a25f70
JL
810`i386-*-linux-gnuaout'
811 Use this configuration to generate `a.out' binaries on Linux-based
812 GNU systems. This configuration is being superseded. You must use
813 gas/binutils version 2.5.2 or later.
861bb6c1 814
e9a25f70
JL
815`i386-*-linux-gnu'
816 Use this configuration to generate ELF binaries on Linux-based GNU
817 systems. You must use gas/binutils version 2.5.2 or later.
861bb6c1
JL
818
819`i386-*-sco'
820 Compilation with RCC is recommended. Also, it may be a good idea
821 to link with GNU malloc instead of the malloc that comes with the
822 system.
823
824`i386-*-sco3.2v4'
825 Use this configuration for SCO release 3.2 version 4.
826
e9a25f70
JL
827`i386-*-sco3.2v5*'
828 Use this for the SCO OpenServer Release family including 5.0.0,
829 5.0.2, 5.0.4, Internet FastStart 1.0, and Internet FastStart 1.1.
830
831 GNU CC can generate ELF binaries (if you specify `-melf') or COFF
832 binaries (the default). If you are going to build your compiler
833 in ELF mode (once you have bootstrapped the first stage compiler)
834 you *must* specify `-melf' as part of `CC', *not* `CFLAGS', for
835 example as `CC="stage1/xgcc -melf -Bstage1/" '. If you do not do
836 this, the bootstrap will generate incorrect versions of `libgcc.a'.
837
838 You must have TLS597 (from ftp.sco.com/TLS) installed for ELF
839 binaries to work correctly. Note that Open Server 5.0.2 *does*
840 need TLS597 installed.
841
842 *NOTE:* You must follow the instructions about invoking `make
843 bootstrap' because the native OpenServer compiler builds a
844 `cc1plus' that will not correctly parse many valid C++ programs.
845 You must do a `make bootstrap' if you are building with the native
846 compiler.
847
861bb6c1
JL
848`i386-*-isc'
849 It may be a good idea to link with GNU malloc instead of the
850 malloc that comes with the system.
851
852 In ISC version 4.1, `sed' core dumps when building `deduced.h'.
853 Use the version of `sed' from version 4.0.
854
855`i386-*-esix'
856 It may be good idea to link with GNU malloc instead of the malloc
857 that comes with the system.
858
859`i386-ibm-aix'
e9a25f70
JL
860 You need to use GAS version 2.1 or later, and LD from GNU binutils
861 version 2.2 or later.
861bb6c1
JL
862
863`i386-sequent-bsd'
956d6950 864 Go to the Berkeley universe before compiling.
861bb6c1
JL
865
866`i386-sequent-ptx1*'
867 Sequent DYNIX/ptx 1.x.
868
869`i386-sequent-ptx2*'
870 Sequent DYNIX/ptx 2.x.
871
872`i386-sun-sunos4'
873 You may find that you need another version of GNU CC to begin
874 bootstrapping with, since the current version when built with the
875 system's own compiler seems to get an infinite loop compiling part
876 of `libgcc2.c'. GNU CC version 2 compiled with GNU CC (any
877 version) seems not to have this problem.
878
879 See *Note Sun Install::, for information on installing GNU CC on
880 Sun systems.
881
882`i[345]86-*-winnt3.5'
e9a25f70 883 This version requires a GAS that has not yet been released. Until
861bb6c1
JL
884 it is, you can get a prebuilt binary version via anonymous ftp from
885 `cs.washington.edu:pub/gnat' or `cs.nyu.edu:pub/gnat'. You must
886 also use the Microsoft header files from the Windows NT 3.5 SDK.
887 Find these on the CDROM in the `/mstools/h' directory dated
888 9/4/94. You must use a fixed version of Microsoft linker made
889 especially for NT 3.5, which is also is available on the NT 3.5
890 SDK CDROM. If you do not have this linker, can you also use the
891 linker from Visual C/C++ 1.0 or 2.0.
892
893 Installing GNU CC for NT builds a wrapper linker, called `ld.exe',
894 which mimics the behaviour of Unix `ld' in the specification of
895 libraries (`-L' and `-l'). `ld.exe' looks for both Unix and
896 Microsoft named libraries. For example, if you specify `-lfoo',
897 `ld.exe' will look first for `libfoo.a' and then for `foo.lib'.
898
899 You may install GNU CC for Windows NT in one of two ways,
900 depending on whether or not you have a Unix-like shell and various
901 Unix-like utilities.
902
903 1. If you do not have a Unix-like shell and few Unix-like
904 utilities, you will use a DOS style batch script called
905 `configure.bat'. Invoke it as `configure winnt' from an
906 MSDOS console window or from the program manager dialog box.
907 `configure.bat' assumes you have already installed and have
908 in your path a Unix-like `sed' program which is used to
909 create a working `Makefile' from `Makefile.in'.
910
911 `Makefile' uses the Microsoft Nmake program maintenance
912 utility and the Visual C/C++ V8.00 compiler to build GNU CC.
913 You need only have the utilities `sed' and `touch' to use
914 this installation method, which only automatically builds the
915 compiler itself. You must then examine what `fixinc.winnt'
916 does, edit the header files by hand and build `libgcc.a'
917 manually.
918
919 2. The second type of installation assumes you are running a
920 Unix-like shell, have a complete suite of Unix-like utilities
921 in your path, and have a previous version of GNU CC already
922 installed, either through building it via the above
923 installation method or acquiring a pre-built binary. In this
924 case, use the `configure' script in the normal fashion.
925
926`i860-intel-osf1'
927 This is the Paragon. If you have version 1.0 of the operating
928 system, you need to take special steps to build GNU CC due to
929 peculiarities of the system. Newer system versions have no
930 problem. See the section `Installation Problems' in the GNU CC
931 Manual.
932
933`*-lynx-lynxos'
934 LynxOS 2.2 and earlier comes with GNU CC 1.x already installed as
935 `/bin/gcc'. You should compile with this instead of `/bin/cc'.
936 You can tell GNU CC to use the GNU assembler and linker, by
937 specifying `--with-gnu-as --with-gnu-ld' when configuring. These
938 will produce COFF format object files and executables; otherwise
e9a25f70 939 GNU CC will use the installed tools, which produce `a.out' format
861bb6c1
JL
940 executables.
941
e9a25f70
JL
942`m32r-*-elf'
943 Mitsubishi M32R processor. This configuration is intended for
944 embedded systems.
945
861bb6c1
JL
946`m68000-hp-bsd'
947 HP 9000 series 200 running BSD. Note that the C compiler that
948 comes with this system cannot compile GNU CC; contact
949 `law@cs.utah.edu' to get binaries of GNU CC for bootstrapping.
950
951`m68k-altos'
952 Altos 3068. You must use the GNU assembler, linker and debugger.
953 Also, you must fix a kernel bug. Details in the file
954 `README.ALTOS'.
955
e9a25f70
JL
956`m68k-apple-aux'
957 Apple Macintosh running A/UX. You may configure GCC to use
958 either the system assembler and linker or the GNU assembler and
959 linker. You should use the GNU configuration if you can,
960 especially if you also want to use GNU C++. You enabled that
961 configuration with + the `--with-gnu-as' and `--with-gnu-ld'
962 options to `configure'.
963
964 Note the C compiler that comes with this system cannot compile GNU
965 CC. You can fine binaries of GNU CC for bootstrapping on
966 `jagubox.gsfc.nasa.gov'. You will also a patched version of
967 `/bin/ld' there that raises some of the arbitrary limits found in
968 the original.
969
861bb6c1
JL
970`m68k-att-sysv'
971 AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to
972 compile GNU CC with this machine's standard C compiler, due to
973 bugs in that compiler. You can bootstrap it more easily with
974 previous versions of GNU CC if you have them.
975
976 Installing GNU CC on the 3b1 is difficult if you do not already
977 have GNU CC running, due to bugs in the installed C compiler.
978 However, the following procedure might work. We are unable to
979 test it.
980
e9a25f70 981 1. Comment out the `#include "config.h"' line near the start of
861bb6c1
JL
982 `cccp.c' and do `make cpp'. This makes a preliminary version
983 of GNU cpp.
984
985 2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to
986 that file name.
987
988 3. Undo your change in `cccp.c', or reinstall the original
989 version, and do `make cpp' again.
990
991 4. Copy this final version of GNU cpp into `/lib/cpp'.
992
993 5. Replace every occurrence of `obstack_free' in the file
994 `tree.c' with `_obstack_free'.
995
996 6. Run `make' to get the first-stage GNU CC.
997
998 7. Reinstall the original version of `/lib/cpp'.
999
1000 8. Now you can compile GNU CC with itself and install it in the
1001 normal fashion.
1002
1003`m68k-bull-sysv'
1004 Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GNU
1005 CC works either with native assembler or GNU assembler. You can use
1006 GNU assembler with native coff generation by providing
1007 `--with-gnu-as' to the configure script or use GNU assembler with
1008 dbx-in-coff encapsulation by providing `--with-gnu-as --stabs'.
1009 For any problem with native assembler or for availability of the
1010 DPX/2 port of GAS, contact `F.Pierresteguy@frcl.bull.fr'.
1011
1012`m68k-crds-unox'
1013 Use `configure unos' for building on Unos.
1014
1015 The Unos assembler is named `casm' instead of `as'. For some
1016 strange reason linking `/bin/as' to `/bin/casm' changes the
1017 behavior, and does not work. So, when installing GNU CC, you
1018 should install the following script as `as' in the subdirectory
1019 where the passes of GCC are installed:
1020
1021 #!/bin/sh
1022 casm $*
1023
1024 The default Unos library is named `libunos.a' instead of `libc.a'.
1025 To allow GNU CC to function, either change all references to
1026 `-lc' in `gcc.c' to `-lunos' or link `/lib/libc.a' to
1027 `/lib/libunos.a'.
1028
1029 When compiling GNU CC with the standard compiler, to overcome bugs
1030 in the support of `alloca', do not use `-O' when making stage 2.
1031 Then use the stage 2 compiler with `-O' to make the stage 3
1032 compiler. This compiler will have the same characteristics as the
1033 usual stage 2 compiler on other systems. Use it to make a stage 4
1034 compiler and compare that with stage 3 to verify proper
1035 compilation.
1036
1037 (Perhaps simply defining `ALLOCA' in `x-crds' as described in the
1038 comments there will make the above paragraph superfluous. Please
1039 inform us of whether this works.)
1040
1041 Unos uses memory segmentation instead of demand paging, so you
1042 will need a lot of memory. 5 Mb is barely enough if no other
1043 tasks are running. If linking `cc1' fails, try putting the object
1044 files into a library and linking from that library.
1045
1046`m68k-hp-hpux'
1047 HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a
1048 bug in the assembler that prevents compilation of GNU CC. To fix
1049 it, get patch PHCO_4484 from HP.
1050
1051 In addition, if you wish to use gas `--with-gnu-as' you must use
1052 gas version 2.1 or later, and you must use the GNU linker version
1053 2.1 or later. Earlier versions of gas relied upon a program which
1054 converted the gas output into the native HP/UX format, but that
1055 program has not been kept up to date. gdb does not understand
1056 that native HP/UX format, so you must use gas if you wish to use
1057 gdb.
1058
1059`m68k-sun'
1060 Sun 3. We do not provide a configuration file to use the Sun FPA
1061 by default, because programs that establish signal handlers for
1062 floating point traps inherently cannot work with the FPA.
1063
1064 See *Note Sun Install::, for information on installing GNU CC on
1065 Sun systems.
1066
1067`m88k-*-svr3'
1068 Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port.
1069 These systems tend to use the Green Hills C, revision 1.8.5, as the
1070 standard C compiler. There are apparently bugs in this compiler
1071 that result in object files differences between stage 2 and stage
1072 3. If this happens, make the stage 4 compiler and compare it to
1073 the stage 3 compiler. If the stage 3 and stage 4 object files are
1074 identical, this suggests you encountered a problem with the
1075 standard C compiler; the stage 3 and 4 compilers may be usable.
1076
1077 It is best, however, to use an older version of GNU CC for
1078 bootstrapping if you have one.
1079
1080`m88k-*-dgux'
1081 Motorola m88k running DG/UX. To build 88open BCS native or cross
1082 compilers on DG/UX, specify the configuration name as
1083 `m88k-*-dguxbcs' and build in the 88open BCS software development
1084 environment. To build ELF native or cross compilers on DG/UX,
1085 specify `m88k-*-dgux' and build in the DG/UX ELF development
1086 environment. You set the software development environment by
1087 issuing `sde-target' command and specifying either `m88kbcs' or
1088 `m88kdguxelf' as the operand.
1089
1090 If you do not specify a configuration name, `configure' guesses the
1091 configuration based on the current software development
1092 environment.
1093
1094`m88k-tektronix-sysv3'
1095 Tektronix XD88 running UTekV 3.2e. Do not turn on optimization
1096 while building stage1 if you bootstrap with the buggy Green Hills
1097 compiler. Also, The bundled LAI System V NFS is buggy so if you
1098 build in an NFS mounted directory, start from a fresh reboot, or
1099 avoid NFS all together. Otherwise you may have trouble getting
1100 clean comparisons between stages.
1101
1102`mips-mips-bsd'
1103 MIPS machines running the MIPS operating system in BSD mode. It's
1104 possible that some old versions of the system lack the functions
1105 `memcpy', `memcmp', and `memset'. If your system lacks these, you
1106 must remove or undo the definition of `TARGET_MEM_FUNCTIONS' in
1107 `mips-bsd.h'.
1108
1109 The MIPS C compiler needs to be told to increase its table size
1110 for switch statements with the `-Wf,-XNg1500' option in order to
1111 compile `cp/parse.c'. If you use the `-O2' optimization option,
1112 you also need to use `-Olimit 3000'. Both of these options are
1113 automatically generated in the `Makefile' that the shell script
1114 `configure' builds. If you override the `CC' make variable and
1115 use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
1116 3000'.
1117
1118`mips-mips-riscos*'
1119 The MIPS C compiler needs to be told to increase its table size
1120 for switch statements with the `-Wf,-XNg1500' option in order to
1121 compile `cp/parse.c'. If you use the `-O2' optimization option,
1122 you also need to use `-Olimit 3000'. Both of these options are
1123 automatically generated in the `Makefile' that the shell script
1124 `configure' builds. If you override the `CC' make variable and
1125 use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
1126 3000'.
1127
1128 MIPS computers running RISC-OS can support four different
1129 personalities: default, BSD 4.3, System V.3, and System V.4 (older
1130 versions of RISC-OS don't support V.4). To configure GCC for
1131 these platforms use the following configurations:
1132
1133 `mips-mips-riscos`rev''
1134 Default configuration for RISC-OS, revision `rev'.
1135
1136 `mips-mips-riscos`rev'bsd'
1137 BSD 4.3 configuration for RISC-OS, revision `rev'.
1138
1139 `mips-mips-riscos`rev'sysv4'
1140 System V.4 configuration for RISC-OS, revision `rev'.
1141
1142 `mips-mips-riscos`rev'sysv'
1143 System V.3 configuration for RISC-OS, revision `rev'.
1144
1145 The revision `rev' mentioned above is the revision of RISC-OS to
1146 use. You must reconfigure GCC when going from a RISC-OS revision
1147 4 to RISC-OS revision 5. This has the effect of avoiding a linker
1148 bug.
1149
1150`mips-sgi-*'
1151 In order to compile GCC on an SGI running IRIX 4, the "c.hdr.lib"
1152 option must be installed from the CD-ROM supplied from Silicon
1153 Graphics. This is found on the 2nd CD in release 4.0.1.
1154
1155 In order to compile GCC on an SGI running IRIX 5, the
1156 "compiler_dev.hdr" subsystem must be installed from the IDO CD-ROM
1157 supplied by Silicon Graphics.
1158
1159 `make compare' may fail on version 5 of IRIX unless you add
1160 `-save-temps' to `CFLAGS'. On these systems, the name of the
1161 assembler input file is stored in the object file, and that makes
1162 comparison fail if it differs between the `stage1' and `stage2'
1163 compilations. The option `-save-temps' forces a fixed name to be
1164 used for the assembler input file, instead of a randomly chosen
1165 name in `/tmp'. Do not add `-save-temps' unless the comparisons
1166 fail without that option. If you do you `-save-temps', you will
1167 have to manually delete the `.i' and `.s' files after each series
1168 of compilations.
1169
1170 The MIPS C compiler needs to be told to increase its table size
1171 for switch statements with the `-Wf,-XNg1500' option in order to
1172 compile `cp/parse.c'. If you use the `-O2' optimization option,
1173 you also need to use `-Olimit 3000'. Both of these options are
1174 automatically generated in the `Makefile' that the shell script
1175 `configure' builds. If you override the `CC' make variable and
1176 use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
1177 3000'.
1178
1179 On Irix version 4.0.5F, and perhaps on some other versions as well,
1180 there is an assembler bug that reorders instructions incorrectly.
1181 To work around it, specify the target configuration
1182 `mips-sgi-irix4loser'. This configuration inhibits assembler
1183 optimization.
1184
1185 In a compiler configured with target `mips-sgi-irix4', you can turn
1186 off assembler optimization by using the `-noasmopt' option. This
1187 compiler option passes the option `-O0' to the assembler, to
1188 inhibit reordering.
1189
1190 The `-noasmopt' option can be useful for testing whether a problem
1191 is due to erroneous assembler reordering. Even if a problem does
1192 not go away with `-noasmopt', it may still be due to assembler
1193 reordering--perhaps GNU CC itself was miscompiled as a result.
1194
1195 To enable debugging under Irix 5, you must use GNU as 2.5 or later,
1196 and use the `--with-gnu-as' configure option when configuring gcc.
1197 GNU as is distributed as part of the binutils package.
1198
1199`mips-sony-sysv'
1200 Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2
1201 (which uses ELF instead of COFF). Support for 5.0.2 will probably
1202 be provided soon by volunteers. In particular, the linker does
1203 not like the code generated by GCC when shared libraries are
1204 linked in.
1205
1206`ns32k-encore'
1207 Encore ns32000 system. Encore systems are supported only under
1208 BSD.
1209
1210`ns32k-*-genix'
1211 National Semiconductor ns32000 system. Genix has bugs in `alloca'
1212 and `malloc'; you must get the compiled versions of these from GNU
1213 Emacs.
1214
1215`ns32k-sequent'
956d6950 1216 Go to the Berkeley universe before compiling.
861bb6c1
JL
1217
1218`ns32k-utek'
1219 UTEK ns32000 system ("merlin"). The C compiler that comes with
1220 this system cannot compile GNU CC; contact `tektronix!reed!mason'
1221 to get binaries of GNU CC for bootstrapping.
1222
1223`romp-*-aos'
1224`romp-*-mach'
1225 The only operating systems supported for the IBM RT PC are AOS and
1226 MACH. GNU CC does not support AIX running on the RT. We
1227 recommend you compile GNU CC with an earlier version of itself; if
1228 you compile GNU CC with `hc', the Metaware compiler, it will work,
1229 but you will get mismatches between the stage 2 and stage 3
1230 compilers in various files. These errors are minor differences in
1231 some floating-point constants and can be safely ignored; the stage
1232 3 compiler is correct.
1233
1234`rs6000-*-aix'
1235`powerpc-*-aix'
1236 Various early versions of each release of the IBM XLC compiler
1237 will not bootstrap GNU CC. Symptoms include differences between
1238 the stage2 and stage3 object files, and errors when compiling
1239 `libgcc.a' or `enquire'. Known problematic releases include:
1240 xlc-1.2.1.8, xlc-1.3.0.0 (distributed with AIX 3.2.5), and
1241 xlc-1.3.0.19. Both xlc-1.2.1.28 and xlc-1.3.0.24 (PTF 432238) are
1242 known to produce working versions of GNU CC, but most other recent
1243 releases correctly bootstrap GNU CC. Also, releases of AIX prior
1244 to AIX 3.2.4 include a version of the IBM assembler which does not
1245 accept debugging directives: assembler updates are available as
1246 PTFs. Also, if you are using AIX 3.2.5 or greater and the GNU
1247 assembler, you must have a version modified after October 16th,
1248 1995 in order for the GNU C compiler to build. See the file
1249 `README.RS6000' for more details on of these problems.
1250
1251 GNU CC does not yet support the 64-bit PowerPC instructions.
1252
1253 Objective C does not work on this architecture because it makes
1254 assumptions that are incompatible with the calling conventions.
1255
1256 AIX on the RS/6000 provides support (NLS) for environments outside
1257 of the United States. Compilers and assemblers use NLS to support
1258 locale-specific representations of various objects including
1259 floating-point numbers ("." vs "," for separating decimal
1260 fractions). There have been problems reported where the library
1261 linked with GNU CC does not produce the same floating-point
1262 formats that the assembler accepts. If you have this problem, set
1263 the LANG environment variable to "C" or "En_US".
1264
1265 Due to changes in the way that GNU CC invokes the binder (linker)
1266 for AIX 4.1, you may now receive warnings of duplicate symbols
1267 from the link step that were not reported before. The assembly
1268 files generated by GNU CC for AIX have always included multiple
1269 symbol definitions for certain global variable and function
1270 declarations in the original program. The warnings should not
1271 prevent the linker from producing a correct library or runnable
1272 executable.
1273
e9a25f70
JL
1274 By default, AIX 4.1 produces code that can be used on either Power
1275 or PowerPC processors.
1276
1277 You can specify a default version for the `-mcpu='CPU_TYPE switch
1278 by using the configure option `--with-cpu-'CPU_TYPE.
1279
861bb6c1
JL
1280`powerpc-*-elf'
1281`powerpc-*-sysv4'
1282 PowerPC system in big endian mode, running System V.4.
1283
e9a25f70
JL
1284 You can specify a default version for the `-mcpu='CPU_TYPE switch
1285 by using the configure option `--with-cpu-'CPU_TYPE.
1286
1287`powerpc-*-linux-gnu'
1288 PowerPC system in big endian mode, running the Linux-based GNU
1289 system.
1290
1291 You can specify a default version for the `-mcpu='CPU_TYPE switch
1292 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1293
1294`powerpc-*-eabiaix'
1295 Embedded PowerPC system in big endian mode with -mcall-aix
e9a25f70
JL
1296 selected as the default.
1297
1298 You can specify a default version for the `-mcpu='CPU_TYPE switch
1299 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1300
1301`powerpc-*-eabisim'
1302 Embedded PowerPC system in big endian mode for use in running
e9a25f70
JL
1303 under the PSIM simulator.
1304
1305 You can specify a default version for the `-mcpu='CPU_TYPE switch
1306 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1307
1308`powerpc-*-eabi'
1309 Embedded PowerPC system in big endian mode.
1310
e9a25f70
JL
1311 You can specify a default version for the `-mcpu='CPU_TYPE switch
1312 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1313
1314`powerpcle-*-elf'
1315`powerpcle-*-sysv4'
1316 PowerPC system in little endian mode, running System V.4.
1317
e9a25f70
JL
1318 You can specify a default version for the `-mcpu='CPU_TYPE switch
1319 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1 1320
e9a25f70
JL
1321`powerpcle-*-solaris2*'
1322 PowerPC system in little endian mode, running Solaris 2.5.1 or
1323 higher.
861bb6c1 1324
e9a25f70
JL
1325 You can specify a default version for the `-mcpu='CPU_TYPE switch
1326 by using the configure option `--with-cpu-'CPU_TYPE. Beta
1327 versions of the Sun 4.0 compiler do not seem to be able to build
1328 GNU CC correctly. There are also problems with the host assembler
1329 and linker that are fixed by using the GNU versions of these tools.
861bb6c1
JL
1330
1331`powerpcle-*-eabisim'
1332 Embedded PowerPC system in little endian mode for use in running
1333 under the PSIM simulator.
1334
861bb6c1
JL
1335`powerpcle-*-eabi'
1336 Embedded PowerPC system in little endian mode.
1337
e9a25f70
JL
1338 You can specify a default version for the `-mcpu='CPU_TYPE switch
1339 by using the configure option `--with-cpu-'CPU_TYPE.
1340
1341`powerpcle-*-winnt'
1342`powerpcle-*-pe'
1343 PowerPC system in little endian mode running Windows NT.
1344
1345 You can specify a default version for the `-mcpu='CPU_TYPE switch
1346 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1347
1348`vax-dec-ultrix'
1349 Don't try compiling with Vax C (`vcc'). It produces incorrect code
1350 in some cases (for example, when `alloca' is used).
1351
1352 Meanwhile, compiling `cp/parse.c' with pcc does not work because of
1353 an internal table size limitation in that compiler. To avoid this
1354 problem, compile just the GNU C compiler first, and use it to
1355 recompile building all the languages that you want to run.
1356
1357`sparc-sun-*'
1358 See *Note Sun Install::, for information on installing GNU CC on
1359 Sun systems.
1360
1361`vax-dec-vms'
1362 See *Note VMS Install::, for details on how to install GNU CC on
1363 VMS.
1364
1365`we32k-*-*'
1366 These computers are also known as the 3b2, 3b5, 3b20 and other
1367 similar names. (However, the 3b1 is actually a 68000; see *Note
1368 Configurations::.)
1369
1370 Don't use `-g' when compiling with the system's compiler. The
1371 system's linker seems to be unable to handle such a large program
1372 with debugging information.
1373
1374 The system's compiler runs out of capacity when compiling `stmt.c'
1375 in GNU CC. You can work around this by building `cpp' in GNU CC
1376 first, then use that instead of the system's preprocessor with the
1377 system's C compiler to compile `stmt.c'. Here is how:
1378
1379 mv /lib/cpp /lib/cpp.att
1380 cp cpp /lib/cpp.gnu
1381 echo '/lib/cpp.gnu -traditional ${1+"$@"}' > /lib/cpp
1382 chmod +x /lib/cpp
1383
1384 The system's compiler produces bad code for some of the GNU CC
1385 optimization files. So you must build the stage 2 compiler without
1386 optimization. Then build a stage 3 compiler with optimization.
1387 That executable should work. Here are the necessary commands:
1388
1389 make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g"
1390 make stage2
1391 make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O"
1392
1393 You may need to raise the ULIMIT setting to build a C++ compiler,
1394 as the file `cc1plus' is larger than one megabyte.
1395
1396Compilation in a Separate Directory
1397===================================
1398
1399 If you wish to build the object files and executables in a directory
1400other than the one containing the source files, here is what you must
1401do differently:
1402
1403 1. Make sure you have a version of Make that supports the `VPATH'
1404 feature. (GNU Make supports it, as do Make versions on most BSD
1405 systems.)
1406
1407 2. If you have ever run `configure' in the source directory, you must
1408 undo the configuration. Do this by running:
1409
1410 make distclean
1411
1412 3. Go to the directory in which you want to build the compiler before
1413 running `configure':
1414
1415 mkdir gcc-sun3
1416 cd gcc-sun3
1417
1418 On systems that do not support symbolic links, this directory must
1419 be on the same file system as the source code directory.
1420
1421 4. Specify where to find `configure' when you run it:
1422
1423 ../gcc/configure ...
1424
1425 This also tells `configure' where to find the compiler sources;
1426 `configure' takes the directory from the file name that was used to
1427 invoke it. But if you want to be sure, you can specify the source
1428 directory with the `--srcdir' option, like this:
1429
1430 ../gcc/configure --srcdir=../gcc OTHER OPTIONS
1431
1432 The directory you specify with `--srcdir' need not be the same as
1433 the one that `configure' is found in.
1434
1435 Now, you can run `make' in that directory. You need not repeat the
1436configuration steps shown above, when ordinary source files change. You
1437must, however, run `configure' again when the configuration files
1438change, if your system does not support symbolic links.
1439
1440Building and Installing a Cross-Compiler
1441========================================
1442
1443 GNU CC can function as a cross-compiler for many machines, but not
1444all.
1445
1446 * Cross-compilers for the Mips as target using the Mips assembler
1447 currently do not work, because the auxiliary programs
1448 `mips-tdump.c' and `mips-tfile.c' can't be compiled on anything
1449 but a Mips. It does work to cross compile for a Mips if you use
1450 the GNU assembler and linker.
1451
1452 * Cross-compilers between machines with different floating point
1453 formats have not all been made to work. GNU CC now has a floating
1454 point emulator with which these can work, but each target machine
1455 description needs to be updated to take advantage of it.
1456
1457 * Cross-compilation between machines of different word sizes is
1458 somewhat problematic and sometimes does not work.
1459
1460 Since GNU CC generates assembler code, you probably need a
1461cross-assembler that GNU CC can run, in order to produce object files.
1462If you want to link on other than the target machine, you need a
1463cross-linker as well. You also need header files and libraries suitable
1464for the target machine that you can install on the host machine.
1465
1466Steps of Cross-Compilation
1467--------------------------
1468
1469 To compile and run a program using a cross-compiler involves several
1470steps:
1471
1472 * Run the cross-compiler on the host machine to produce assembler
1473 files for the target machine. This requires header files for the
1474 target machine.
1475
1476 * Assemble the files produced by the cross-compiler. You can do this
1477 either with an assembler on the target machine, or with a
1478 cross-assembler on the host machine.
1479
1480 * Link those files to make an executable. You can do this either
1481 with a linker on the target machine, or with a cross-linker on the
1482 host machine. Whichever machine you use, you need libraries and
1483 certain startup files (typically `crt....o') for the target
1484 machine.
1485
1486 It is most convenient to do all of these steps on the same host
1487machine, since then you can do it all with a single invocation of GNU
1488CC. This requires a suitable cross-assembler and cross-linker. For
1489some targets, the GNU assembler and linker are available.
1490
1491Configuring a Cross-Compiler
1492----------------------------
1493
1494 To build GNU CC as a cross-compiler, you start out by running
1495`configure'. Use the `--target=TARGET' to specify the target type. If
1496`configure' was unable to correctly identify the system you are running
1497on, also specify the `--build=BUILD' option. For example, here is how
1498to configure for a cross-compiler that produces code for an HP 68030
1499system running BSD on a system that `configure' can correctly identify:
1500
1501 ./configure --target=m68k-hp-bsd4.3
1502
1503Tools and Libraries for a Cross-Compiler
1504----------------------------------------
1505
1506 If you have a cross-assembler and cross-linker available, you should
1507install them now. Put them in the directory `/usr/local/TARGET/bin'.
1508Here is a table of the tools you should put in this directory:
1509
1510`as'
1511 This should be the cross-assembler.
1512
1513`ld'
1514 This should be the cross-linker.
1515
1516`ar'
1517 This should be the cross-archiver: a program which can manipulate
1518 archive files (linker libraries) in the target machine's format.
1519
1520`ranlib'
1521 This should be a program to construct a symbol table in an archive
1522 file.
1523
1524 The installation of GNU CC will find these programs in that
1525directory, and copy or link them to the proper place to for the
1526cross-compiler to find them when run later.
1527
1528 The easiest way to provide these files is to build the Binutils
1529package and GAS. Configure them with the same `--host' and `--target'
1530options that you use for configuring GNU CC, then build and install
1531them. They install their executables automatically into the proper
1532directory. Alas, they do not support all the targets that GNU CC
1533supports.
1534
1535 If you want to install libraries to use with the cross-compiler,
1536such as a standard C library, put them in the directory
e9a25f70
JL
1537`/usr/local/TARGET/lib'; installation of GNU CC copies all the files in
1538that subdirectory into the proper place for GNU CC to find them and
1539link with them. Here's an example of copying some libraries from a
1540target machine:
861bb6c1
JL
1541
1542 ftp TARGET-MACHINE
1543 lcd /usr/local/TARGET/lib
1544 cd /lib
1545 get libc.a
1546 cd /usr/lib
1547 get libg.a
1548 get libm.a
1549 quit
1550
1551The precise set of libraries you'll need, and their locations on the
1552target machine, vary depending on its operating system.
1553
1554 Many targets require "start files" such as `crt0.o' and `crtn.o'
1555which are linked into each executable; these too should be placed in
1556`/usr/local/TARGET/lib'. There may be several alternatives for
1557`crt0.o', for use with profiling or other compilation options. Check
1558your target's definition of `STARTFILE_SPEC' to find out what start
1559files it uses. Here's an example of copying these files from a target
1560machine:
1561
1562 ftp TARGET-MACHINE
1563 lcd /usr/local/TARGET/lib
1564 prompt
1565 cd /lib
1566 mget *crt*.o
1567 cd /usr/lib
1568 mget *crt*.o
1569 quit
1570
1571`libgcc.a' and Cross-Compilers
1572------------------------------
1573
1574 Code compiled by GNU CC uses certain runtime support functions
1575implicitly. Some of these functions can be compiled successfully with
1576GNU CC itself, but a few cannot be. These problem functions are in the
1577source file `libgcc1.c'; the library made from them is called
1578`libgcc1.a'.
1579
1580 When you build a native compiler, these functions are compiled with
1581some other compiler-the one that you use for bootstrapping GNU CC.
1582Presumably it knows how to open code these operations, or else knows how
1583to call the run-time emulation facilities that the machine comes with.
1584But this approach doesn't work for building a cross-compiler. The
1585compiler that you use for building knows about the host system, not the
1586target system.
1587
1588 So, when you build a cross-compiler you have to supply a suitable
1589library `libgcc1.a' that does the job it is expected to do.
1590
1591 To compile `libgcc1.c' with the cross-compiler itself does not work.
1592The functions in this file are supposed to implement arithmetic
1593operations that GNU CC does not know how to open code for your target
1594machine. If these functions are compiled with GNU CC itself, they will
1595compile into infinite recursion.
1596
1597 On any given target, most of these functions are not needed. If GNU
1598CC can open code an arithmetic operation, it will not call these
1599functions to perform the operation. It is possible that on your target
1600machine, none of these functions is needed. If so, you can supply an
1601empty library as `libgcc1.a'.
1602
1603 Many targets need library support only for multiplication and
1604division. If you are linking with a library that contains functions for
1605multiplication and division, you can tell GNU CC to call them directly
1606by defining the macros `MULSI3_LIBCALL', and the like. These macros
1607need to be defined in the target description macro file. For some
1608targets, they are defined already. This may be sufficient to avoid the
1609need for libgcc1.a; if so, you can supply an empty library.
1610
1611 Some targets do not have floating point instructions; they need other
1612functions in `libgcc1.a', which do floating arithmetic. Recent
1613versions of GNU CC have a file which emulates floating point. With a
1614certain amount of work, you should be able to construct a floating
1615point emulator that can be used as `libgcc1.a'. Perhaps future
1616versions will contain code to do this automatically and conveniently.
1617That depends on whether someone wants to implement it.
1618
1619 Some embedded targets come with all the necessary `libgcc1.a'
1620routines written in C or assembler. These targets build `libgcc1.a'
1621automatically and you do not need to do anything special for them.
1622Other embedded targets do not need any `libgcc1.a' routines since all
1623the necessary operations are supported by the hardware.
1624
1625 If your target system has another C compiler, you can configure GNU
1626CC as a native compiler on that machine, build just `libgcc1.a' with
1627`make libgcc1.a' on that machine, and use the resulting file with the
1628cross-compiler. To do this, execute the following on the target
1629machine:
1630
1631 cd TARGET-BUILD-DIR
1632 ./configure --host=sparc --target=sun3
1633 make libgcc1.a
1634
1635And then this on the host machine:
1636
1637 ftp TARGET-MACHINE
1638 binary
1639 cd TARGET-BUILD-DIR
1640 get libgcc1.a
1641 quit
1642
1643 Another way to provide the functions you need in `libgcc1.a' is to
1644define the appropriate `perform_...' macros for those functions. If
1645these definitions do not use the C arithmetic operators that they are
1646meant to implement, you should be able to compile them with the
1647cross-compiler you are building. (If these definitions already exist
1648for your target file, then you are all set.)
1649
1650 To build `libgcc1.a' using the perform macros, use
1651`LIBGCC1=libgcc1.a OLDCC=./xgcc' when building the compiler.
1652Otherwise, you should place your replacement library under the name
1653`libgcc1.a' in the directory in which you will build the
1654cross-compiler, before you run `make'.
1655
1656Cross-Compilers and Header Files
1657--------------------------------
1658
1659 If you are cross-compiling a standalone program or a program for an
1660embedded system, then you may not need any header files except the few
1661that are part of GNU CC (and those of your program). However, if you
1662intend to link your program with a standard C library such as `libc.a',
1663then you probably need to compile with the header files that go with
1664the library you use.
1665
1666 The GNU C compiler does not come with these files, because (1) they
1667are system-specific, and (2) they belong in a C library, not in a
1668compiler.
1669
1670 If the GNU C library supports your target machine, then you can get
1671the header files from there (assuming you actually use the GNU library
1672when you link your program).
1673
1674 If your target machine comes with a C compiler, it probably comes
1675with suitable header files also. If you make these files accessible
1676from the host machine, the cross-compiler can use them also.
1677
1678 Otherwise, you're on your own in finding header files to use when
1679cross-compiling.
1680
e9a25f70 1681 When you have found suitable header files, put them in the directory
861bb6c1
JL
1682`/usr/local/TARGET/include', before building the cross compiler. Then
1683installation will run fixincludes properly and install the corrected
1684versions of the header files where the compiler will use them.
1685
1686 Provide the header files before you build the cross-compiler, because
1687the build stage actually runs the cross-compiler to produce parts of
1688`libgcc.a'. (These are the parts that *can* be compiled with GNU CC.)
1689Some of them need suitable header files.
1690
1691 Here's an example showing how to copy the header files from a target
1692machine. On the target machine, do this:
1693
1694 (cd /usr/include; tar cf - .) > tarfile
1695
1696 Then, on the host machine, do this:
1697
1698 ftp TARGET-MACHINE
1699 lcd /usr/local/TARGET/include
1700 get tarfile
1701 quit
1702 tar xf tarfile
1703
1704Actually Building the Cross-Compiler
1705------------------------------------
1706
1707 Now you can proceed just as for compiling a single-machine compiler
1708through the step of building stage 1. If you have not provided some
1709sort of `libgcc1.a', then compilation will give up at the point where
1710it needs that file, printing a suitable error message. If you do
1711provide `libgcc1.a', then building the compiler will automatically
1712compile and link a test program called `libgcc1-test'; if you get
1713errors in the linking, it means that not all of the necessary routines
1714in `libgcc1.a' are available.
1715
1716 You must provide the header file `float.h'. One way to do this is
1717to compile `enquire' and run it on your target machine. The job of
1718`enquire' is to run on the target machine and figure out by experiment
1719the nature of its floating point representation. `enquire' records its
1720findings in the header file `float.h'. If you can't produce this file
1721by running `enquire' on the target machine, then you will need to come
1722up with a suitable `float.h' in some other way (or else, avoid using it
1723in your programs).
1724
1725 Do not try to build stage 2 for a cross-compiler. It doesn't work to
1726rebuild GNU CC as a cross-compiler using the cross-compiler, because
1727that would produce a program that runs on the target machine, not on the
1728host. For example, if you compile a 386-to-68030 cross-compiler with
1729itself, the result will not be right either for the 386 (because it was
1730compiled into 68030 code) or for the 68030 (because it was configured
1731for a 386 as the host). If you want to compile GNU CC into 68030 code,
1732whether you compile it on a 68030 or with a cross-compiler on a 386, you
1733must specify a 68030 as the host when you configure it.
1734
1735 To install the cross-compiler, use `make install', as usual.
1736
1737Installing GNU CC on the Sun
1738============================
1739
1740 On Solaris (version 2.1), do not use the linker or other tools in
1741`/usr/ucb' to build GNU CC. Use `/usr/ccs/bin'.
1742
1743 Make sure the environment variable `FLOAT_OPTION' is not set when
1744you compile `libgcc.a'. If this option were set to `f68881' when
1745`libgcc.a' is compiled, the resulting code would demand to be linked
1746with a special startup file and would not link properly without special
1747pains.
1748
1749 There is a bug in `alloca' in certain versions of the Sun library.
1750To avoid this bug, install the binaries of GNU CC that were compiled by
1751GNU CC. They use `alloca' as a built-in function and never the one in
1752the library.
1753
1754 Some versions of the Sun compiler crash when compiling GNU CC. The
1755problem is a segmentation fault in cpp. This problem seems to be due to
1756the bulk of data in the environment variables. You may be able to avoid
1757it by using the following command to compile GNU CC with Sun CC:
1758
1759 make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc"
1760
e9a25f70
JL
1761 SunOS 4.1.3 and 4.1.3_U1 have bugs that can cause intermittent core
1762dumps when compiling GNU CC. A common symptom is an internal compiler
1763error which does not recur if you run it again. To fix the problem,
1764install Sun recommended patch 100726 (for SunOS 4.1.3) or 101508 (for
1765SunOS 4.1.3_U1), or upgrade to a later SunOS release.
1766
861bb6c1
JL
1767Installing GNU CC on VMS
1768========================
1769
1770 The VMS version of GNU CC is distributed in a backup saveset
1771containing both source code and precompiled binaries.
1772
1773 To install the `gcc' command so you can use the compiler easily, in
1774the same manner as you use the VMS C compiler, you must install the VMS
1775CLD file for GNU CC as follows:
1776
1777 1. Define the VMS logical names `GNU_CC' and `GNU_CC_INCLUDE' to
1778 point to the directories where the GNU CC executables
1779 (`gcc-cpp.exe', `gcc-cc1.exe', etc.) and the C include files are
1780 kept respectively. This should be done with the commands:
1781
1782 $ assign /system /translation=concealed -
1783 disk:[gcc.] gnu_cc
1784 $ assign /system /translation=concealed -
1785 disk:[gcc.include.] gnu_cc_include
1786
1787 with the appropriate disk and directory names. These commands can
1788 be placed in your system startup file so they will be executed
1789 whenever the machine is rebooted. You may, if you choose, do this
1790 via the `GCC_INSTALL.COM' script in the `[GCC]' directory.
1791
1792 2. Install the `GCC' command with the command line:
1793
1794 $ set command /table=sys$common:[syslib]dcltables -
1795 /output=sys$common:[syslib]dcltables gnu_cc:[000000]gcc
1796 $ install replace sys$common:[syslib]dcltables
1797
1798 3. To install the help file, do the following:
1799
1800 $ library/help sys$library:helplib.hlb gcc.hlp
1801
1802 Now you can invoke the compiler with a command like `gcc /verbose
1803 file.c', which is equivalent to the command `gcc -v -c file.c' in
1804 Unix.
1805
1806 If you wish to use GNU C++ you must first install GNU CC, and then
1807perform the following steps:
1808
1809 1. Define the VMS logical name `GNU_GXX_INCLUDE' to point to the
1810 directory where the preprocessor will search for the C++ header
1811 files. This can be done with the command:
1812
1813 $ assign /system /translation=concealed -
1814 disk:[gcc.gxx_include.] gnu_gxx_include
1815
1816 with the appropriate disk and directory name. If you are going to
c85f7c16
JL
1817 be using a C++ runtime library, this is where its install
1818 procedure will install its header files.
861bb6c1
JL
1819
1820 2. Obtain the file `gcc-cc1plus.exe', and place this in the same
1821 directory that `gcc-cc1.exe' is kept.
1822
1823 The GNU C++ compiler can be invoked with a command like `gcc /plus
1824 /verbose file.cc', which is equivalent to the command `g++ -v -c
1825 file.cc' in Unix.
1826
1827 We try to put corresponding binaries and sources on the VMS
1828distribution tape. But sometimes the binaries will be from an older
1829version than the sources, because we don't always have time to update
1830them. (Use the `/version' option to determine the version number of
1831the binaries and compare it with the source file `version.c' to tell
1832whether this is so.) In this case, you should use the binaries you get
1833to recompile the sources. If you must recompile, here is how:
1834
1835 1. Execute the command procedure `vmsconfig.com' to set up the files
1836 `tm.h', `config.h', `aux-output.c', and `md.', and to create files
1837 `tconfig.h' and `hconfig.h'. This procedure also creates several
1838 linker option files used by `make-cc1.com' and a data file used by
1839 `make-l2.com'.
1840
1841 $ @vmsconfig.com
1842
1843 2. Setup the logical names and command tables as defined above. In
1844 addition, define the VMS logical name `GNU_BISON' to point at the
1845 to the directories where the Bison executable is kept. This
1846 should be done with the command:
1847
1848 $ assign /system /translation=concealed -
1849 disk:[bison.] gnu_bison
1850
1851 You may, if you choose, use the `INSTALL_BISON.COM' script in the
1852 `[BISON]' directory.
1853
1854 3. Install the `BISON' command with the command line:
1855
1856 $ set command /table=sys$common:[syslib]dcltables -
1857 /output=sys$common:[syslib]dcltables -
1858 gnu_bison:[000000]bison
1859 $ install replace sys$common:[syslib]dcltables
1860
1861 4. Type `@make-gcc' to recompile everything (alternatively, submit
1862 the file `make-gcc.com' to a batch queue). If you wish to build
1863 the GNU C++ compiler as well as the GNU CC compiler, you must
1864 first edit `make-gcc.com' and follow the instructions that appear
1865 in the comments.
1866
1867 5. In order to use GCC, you need a library of functions which GCC
1868 compiled code will call to perform certain tasks, and these
1869 functions are defined in the file `libgcc2.c'. To compile this
1870 you should use the command procedure `make-l2.com', which will
1871 generate the library `libgcc2.olb'. `libgcc2.olb' should be built
1872 using the compiler built from the same distribution that
1873 `libgcc2.c' came from, and `make-gcc.com' will automatically do
1874 all of this for you.
1875
1876 To install the library, use the following commands:
1877
1878 $ library gnu_cc:[000000]gcclib/delete=(new,eprintf)
1879 $ library gnu_cc:[000000]gcclib/delete=L_*
1880 $ library libgcc2/extract=*/output=libgcc2.obj
1881 $ library gnu_cc:[000000]gcclib libgcc2.obj
1882
1883 The first command simply removes old modules that will be replaced
1884 with modules from `libgcc2' under different module names. The
1885 modules `new' and `eprintf' may not actually be present in your
1886 `gcclib.olb'--if the VMS librarian complains about those modules
1887 not being present, simply ignore the message and continue on with
1888 the next command. The second command removes the modules that
1889 came from the previous version of the library `libgcc2.c'.
1890
1891 Whenever you update the compiler on your system, you should also
1892 update the library with the above procedure.
1893
1894 6. You may wish to build GCC in such a way that no files are written
1895 to the directory where the source files reside. An example would
1896 be the when the source files are on a read-only disk. In these
1897 cases, execute the following DCL commands (substituting your
1898 actual path names):
1899
1900 $ assign dua0:[gcc.build_dir.]/translation=concealed, -
1901 dua1:[gcc.source_dir.]/translation=concealed gcc_build
1902 $ set default gcc_build:[000000]
1903
1904 where the directory `dua1:[gcc.source_dir]' contains the source
1905 code, and the directory `dua0:[gcc.build_dir]' is meant to contain
1906 all of the generated object files and executables. Once you have
1907 done this, you can proceed building GCC as described above. (Keep
1908 in mind that `gcc_build' is a rooted logical name, and thus the
1909 device names in each element of the search list must be an actual
1910 physical device name rather than another rooted logical name).
1911
1912 7. *If you are building GNU CC with a previous version of GNU CC, you
1913 also should check to see that you have the newest version of the
1914 assembler*. In particular, GNU CC version 2 treats global constant
1915 variables slightly differently from GNU CC version 1, and GAS
1916 version 1.38.1 does not have the patches required to work with GCC
1917 version 2. If you use GAS 1.38.1, then `extern const' variables
1918 will not have the read-only bit set, and the linker will generate
1919 warning messages about mismatched psect attributes for these
1920 variables. These warning messages are merely a nuisance, and can
1921 safely be ignored.
1922
1923 If you are compiling with a version of GNU CC older than 1.33,
1924 specify `/DEFINE=("inline=")' as an option in all the
1925 compilations. This requires editing all the `gcc' commands in
1926 `make-cc1.com'. (The older versions had problems supporting
1927 `inline'.) Once you have a working 1.33 or newer GNU CC, you can
1928 change this file back.
1929
1930 8. If you want to build GNU CC with the VAX C compiler, you will need
1931 to make minor changes in `make-cccp.com' and `make-cc1.com' to
1932 choose alternate definitions of `CC', `CFLAGS', and `LIBS'. See
1933 comments in those files. However, you must also have a working
1934 version of the GNU assembler (GNU as, aka GAS) as it is used as
1935 the back-end for GNU CC to produce binary object modules and is
1936 not included in the GNU CC sources. GAS is also needed to compile
1937 `libgcc2' in order to build `gcclib' (see above); `make-l2.com'
1938 expects to be able to find it operational in
1939 `gnu_cc:[000000]gnu-as.exe'.
1940
1941 To use GNU CC on VMS, you need the VMS driver programs `gcc.exe',
1942 `gcc.com', and `gcc.cld'. They are distributed with the VMS
1943 binaries (`gcc-vms') rather than the GNU CC sources. GAS is also
1944 included in `gcc-vms', as is Bison.
1945
1946 Once you have successfully built GNU CC with VAX C, you should use
1947 the resulting compiler to rebuild itself. Before doing this, be
1948 sure to restore the `CC', `CFLAGS', and `LIBS' definitions in
1949 `make-cccp.com' and `make-cc1.com'. The second generation
1950 compiler will be able to take advantage of many optimizations that
1951 must be suppressed when building with other compilers.
1952
1953 Under previous versions of GNU CC, the generated code would
1954occasionally give strange results when linked with the sharable
1955`VAXCRTL' library. Now this should work.
1956
1957 Even with this version, however, GNU CC itself should not be linked
1958with the sharable `VAXCRTL'. The version of `qsort' in `VAXCRTL' has a
1959bug (known to be present in VMS versions V4.6 through V5.5) which
1960causes the compiler to fail.
1961
1962 The executables are generated by `make-cc1.com' and `make-cccp.com'
1963use the object library version of `VAXCRTL' in order to make use of the
1964`qsort' routine in `gcclib.olb'. If you wish to link the compiler
1965executables with the shareable image version of `VAXCRTL', you should
1966edit the file `tm.h' (created by `vmsconfig.com') to define the macro
1967`QSORT_WORKAROUND'.
1968
1969 `QSORT_WORKAROUND' is always defined when GNU CC is compiled with
1970VAX C, to avoid a problem in case `gcclib.olb' is not yet available.
1971
1972`collect2'
1973==========
1974
1975 Many target systems do not have support in the assembler and linker
1976for "constructors"--initialization functions to be called before the
1977official "start" of `main'. On such systems, GNU CC uses a utility
1978called `collect2' to arrange to call these functions at start time.
1979
1980 The program `collect2' works by linking the program once and looking
1981through the linker output file for symbols with particular names
1982indicating they are constructor functions. If it finds any, it creates
1983a new temporary `.c' file containing a table of them, compiles it, and
1984links the program a second time including that file.
1985
1986 The actual calls to the constructors are carried out by a subroutine
1987called `__main', which is called (automatically) at the beginning of
1988the body of `main' (provided `main' was compiled with GNU CC). Calling
1989`__main' is necessary, even when compiling C code, to allow linking C
1990and C++ object code together. (If you use `-nostdlib', you get an
1991unresolved reference to `__main', since it's defined in the standard
1992GCC library. Include `-lgcc' at the end of your compiler command line
1993to resolve this reference.)
1994
1995 The program `collect2' is installed as `ld' in the directory where
1996the passes of the compiler are installed. When `collect2' needs to
1997find the *real* `ld', it tries the following file names:
1998
1999 * `real-ld' in the directories listed in the compiler's search
2000 directories.
2001
2002 * `real-ld' in the directories listed in the environment variable
2003 `PATH'.
2004
2005 * The file specified in the `REAL_LD_FILE_NAME' configuration macro,
2006 if specified.
2007
2008 * `ld' in the compiler's search directories, except that `collect2'
2009 will not execute itself recursively.
2010
2011 * `ld' in `PATH'.
2012
2013 "The compiler's search directories" means all the directories where
2014`gcc' searches for passes of the compiler. This includes directories
2015that you specify with `-B'.
2016
2017 Cross-compilers search a little differently:
2018
2019 * `real-ld' in the compiler's search directories.
2020
2021 * `TARGET-real-ld' in `PATH'.
2022
2023 * The file specified in the `REAL_LD_FILE_NAME' configuration macro,
2024 if specified.
2025
2026 * `ld' in the compiler's search directories.
2027
2028 * `TARGET-ld' in `PATH'.
2029
2030 `collect2' explicitly avoids running `ld' using the file name under
2031which `collect2' itself was invoked. In fact, it remembers up a list
2032of such names--in case one copy of `collect2' finds another copy (or
2033version) of `collect2' installed as `ld' in a second place in the
2034search path.
2035
2036 `collect2' searches for the utilities `nm' and `strip' using the
2037same algorithm as above for `ld'.
2038
2039Standard Header File Directories
2040================================
2041
2042 `GCC_INCLUDE_DIR' means the same thing for native and cross. It is
2043where GNU CC stores its private include files, and also where GNU CC
2044stores the fixed include files. A cross compiled GNU CC runs
2045`fixincludes' on the header files in `$(tooldir)/include'. (If the
2046cross compilation header files need to be fixed, they must be installed
2047before GNU CC is built. If the cross compilation header files are
2048already suitable for ANSI C and GNU CC, nothing special need be done).
2049
2050 `GPLUS_INCLUDE_DIR' means the same thing for native and cross. It
c85f7c16
JL
2051is where `g++' looks first for header files. The C++ library installs
2052only target independent header files in that directory.
861bb6c1
JL
2053
2054 `LOCAL_INCLUDE_DIR' is used only for a native compiler. It is
2055normally `/usr/local/include'. GNU CC searches this directory so that
2056users can install header files in `/usr/local/include'.
2057
2058 `CROSS_INCLUDE_DIR' is used only for a cross compiler. GNU CC
2059doesn't install anything there.
2060
2061 `TOOL_INCLUDE_DIR' is used for both native and cross compilers. It
2062is the place for other packages to install header files that GNU CC will
2063use. For a cross-compiler, this is the equivalent of `/usr/include'.
2064When you build a cross-compiler, `fixincludes' processes any header
2065files in this directory.
2066
This page took 0.248687 seconds and 5 git commands to generate.