--- gcc/INSTALL 2018/04/24 16:46:40 1.1.1.7 +++ gcc/INSTALL 2018/04/24 16:51:46 1.1.1.11 @@ -1,4 +1,4 @@ -This is a copy of one node from the Info file gcc.info-1. +This is a copy of one node from the Info file gcc.info-2. For full information on installing and porting GCC, refer to the GCC manual: @@ -6,8 +6,6 @@ GCC manual: TeX output gcc.dvi TeX source gcc.texinfo -File: gcc.info, Node: Installation, Next: Trouble, Prev: Options, Up: Top - Installing GNU CC ***************** @@ -19,42 +17,161 @@ Here is the procedure for installing GNU 1. Edit `Makefile'. If you are using HPUX, or any form of system V, you must make a few changes described in comments at the - beginning of the file. + beginning of the file. Genix requires changes also. 2. On a Sequent system, go to the Berkeley universe. 3. Choose configuration files. The easy way to do this is to run the command file `config.gcc' with a single argument, which is - the name of the machine as it appears in the `tm-MACHINE.h' file - name. + the name of the machine (and operating system, in some cases). + + Here is a list of the possible arguments: + + `vax' + Vaxes running BSD. + + `vms' + Vaxes running VMS. + + `vax-sysv' + Vaxes running system V. + + `i386-sysv' + Intel 386 PCs running system V. + + `i386-sysv-gas' + Intel 386 PCs running system V, using the GNU assembler and + GNU linker. + + `sequent-i386' + Sequent with Intel 386 processors. + + `sun2' + Sun 2 running system version 2 or 3. + + `sun3' + Sun 3 running system version 2 or 3, with 68881. + + Note there we do not provide a configuration file to use an + FPA by default because programs that establish signal + handlers for floating point traps inherently cannot work + with the FPA. + + `sun3-nfp' + Sun 3 running system version 2 or 3, without 68881. + + `sun4' + Sun 4 running system version 2 or 3. + + `sun2-os4' + Sun 2 running system version 4. + + `sun3-os4' + Sun 3 running system version 4, with 68881. + + `sun3-nfp-os4' + Sun 3 running system version 4, without 68881. + + `sun4-os4' + Sun 4 running system version 4. + + `sun386' + Sun 386 (``roadrunner''). + + `alliant' + Alliant FX/8 computer. Currently, there are bugs in the + support for floating point. Also note that Alliant's + version of dbx does not manage to work with the output from + GNU CC. + + `mips' + Some variant of MIPS computer (but not the one from DEC). + Note that this machine description was written for GNU CC + version 1.32 and may require some updating to work with the + current version. + + `convex-c1' + Convex C1 computer. + + `convex-c2' + Convex C2 computer. + + `hp9k320' + HP 9000 series 300 using HPUX assembler. Note there is no + support in GNU CC for HP's debugger; thus, `-g' is not + available in this configuration. + + `hp9k320g' + HP 9000 series 300 using GNU assembler, linker and debugger. + This requires the HP-adapt package, which is available + along with the GNU linker as part of the ``binutils'' + distribution. This is on the GNU CC distribution tape. - Here we spell out what files you need to set up: + `isi68' + ISI 68000 or 68020 system. + + `news800' + Sony NEWS 68020 system. + + `next' + NeXT system. + + `altos' + Altos 3068. Note that you must use the GNU assembler, + linker and debugger, with COFF-encapsulation. Also, you + must fix a kernel bug. Details in the file `ALTOS-README'. + + `3b1' + AT&T 3b1, a.k.a. 7300 PC. Note that the current version of + GNU CC cannot be compiled with the Unix compiler on this + machine, due to bugs in the Unix comiler. GNU CC does work + correctly, however, if you can compile it with older + version of GNU CC or cross-compile it. + + `sequent-ns32k' + Sequent containing ns32000 processors. + + `encore' + Encore ns32000 system. + + `genix' + National Semiconductor ns32000 system. + + `88000' + Motorola 88000 processor. This port is not finished. + + Here we spell out what files need to be set up: * Make a symbolic link named `config.h' to the top-level config file for the machine you are using (*note Config::.). This file is responsible for defining information about the host machine. It includes `tm.h'. - The file's name should be `config-MACHINE.h', with these - exceptions: + The file is located in the subdirectory `config'. Its name + should be `xm-MACHINE.h', with these exceptions: - `config-vms.h' + `xm-vms.h' for vaxen running VMS. - `config-vaxv.h' + `xm-vaxv.h' for vaxen running system V. - `config-i386v.h' + `xm-i386v.h' for Intel 80386's running system V. - `config-sun4.h' + `xm-sunos4.h' for Suns (model 2, 3 or 4) running *operating system* - version 4. + version 4. (Use `xm-m68k.h' or `xm-sparc.h' for + version 3.) - `config-hp9k3.h' + `xm-sun386i.h' + for Sun roadrunner running any version of the + operating system. + + `xm-hp9k320.h' for the HP 9000 series 300. - `config-gnx.h' + `xm-genix.h' for the ns32000 running Genix If your system does not support symbolic links, you might @@ -62,14 +179,18 @@ Here is the procedure for installing GNU which refers to the appropriate file. * Make a symbolic link named `tm.h' to the - machine-description macro file for your machine (its name - should be `tm-MACHINE.h'). + machine-description macro file for your machine. It should + be in the subdirectory `config' and its name should be + `tm-MACHINE.h'. If your system is a 68000, don't use the file `tm-m68k.h' directly. Instead, use one of these files: `tm-sun3.h' - for Sun 3 machines. + for Sun 3 machines with 68881. + + `tm-sun3-nfp.h' + for Sun 3 machines with no hardware floating point. `tm-sun2.h' for Sun 2 machines. @@ -78,7 +199,8 @@ Here is the procedure for installing GNU for AT&T 3b1 (aka 7300 Unix PC). `tm-isi68.h' - for Integrated Solutions systems. + for Integrated Solutions systems. This file assumes + you use the GNU assembler. `tm-news800.h' for SONY News systems. @@ -97,10 +219,6 @@ Here is the procedure for installing GNU For the vax, use `tm-vax.h' on BSD Unix, `tm-vaxv.h' on system V, or `tm-vms.h' on VMS. - For the SPARC (Sun 4), use `tm-sparc.h'. Note that SPARC - support currenty *does not work*. It will probably be - fixed for version 1.31. - For the Motorola 88000, use `tm-m88k.h'. The support for the 88000 has a few unfinished spots because there was no way to run the output. Bugs are suspected in handling of @@ -108,12 +226,14 @@ Here is the procedure for installing GNU For the 80386, don't use `tm-i386.h' directly. Use `tm-i386v.h' if the target machine is running system V, - `tm-seq386.h' for a Sequent 386 system, or `tm-compaq.h' - for a Compaq. + `tm-i386gas.h' if it is running system V but you are using + the GNU assembler and linker, `tm-seq386.h' for a Sequent + 386 system, or `tm-compaq.h' for a Compaq, or + `tm-sun386i.h' for a Sun 386 system. For the 32000, use `tm-sequent.h' if you are using a Sequent machine, or `tm-encore.h' for an Encore machine, or - `tm-gnx.h' if you are using Genix version 3; otherwise, + `tm-genix.h' if you are using Genix version 3; otherwise, perhaps `tm-ns32k.h' will work for you. Note that Genix has bugs in `alloca' and `malloc'; you must @@ -122,14 +242,18 @@ Here is the procedure for installing GNU Note that Encore systems are supported only under BSD. + For Sparc (Sun 4) machines, use `tm-sparc.h' with operating + system version 4, and `tm-sun4os3.h' with system version 3. + * Make a symbolic link named `md' to the machine description - pattern file. Its name should be `MACHINE.md', but MACHINE - is often not the same as the name used in the `tm.h' file - because the `md' files are more general. + pattern file. It should be in the `config' subdirectory + and its name should be `MACHINE.md'; but MACHINE is often + not the same as the name used in the `tm.h' file because + the `md' files are more general. * Make a symbolic link named `aux-output.c' to the output - subroutine file for your machine (its name should be - `output-MACHINE.c'). + subroutine file for your machine. It should be in the + `config' subdirectory and its name should be `out-MACHINE.c'. 4. Make sure the Bison parser generator is installed. (This is unnecessary if the Bison output files `c-parse.tab.c' and @@ -153,7 +277,17 @@ Here is the procedure for installing GNU operating system, and should be investigated and reported (*note Bugs::.). - 7. Move the first-stage object files and executables into a + 7. Optionally, install the library functions for 64-bit integer + arithmetic. You do this with the command `make gnulib2'. In + the future this will happen automatically; for now, it is + optional, until we are sure it works on all machines. + + 8. If you are using COFF-encapsulation, you must convert `gnulib' + to a GNU-format library at this point. See the file + `README-ENCAP' in the directory containing the GNU binary file + utilities, for directions. + + 9. Move the first-stage object files and executables into a subdirectory with this command: make stage1 @@ -162,7 +296,7 @@ Here is the procedure for installing GNU installation is complete, you may wish to delete these files with `rm -r stage1'. - 8. Recompile the compiler with itself, with this command: + 10. Recompile the compiler with itself, with this command: make CC=stage1/gcc CFLAGS="-g -O -Bstage1/" @@ -172,8 +306,8 @@ Here is the procedure for installing GNU make CC=stage1/gcc CFLAGS="-g -O -Bstage1/ -msoft-float" - 9. If you wish to test the compiler by compiling it with itself one - more time, do this: + 11. If you wish to test the compiler by compiling it with itself one + more time, do this (in C shell): make stage2 make CC=stage2/gcc CFLAGS="-g -O -Bstage2/" @@ -181,16 +315,28 @@ Here is the procedure for installing GNU cmp $file stage2/$file end - This will notify you if any of these stage 3 object files - differs from those of stage 2. Any difference, no matter how - innocuous, indicates that the stage 2 compiler has compiled GNU - CC incorrectly, and is therefore a potentially serious bug which - you should investigate and report (*note Bugs::.). - Aside from the `-B' option, the options should be the same as when you made stage 2. - 10. Install the compiler driver, the compiler's passes and run-time + The `foreach' command (written in C shell) will notify you if + any of these stage 3 object files differs from those of stage 2. + On BSD systems, any difference, no matter how innocuous, + indicates that the stage 2 compiler has compiled GNU CC + incorrectly, and is therefore a potentially serious bug which + you should investigate and report (*note Bugs::.). + + On systems that use COFF object files, bytes 5 to 8 will always + be different, since it is a timestamp. On these systems, you + can do the comparison as follows (in Bourne shell): + + for file in *.o; do + echo $file + tail +10 $file > foo1 + tail +10 stage2/$file > foo2 + cmp foo1 foo2 + done + + 12. Install the compiler driver, the compiler's passes and run-time support. You can use the following command: make install @@ -199,7 +345,7 @@ Here is the procedure for installing GNU `gcc-cc1', `gcc-cpp' and `gcc-gnulib' in directory `/usr/local/lib', which is where the compiler driver program looks for them. It also copies the driver program `gcc' into - the directory `/usr/local', so that it appears in typical + the directory `/usr/local/bin', so that it appears in typical execution search paths. *Warning: there is a bug in `alloca' in the Sun library. To @@ -225,7 +371,7 @@ Here is the procedure for installing GNU `fixincludes'. This installs modified, corrected copies of the files `ioctl.h', `ttychars.h' and many others, in a special directory where only GNU CC will normally look for them. This - script will work on various systems because it choose the files + script will work on various systems because it chooses the files by searching all the system headers for the problem cases that we know about. @@ -246,26 +392,26 @@ File: gcc.info, Node: VMS Install, Pre Installing GNU CC on VMS ======================== -The VMS version of GNU CC is distributed in an unusual tape format -which consists of several tape files. The first is a command file; -the second is an executable program which reads Unix tar format; the -third is another command file which uses this program to read the -remainder of the tape. - -To load the tape, it suffices to mount it `/foreign' and then do -`@mta0:' to execute the command file at the beginning of the tape. - -The tape contains executables and object files as well as sources, so -no compilation is necessary unless you change the sources. (This is -a good thing, since you probably don't have any other C compiler.) +The VMS version of GNU CC is distributed in a backup saveset +containing both source code and precompiled binaries. + +Sometimes the binaries will be from an older version that the +sources, because we don't always have time to update them. In this +case, you should use the binaries you get to recompile the sources. If you must recompile, here is how: - 1. Copy the file `tm-vms.h' to `tm.h', `config-vms.h' to - `config.h', `vax.md' to `md.' and `output-vax.c' to - `aux-output.c'. + 1. Copy the file `tm-vms.h' to `tm.h', `xm-vms.h' to `config.h', + `vax.md' to `md.' and `output-vax.c' to `aux-output.c'. 2. Type `@make' to do recompile everything. + If you are compiling with a version of GCC older than 1.33, + specify `/DEFINE=("inline=")' as an option in all the + compilations. This requires editing all the `gcc' commands in + `make-cc1.com'. (The older versions had problems supporting + `inline'.) Once you have a working 1.33 or newer GCC, you can + change this file back. + To install the `GCC' command so you can use the compiler easily, in the same manner as you use the VMS C compiler, you must install the VMS CLD file for GNU CC as follows: @@ -286,6 +432,20 @@ VMS CLD file for GNU CC as follows: $ set command /table=sys$library:dcltables gnu_cc:gcc + 3. To install the help file, do the following: + + $ lib/help sys$library:helplib.hlb gcc.hlp + Now you can invoke the compiler with a command like `gcc /verbose file.c', which is equivalent to the command `gcc -v -c file.c' in Unix. + +There is a known problem on VMS: `const' global variables don't work +compatibly with the VMS C compiler; we don't know a way to get them +to the linker properly. + +Note that GNU CC on VMS does not generate debugging information to +describe the program's symbols. It is not straightforward to +implement this, and we have no time to spend on it, but we might +consent to install a very modular implementation if you write it. +You will probably have to modify GAS as well as GNU CC.