ack/doc/install.doc

1233 lines
38 KiB
Plaintext
Raw Normal View History

1984-07-27 10:28:48 +00:00
.\" $Header$
.if n .nr PD 1v
.if n .nr LL 78m
.if n .ll 78m
1984-06-29 11:21:50 +00:00
.TL
1986-02-28 18:02:00 +00:00
Amsterdam Compiler Kit Installation Guide
1984-06-29 11:21:50 +00:00
.AU
Ed Keizer
1991-10-16 13:33:50 +00:00
(revised for 3rd, 4th and 5th distribution by Ceriel Jacobs)
1984-06-29 11:21:50 +00:00
.AI
1986-02-28 18:02:00 +00:00
Vakgroep Informatica
1984-06-29 11:21:50 +00:00
Vrije Universiteit
Amsterdam
.NH
Introduction
.PP
This document
describes the process of installing Amsterdam Compiler Kit.
It depends on your combination of hard- and software how
1985-04-12 11:20:15 +00:00
hard it will be to install the Kit.
1991-10-16 13:33:50 +00:00
This description is intended for a Sun-3 workstation.
Installation on VAXen running Berkeley Unix or Ultrix,
Sun-2 or Sun-4 systems and most System V
.UX
1991-10-16 13:33:50 +00:00
systems should be easy.
As of this distribution, installation on PDP-11's or other
systems with a small address space is no longer supported.
1985-04-12 11:20:15 +00:00
See section 7 for installation on other systems.
1984-06-29 11:21:50 +00:00
.NH
1991-10-16 13:33:50 +00:00
The ACK installation process
1984-06-29 11:21:50 +00:00
.PP
1991-10-16 13:33:50 +00:00
Before starting the installation, you have to know some things about the
installation process. In this process, three directory trees are used:
.IP "-"
the ACK source tree. This is the tree on the ACK distribution medium.
For the rest of this document, we will refer to this directory
as $SRC_HOME;
.IP "-"
a configuration tree. This tree is built by the installation process and
is used to do compilations. Its structure reflects that of the source tree,
but this tree will mostly contain Makefiles and relocatable objects.
For the rest of this document, we will refer to this directory
as $CONFIG;
.IP "-"
an ACK users tree. This tree is also built by the installation process.
For the rest of this document, we will refer to this directory
as $TARGET_HOME;
1984-06-29 11:21:50 +00:00
.LP
1991-10-16 13:33:50 +00:00
After installation,
the directories in the ACK users tree contain the following information:
.if n .sp 1
.if n .nr PD 0
1985-04-12 11:20:15 +00:00
.IP "bin" 14
the few utilities that knot things together.
See the section about "Commands".
.IP "lib"
1991-10-16 13:33:50 +00:00
root of a tree containing almost all libraries used by
1985-04-12 11:20:15 +00:00
commands.
All files specific to a certain machine are collected in one subtree
per machine. E.g. "lib/pdp", "lib/z8000".
1987-03-25 22:43:09 +00:00
The names used here are the same names as used for subtrees
1991-10-16 13:33:50 +00:00
of "$SRC_HOME/mach".
1985-04-12 11:20:15 +00:00
.IP "lib/descr"
Command descriptor files used by the program ack.
.IP "lib/LLgen"
Files used by the LL(1) Parser-generator.
1991-10-16 13:33:50 +00:00
.IP "lib/flex"
Files used by the lexical analyser generator Flex.
.IP "lib/m2"
Definition modules for Modula-2.
.IP "lib.bin"
root of a tree containing almost all binaries used by
commands.
All programs specific to a certain machine are collected in one subtree
per machine. E.g. "lib.bin/pdp", "lib.bin/z8000".
The names used here are the same names as used for subtrees
of "$SRC_HOME/mach".
.IP "lib.bin/ego"
1987-03-25 22:43:09 +00:00
Files used by the global optimizer.
1991-10-16 13:33:50 +00:00
.IP "lib.bin/lint"
Binaries for the lint passes and lint libraries.
.IP "lib.bin/ceg"
Files used by the code-expander-generator.
1984-06-29 11:21:50 +00:00
.IP "etc"
1991-10-16 13:33:50 +00:00
Contains the file "ip_spec.t" needed for EM interpreters and EM documentation.
.IP "config"
contains two include files:
.TS
l l.
em_path.h Pathnames used by \fIack\fP, intended
for all utilities
local.h Various definitions for local versions
.TE
These include files are specific for the current machine, so they
are in a separate directory.
.IP "include/_tail_cc"
1984-06-29 11:21:50 +00:00
.br
Include files needed by modules
1984-06-29 11:21:50 +00:00
in the C library from lang/cem/libcc.
Especially needed for "stdio".
1991-10-16 13:33:50 +00:00
.IP "include/tail_ac"
.br
Include files for ANSI C.
.IP "include/occam"
Include files for occam.
1988-05-02 10:33:30 +00:00
.IP "include/_tail_mon"
.br
More or less system independent include files needed by modules
in the library lang/cem/libcc/mon.
1984-06-29 11:21:50 +00:00
.IP "h"
The #include files for:
1985-04-12 11:20:15 +00:00
.TS
l l.
1991-10-16 13:33:50 +00:00
arch.h Definition of the ACK archive format
as_spec.h Used by EM assembler and interpreters
bc_io.h Used by the Basic run-time system
bc_string.h Used by the Basic run-time system
cg_pattern.h Used by the backend program "cg" and its bootstrap
cgg_cg.h Used by the backend program "ncg" and its bootstrap
1985-04-12 11:20:15 +00:00
em_abs.h Contains trap numbers and address for lin and fil
1991-10-16 13:33:50 +00:00
em_ego.h Definition of names for some global optimizer messages
em_flag.h Definition of bits in array em_flag in lib.bin/em_data.a
1985-04-12 11:20:15 +00:00
Describes parameters effect on flow of instructions
em_mes.h Definition of names for mes pseudo numbers
em_mnem.h instruction => compact mapping.
em_pseu.h pseudo instruction => compact mapping
em_ptyp.h Useful for compact code reading/writing,
defines classes of parameters
1991-10-16 13:33:50 +00:00
em_reg.h Definition of mnemonics indicating register type
1985-04-12 11:20:15 +00:00
em_spec.h Definition of constants used in compact code
1991-10-16 13:33:50 +00:00
ip_spec.h Used by programs that read e.out files
m2_traps.h Used by the Modula-2 run-time system
ocm_chan.h Used by the occam run-time system
ocm_parco.h Used by the occam run-time system
ocm_proc.h Used by the occam run-time system
1991-10-16 13:33:50 +00:00
out.h Defines the ACK a.out format
pc_err.h Definitions of error numbers in Pascal
pc_file.h Macro's used in file handling in Pascal
pc_size.h Sizes of objects used by Pascal compiler and
run-time system
pc_math.h Used by the Pascal runtime system
ranlib.h Defines symbol table format for archives
stb.h Defines debugger symbol table types
1985-04-12 11:20:15 +00:00
.TE
.IP "modules"
root of a tree containing modules for compiler writers.
.IP "modules/man"
manual pages for all modules.
.IP "modules/lib"
contains module objects.
.IP "modules/h"
include files for some of the modules.
.IP "modules/pkg"
include files for some of the modules.
1984-06-29 11:21:50 +00:00
.IP "doc"
This directory contains the unformatted documents for the Kit.
1985-04-12 11:20:15 +00:00
A list of the available documents can be found in the last section.
.IP "doc/em"
1987-03-25 22:43:09 +00:00
The EM-manual IR-81.
.IP "doc/em/int"
1987-03-25 22:43:09 +00:00
The EM interpreter written in Pascal.
1991-10-16 13:33:50 +00:00
.IP "man"
Man files for various utilities
.if n .nr PD 1v
.LP
If you have a shared file system and want to install ACK on several types
of machines, it may be useful to know that the "doc", "etc", "h",
"include", "lib" and "man" sub-directories do not depend on this
particular installation. They do not contain binaries or path-dependent
information. These directories can therefore be shared between the
ACK installations. This can be accomplished by creating the tree and
suitable symbolic links before starting the installation process.
.LP
For instance, let us say you have a file-system that is accessible from
the different machines as "/usr/share/local". You can then create a
directory "/usr/share/local/ack", and give it subdirectories "doc", "etc", "h",
"include", "lib" and "man". Also, let us assume that you want the
ack binary tree in "/usr/local/ack". You can create this directory and
then create symbolic links "doc" to "/usr/share/local/ack/doc", etc.
.LP
If you do this on all machines on which ACK will be installed, the
machine-independent part only has to be installed once, preferably
on the fastest processor (it takes a long time to install all libraries).
.LP
The directories in the source tree contain the following information:
.if n .sp 1
.if n .nr PD 0
.IP "bin" 14
source of some shell-scripts.
.IP "lib"
mostly description files for the "ack" program.
.IP "etc"
The main description of EM sits here.
Files (e.g. em_table) describing
the opcodes and pseudos in use,
the operands allowed, effect in stack etc. etc.
1984-06-29 11:21:50 +00:00
.IP "mkun"
The PUBMAC macro package for nroff/troff from the Katholieke Universiteit at
Nijmegen.
It is used for the EM reference manual.
The Makefile installs the macro package in
/usr/lib/tmac.
1984-06-29 11:21:50 +00:00
This package is in the public domain.
.IP "mach"
1985-04-12 11:20:15 +00:00
just there to group the directories with all sources for each machine.
The section about "Machines" of this manual indicates which subdirectories
are used for which systems.
.br
These directories have subdirectories named:
.in +3n
.TS
l l.
cg the backend (*.m => *.s)
ncg the new backend (*.m => *.s)
as the assembler (*.s => *.o) or
assembler/linker (*.s + libraries => a.out)
1986-02-28 18:02:00 +00:00
cv Conversion programs for a.out files.
dl Down-load programs
top the target optimizer
1986-02-28 18:02:00 +00:00
libem Sources for EM runtime system, only depending on CPU type
1985-04-12 11:20:15 +00:00
libbc Used to create Basic run-time system and libraries
libcc Used to create C run-time system and libraries
libpc Used to create Pascal run-time system and libraries
liboc Used to create Occam run-time system and libraries
1988-04-19 14:33:58 +00:00
libm2 Used to create Modula-2 run-time system and libraries
1991-10-16 13:33:50 +00:00
libf77 Used to create Fortran run-time system and libraries
1988-04-19 14:33:58 +00:00
libfp Used to create floating point library
1991-10-16 13:33:50 +00:00
libdb Used to create debugger support library
1985-04-12 11:20:15 +00:00
libsys Sources for system-dependent EM library
test Various tests
1986-02-28 18:02:00 +00:00
1985-04-12 11:20:15 +00:00
int Source for an interpreter
1989-03-07 16:25:32 +00:00
ce code expander (fast back-end producing either .s or .o files)
1985-04-12 11:20:15 +00:00
.TE
.in -3n
1991-10-16 13:33:50 +00:00
Actually, some of these directories will only appear in the configuration tree.
.br
1986-02-28 18:02:00 +00:00
The directory proto contains files used by most machines,
1985-04-12 11:20:15 +00:00
like machine-independent sources and Makefiles.
.in +3n
.TS
l l.
mach/proto/cg Current backend sources.
mach/proto/ncg New backend sources.
1986-02-28 18:02:00 +00:00
mach/proto/as Assembler sources.
mach/proto/top Target optimizer sources.
1989-03-07 16:25:32 +00:00
mach/proto/fp Floating point package sources.
1986-02-28 18:02:00 +00:00
mach/proto/libg Makefile for compiling libraries.
1991-10-16 13:33:50 +00:00
mach/proto/grind machine-independent debugger support
1985-04-12 11:20:15 +00:00
.TE
1984-06-29 11:21:50 +00:00
.IP "emtest"
Contains prototype of em test set.
.IP "lang"
1985-04-12 11:20:15 +00:00
Just there to group the directories for all front-ends
1984-06-29 11:21:50 +00:00
.IP "lang/pc"
Pascal front-end
.IP "lang/pc/libpc"
.br
Source of Pascal run-time system (in EM or C)
1984-06-29 11:21:50 +00:00
.IP "lang/pc/test"
Some test programs written in Pascal
1991-10-16 13:33:50 +00:00
.IP "lang/pc/comp"
1985-04-12 11:20:15 +00:00
The Pascal compiler proper
1984-06-29 11:21:50 +00:00
.IP "lang/cem"
C front-end
.IP "lang/cem/libcc"
.br
Directories with sources of C runtime system, libraries (in EM or C)
.IP "lang/cem/libcc/gen"
.br
1991-10-16 13:33:50 +00:00
Sources for routines in chapter III of
.UX
programmers manual,
1985-04-12 11:20:15 +00:00
excluding Stdio
1984-06-29 11:21:50 +00:00
.IP "lang/cem/libcc/stdio"
.br
1985-04-12 11:20:15 +00:00
Stdio sources
1988-07-25 12:21:59 +00:00
.IP "lang/cem/libcc/math"
.br
Sources for mathematical routines, normally available with the
1991-10-16 13:33:50 +00:00
\fB-lm\fP option to \fIcc\fP
1984-06-29 11:21:50 +00:00
.IP "lang/cem/libcc/mon"
.br
Sources for routines in chapter II, written in EM
.IP "lang/cem/cemcom"
1984-06-29 11:21:50 +00:00
.br
The compiler proper
1991-10-16 13:33:50 +00:00
.IP "lang/cem/cemcom.ansi"
.br
ANSI C compiler proper
.IP "lang/cem/cpp.ansi"
.br
ANSI C preprocessor
.IP "lang/cem/libcc.ansi"
.br
ANSI C library sources
1984-06-29 11:21:50 +00:00
.IP "lang/cem/ctest"
.br
C test set
.IP "lang/cem/ctest/cterr"
.br
Programs developed for pinpointing previous errors
.IP "lang/cem/ctest/ct*"
.br
1991-10-16 13:33:50 +00:00
The test programs
.IP "lang/cem/lint"
A C program checker
.IP "lang/cem/lint/lpass1"
.br
The first pass of lint
.IP "lang/cem/lint/lpass1.ansi"
.br
The first pass of lint, this time for ANSI C
.IP "lang/cem/lint/lpass2"
.br
The second pass of lint, shared between ANSI C and "old-fashioned" C
.IP "lang/cem/lint/llib"
.br
Programs for producing lint libraries
.IP "lang/basic"
Basic front-end
1985-04-12 11:20:15 +00:00
.IP "lang/basic/src"
.br
1991-10-16 13:33:50 +00:00
The compiler proper
1985-04-12 11:20:15 +00:00
.IP "lang/basic/lib"
.br
1991-10-16 13:33:50 +00:00
Basic run-time library source
1985-04-12 11:20:15 +00:00
.IP "lang/basic/test"
.br
1991-10-16 13:33:50 +00:00
Various Basic programs
.IP "lang/occam"
1991-10-16 13:33:50 +00:00
Occam front-end
.IP "lang/occam/comp"
.br
1991-10-16 13:33:50 +00:00
The compiler proper
.IP "lang/occam/lib"
.br
1991-10-16 13:33:50 +00:00
Source of Occam run-time system (in EM or C)
.IP "lang/occam/test"
.br
1991-10-16 13:33:50 +00:00
Some Occam programs
1988-04-19 14:33:58 +00:00
.IP "lang/m2"
1991-10-16 13:33:50 +00:00
Modual-2 front-end
1988-04-19 14:33:58 +00:00
.IP "lang/m2/comp"
1991-10-16 13:33:50 +00:00
The compiler proper
1988-04-19 14:33:58 +00:00
.IP "lang/m2/libm2"
1991-10-16 13:33:50 +00:00
Source of Modula-2 run-time system (in EM, C and Modula-2)
1988-04-19 14:33:58 +00:00
.IP "lang/m2/m2mm"
1991-10-16 13:33:50 +00:00
Modula-2 makefile generator
1988-04-19 14:33:58 +00:00
.IP "lang/m2/test"
1991-10-16 13:33:50 +00:00
Some Modula-2 example programs
.IP "lang/fortran"
Fortran front-end (translates fortran into C). The stuff in this
sub-directory carries the following copyright notice:
.IP ""
.nf
/****************************************************************
Copyright 1990, 1991 by AT&T Bell Laboratories and Bellcore.
Permission to use, copy, modify, and distribute this software
and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the names of AT&T Bell Laboratories or
Bellcore or any of their entities not be used in advertising or
publicity pertaining to distribution of the software without
specific, written prior permission.
AT&T and Bellcore disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall AT&T or Bellcore be liable for
any special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
****************************************************************/
.fi
.IP "lang/fortran/comp"
1988-04-19 14:33:58 +00:00
.br
1991-10-16 13:33:50 +00:00
The compiler proper
.IP "lang/fortran/lib"
1984-06-29 11:21:50 +00:00
.br
1991-10-16 13:33:50 +00:00
Source of fortran runtime system and libraries.
.IP "util"
1985-04-12 11:20:15 +00:00
Contains directories with sources for various utilities
.IP "util/ack"
1991-10-16 13:33:50 +00:00
The program used for translation with the Kit
1984-06-29 11:21:50 +00:00
.IP "util/opt"
1991-10-16 13:33:50 +00:00
EM peephole optimizer (*.k => *.m)
.IP "util/ego"
1991-10-16 13:33:50 +00:00
The global optimizer
.IP "util/topgen"
1991-10-16 13:33:50 +00:00
The target optimizer generator
1984-06-29 11:21:50 +00:00
.IP "util/misc"
Decode (*.[km] => *.e) + encode (*.e => *.k).
1984-06-29 11:21:50 +00:00
.IP "util/data"
1991-10-16 13:33:50 +00:00
The C-code for `lib.bin/em_data.a`.
These sources are created by the Makefile in `etc`.
1984-06-29 11:21:50 +00:00
.IP "util/ass"
The EM assembler (*.[km] + libraries => e.out).
1984-06-29 11:21:50 +00:00
.IP "util/arch"
The archivers to be used for ALL EM utilities.
1984-06-29 11:21:50 +00:00
.IP "util/cgg"
A program needed for compiling backends.
1985-04-12 11:20:15 +00:00
.IP "util/ncgg"
A program needed for compiling the newest backends.
1984-06-29 11:21:50 +00:00
.IP "util/cpp"
The C preprocessor.
1985-04-12 11:20:15 +00:00
.IP "util/shf"
Various shell files.
.IP "util/LLgen"
The extended LL(1) parser generator.
.IP "util/amisc"
Contains some programs handling ACK a.out format, such as anm, asize.
.IP "util/cmisc"
Contains some programs to help in resolving name conflicts, and
a dependency generator for makefiles.
.IP "util/led"
The ACK link-editor, reading ACK relocatable a.out format, and writing
ACK a.out format.
1988-06-27 15:00:08 +00:00
.IP "util/int"
1991-10-16 13:33:50 +00:00
An EM interpreter, written in C. Very useful for checking out software,
but slow.
1989-03-07 16:25:32 +00:00
.IP "util/ceg"
Code expander generator.
1991-10-16 13:33:50 +00:00
.IP "util/grind"
A symbolic debugger.
.IP "util/byacc"
This is Berleley yacc, in the public domain.
.IP "util/flex"
This is a replacement for lex. It carries the following copyright notice:
.IP ""
.nf
Copyright (c) 1990 The Regents of the University of California.
All rights reserved.
This code is derived from software contributed to Berkeley by
Vern Paxson.
The United States Government has rights in this work pursuant
to contract no. DE-AC03-76SF00098 between the United States
Department of Energy and the University of California.
Redistribution and use in source and binary forms are permitted
provided that: (1) source distributions retain this entire
copyright notice and comment, and (2) distributions including
binaries display the following acknowledgement: ``This product
includes software developed by the University of California,
Berkeley and its contributors'' in the documentation or other
materials provided with the distribution and in all advertising
materials mentioning features or use of this software. Neither the
name of the University nor the names of its contributors may be
used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.
.fi
1985-04-12 11:20:15 +00:00
.ne 4
1991-10-16 13:33:50 +00:00
.if n .nr PD 1v
1984-06-29 11:21:50 +00:00
.LP
All pathnames mentioned in the text of this document are relative to the
1991-10-16 13:33:50 +00:00
ACK source directory, unless they start with '/' or one of $SRC_HOME,
$TARGET_HOME or $CONFIG.
.NH
Restoring the ACK tree
.PP
The process of installing the Amsterdam Compiler Kit is quite simple.
The first step is to restore the Amsterdam Compiler Kit
distribution tree structure.
Proceed as follows
.IP " \-" 10
Create a directory, for example /usr/em, on a device
with at least 12 Megabytes left. This directory will be $SRC_HOME.
.IP " \-"
Change to that directory (cd ...).
.IP " \-"
Extract all files from the distribution medium, for instance
magtape:
\fBtar x\fP.
.IP " \-"
Keep a copy of the original distribution to be able to repeat the process
of installation in case of disasters.
This copy is also useful as a reference point for diff-listings.
1985-04-12 11:20:15 +00:00
.NH
Adapting ACK to your system
1984-06-29 11:21:50 +00:00
.PP
1985-04-12 11:20:15 +00:00
Before compiling the sources in the Kit some installation dependent
actions have to be taken.
Most of these are performed by an interactive shell script in the file
1991-10-16 13:33:50 +00:00
.I $SRC_HOME/first/first.
If you don't want to write in the $SRC_HOME tree you can call this
script from another directory, f.i. an empty directory which will later
become $CONFIG.
1985-04-12 11:20:15 +00:00
.LP
1991-10-16 13:33:50 +00:00
The actions of the
.I first
script are:
.if n .sp 1
.if n .nr PD 0
1986-02-28 18:02:00 +00:00
.IP \-
1991-10-16 13:33:50 +00:00
Asking you for the pathnames of the ACK source directory, the
configuration directory, and the ACK users directory.
1987-03-25 22:43:09 +00:00
.IP \-
1985-04-12 11:20:15 +00:00
Asking you for the type of system you have
and creating the shell script "ack_sys" in the Kit's bin directory.
Several utilities make use of "ack_sys" to determine the type of
system you have.
The current choice is between:
.TS
c c c
l l l.
answer system type default machine
vax_bsd4_1a VAX11 with BSD4.1a vax4
vax_bsd4_2 VAX11 with BSD4.2 vax4
vax_sysV_2 VAX11 with System V.2 vax4
1989-10-10 14:42:59 +00:00
i386 Intel 80386 system running Xenix System V i386
1991-10-16 13:33:50 +00:00
sun3 Sun-3 Motorola 68020 workstation sun3
sun2 Sun-2 Motorola 68010 workstation sun2
m68_sysV_0 68000 with Uniplus UNIX System V.0 mantra
1991-10-16 13:33:50 +00:00
m68020 Motorola M68020 VME131
running Unix System V/68 R2V2.1 m68020
sparc Sun-4 or SPARC workstation sparc
ANY Neither of the above ???
1985-04-12 11:20:15 +00:00
.TE
For some of these, the installation procedure has not been tested, as
1988-04-19 14:33:58 +00:00
we don't have them.
For others, the installation procedure has only been tested with earlier
distributions, as we don't have those systems anymore.
However,
1991-10-16 13:33:50 +00:00
the vax_bsd4_2, sun3 and sparc systems are known to behave
reasonably.
1991-10-16 13:33:50 +00:00
The Sun systems should run SunOs Release 3.0 or newer.
1985-04-12 11:20:15 +00:00
For ANY you can use any name you fancy,
but the Kit will not be able to compile programs for your system.
If you want to do that you have to read the section about "compilation
on a different machine".
1986-02-28 18:02:00 +00:00
.IP \-
1991-10-16 13:33:50 +00:00
Setting the default machine for which code is
1985-04-12 11:20:15 +00:00
produced to your own type of system according to the table above.
1991-10-16 13:33:50 +00:00
This in done in the file "$TARGET_HOME/config/local.h".
See also the section 9.1.
1986-02-28 18:02:00 +00:00
.IP \-
1991-10-16 13:33:50 +00:00
Asking you for things that you may not want to install.
1986-02-28 18:02:00 +00:00
.IP \-
1991-10-16 13:33:50 +00:00
Producing a shell script called "INSTALL" that will take care of the
ACK installation process.
.if n .sp 1
.if n .nr PD 1v
.LP
Some actions still have to be done by hand.
1991-10-16 13:33:50 +00:00
.if n .sp 1
.if n .nr PD 0
.IP \-
1985-04-12 11:20:15 +00:00
The installation of the PUBMAC macro package is not done
1988-04-26 14:11:05 +00:00
automatically because you need super-user privileges to do
1985-04-12 11:20:15 +00:00
that on most systems.
This macro package is used with several of the documents
provided in the Kit.
1986-02-28 18:02:00 +00:00
.IP \-
1985-04-12 11:20:15 +00:00
The manual files for the Kit can be copied to their
appropriate place in the system by giving the command "make install"
1991-10-16 13:33:50 +00:00
in the $TARGET_HOME/man directory, but only
.B after
running the installation of the
Kit itself.
1991-10-16 13:33:50 +00:00
.if n .sp 1
.if n .nr PD 0
1984-06-29 11:21:50 +00:00
.NH
1985-04-12 11:20:15 +00:00
Compiling the Kit
1984-06-29 11:21:50 +00:00
.PP
1991-10-16 13:33:50 +00:00
The next step in the installation process is to run the "INSTALL"
shell-script:
.DS
sh INSTALL > INSTALL.out 2>&1 &
.DE
This shell-script performs the following steps:
.if n .sp 1
.if n .nr PD 0
.IP \-
it will produce a configuration tree, reflecting the structure of the
source tree.
.IP \-
Produce Makefiles in the configuration tree ($CONFIG).
As mentioned before, compilations
will be done in the configuration tree, not in the source tree.
Most configuration directories will have Makefiles
1985-04-12 11:20:15 +00:00
used to compile and install the programs in that
1984-06-29 11:21:50 +00:00
directory.
1985-04-12 11:20:15 +00:00
All programs needed for compilation and/or cross compilation
1991-10-16 13:33:50 +00:00
with the Kit are installed in $TARGET_HOME by these Makefiles.
These Makefiles are produced from corresponding files called
"proto.make" in the source tree. In fact, the "proto.make" files
are almost complete Makefiles, except for some macro definitions that
are collected by the \fIfirst\fP script.
The Makefiles adhere to a standard which is described in the
1985-04-12 11:20:15 +00:00
section 9.
1991-10-16 13:33:50 +00:00
.IP \-
Copy "Action" files to the configuration tree and editing them to
reflect your choices concerning the parts of ACK that you want
to install. "Action" files are described below.
.IP \-
Copy part of the source tree to de ACK users tree (include files,
manual pages, documentation, et cetera).
.IP \-
Calling the "TakeAction" script.
You do not have to start all the Makefiles separately.
1985-04-12 11:20:15 +00:00
We wrote a shell script calling the make's needed to install
the whole Kit.
1991-10-16 13:33:50 +00:00
This script consists of the file $SRC_HOME/TakeAction
and a few files called Action in some configuration directories.
1985-04-12 11:20:15 +00:00
The Action files describe in a very simple form which actions
have to be performed in which directories.
The default action is to start "make install && make clean".
1985-04-12 11:20:15 +00:00
The output of each make is diverted to a file called "Out"
in the same directory as the make was started in.
If the make was successful (return code 0) the Out file is removed
and the script TakeAction produces a small message telling you
that it succeeded in fulfilling its goal.
If the make was not successful (any other return code) the Out file
is left alone for further examination and a small message telling you
to look at that file is produced by TakeAction.
1991-10-16 13:33:50 +00:00
.br
1985-04-12 11:20:15 +00:00
For some programs the scripts already know they can't be
installed on your type of system.
In that case they produce a message "Sorry, ....." and
happily proceed with further installation commands.
1991-10-16 13:33:50 +00:00
.if n .sp 1
.if n .nr PD 1v
.LP
1985-04-12 11:20:15 +00:00
Compilation of the whole Kit might take anything from a few
1991-10-16 13:33:50 +00:00
hours to more than a day, depending on the speed of your machine and
your choices.
.LP
1985-04-12 11:20:15 +00:00
If this compilation went reasonably successful you should be able
to use the Kit.
Read the next section and the manuals provided
1991-10-16 13:33:50 +00:00
with the Kit (in the $TARGET_HOME/man directory) on how to use it.
1985-04-12 11:20:15 +00:00
.NH 2
1985-04-12 11:32:41 +00:00
Problems you may meet
1985-04-12 11:20:15 +00:00
.NH 3
on Unisoft m68000 systems.
.PP
The Unisoft C compiler has a bug which impedes the correct
translation of the peephole optimizer.
For a more detailed description of this phenomenen see
1991-10-16 13:33:50 +00:00
the file "$SRC_HOME/mach/m68k2/Unisoft_bug".
1985-04-12 11:20:15 +00:00
.NH 3
with backends
.PP
1991-10-16 13:33:50 +00:00
The backends for the PDP11, VAX, Motorola 68000 and 68020,
Intel 8086, and Intel 80386
have been heavily used by ourselves and are well tested.
1985-04-12 11:20:15 +00:00
The backends for the other machines are known to run our own
test programs,
but might reveal errors when more heavily used.
.NH 2
An example output of TakeAction.
1991-10-16 13:33:50 +00:00
.LP
.sp 1
.nf
System definition -- done
EM definition library -- done
C utilities -- done
Flex lexical analyzer generator -- done
Yacc parser generator -- done
system-call interface module -- done
.
.
.
EM Global optimizer -- done
ACK archiver -- done
Program 'ack' -- done
Bootstrap for backend tables -- done
Bootstrap for newest form of backend tables -- done
.
.
.
C frontend -- done
ANSI-C frontend -- done
ANSI-C preprocessor -- done
ANSI-C header files -- done
Failed for LINT C program checker, see lang/cem/lint/Out
Pascal frontend -- done
Basic frontend -- done
.
.
.
Vax 4-4 assembler -- done
Vax 4-4 backend -- done
Vax target optimizer -- done
ACK a.out to VAX a.out conversion program -- done
Sorry, Vax code expander library can only be made on vax* systems
Vax 4-4 EM library -- done
Vax 4-4 debugger support library -- done
Vax 4-4 etext,edata,end library -- done
Vax 4-4 systemcall interface -- done
.
.
.
.sp 1
.fi
.LP
1985-04-12 11:20:15 +00:00
The lines starting with "Sorry, " tell you that certain programs cannot
be translated on your machine.
The lines starting with "Failed for" tell
1991-10-16 13:33:50 +00:00
you that certain programs/libraries were expected to,
1985-04-12 11:20:15 +00:00
but did not compile.
1991-10-16 13:33:50 +00:00
In this example, the installation of LINT failed.
1985-04-12 11:20:15 +00:00
If you want to repeat a certain part of the installation, look in
1991-10-16 13:33:50 +00:00
the Action file, which resides in the root of the configuration tree,
for the directory in which that part is to be found.
1985-04-12 11:20:15 +00:00
If that directory contains an Action file issue the command
1991-10-16 13:33:50 +00:00
"sh $SRC_HOME/TakeAction", otherwise type "make install".
1984-06-29 11:21:50 +00:00
.NH
Commands
.PP
1991-10-16 13:33:50 +00:00
The following commands are available in the $TARGET_HOME/bin directory after compilation
of the Kit:
1991-10-16 13:33:50 +00:00
.IP "\fIack\fP, \fIacc\fP, \fIabc\fP, \fIapc\fP, \fIocm\fP, \fIm2\fP, \fIf2c\fP and their links" 14
1984-06-29 11:21:50 +00:00
.br
1985-04-12 11:20:15 +00:00
The names mentioned here can be used to compile Pascal, C, etc... programs.
Most of the links can be used to generate code for a particular
machine.
1985-04-12 11:32:41 +00:00
See also the section about "Machines".
1984-06-29 11:21:50 +00:00
.IP \fIarch\fP
The archiver used for the EM- and universal assembler/loader.
.IP \fIaal\fP
The archiver used for ACK objects.
1985-04-12 11:20:15 +00:00
.IP \fIem\fP
This program selects a interpreter to execute an e.out file.
Interpreters exist for PDP-11 and Motorola 68000 systems.
.IP \fIeminform\fP
The program to unravel the post-mortem information of
the EM interpretator for the PDP-11.
.IP \fILLgen\fP
The LL(1) parser generator.
.IP \fIack_sys\fP
A shell script producing an identification of your system.
Used by some utilities to determine what is, and what is
1991-10-16 13:33:50 +00:00
not feasible on your system.
1985-04-12 11:20:15 +00:00
.IP \fImarch\fP
A shell script used while compiling libraries.
.IP "\fIasize\fP, \fIanm\fP, \fIastrip\fP"
.br
Do the same as \fIsize\fP, \fInm\fP and \fIstrip\fP, but for ACK object format.
.IP \fImkdep\fP
A dependency generator for makefiles.
.IP "\fIcid\fP, \fIprid\fP, \fIcclash\fP"
.br
Some utilities for handling name clashes in C programs. Some
systems have C-compilers with only 7 or 8 characters significant in
identifiers.
1988-11-16 10:14:26 +00:00
.IP "\fItabgen\fP
A utility for generating character tables for C-programs.
1988-06-27 15:08:38 +00:00
.IP \fIint\fP
An EM interpreter. This one is written in C, and is very useful for checking
out programs.
1991-10-16 13:33:50 +00:00
.IP "\fIgrind\fP
A source level debugger for ANSI-C, Modula-2 and Pascal.
1984-06-29 11:21:50 +00:00
.LP
1985-04-12 11:20:15 +00:00
We currently make the Kit available to our users by telling
1991-10-16 13:33:50 +00:00
them that they should include the $TARGET_HOME/bin directory in
1984-06-29 11:21:50 +00:00
their PATH shell variable.
The programs will still work when moved to a different
1985-04-12 11:20:15 +00:00
directory or linked to.
Copying should preferably be done with tar, since links are
1984-06-29 11:21:50 +00:00
heavily used.
Renaming of the programs linked to \fIack\fP will not always
produce the desired result.
This program uses its call name as an argument.
1991-10-16 13:33:50 +00:00
Any call name not being \fIcc\fP, \fIacc\fP, \fIabc\fP, \fIpc\fP, \fIf2c\fP,
1988-05-02 10:33:30 +00:00
\fIocm\fP, \fIm2\fP, or \fIapc\fP will be
1984-06-29 11:21:50 +00:00
interpreted as the name of a 'machine description' and the
program will try to find a description file with that name.
1991-10-16 13:33:50 +00:00
The installation process will only touch the utilities in the $TARGET_HOME/bin
1984-06-29 11:21:50 +00:00
directory, not your own copies.
.NH
1985-04-12 11:20:15 +00:00
Machines
1984-06-29 11:21:50 +00:00
.PP
1985-04-12 11:20:15 +00:00
Underneath you will find a table with entries for all commands in
the bin directory used to (cross)compile for a particular machine.
The name in the first column give the name in the bin directory.
The column headed dir indicates which subdirectories of
lib are needed for compilation.
The column head i/p contains the integer and pointer size used in units of
bytes.
The subdirectories with the same name in mach contain the sources.
1988-04-11 13:03:14 +00:00
A * in the column headed 'fp' indicates that floating point can be used
for that particular machine. A + in that column indicates that floating
point is only available under the '-fp' option. In this case, software
floating point emulation is used.
1985-04-12 11:20:15 +00:00
.TS
l l l l l l l.
command system i/p languages fp dir remarks
1991-10-16 13:33:50 +00:00
pdp PDP/UNIX V7 2/2 C * pdp
1990-02-09 16:27:59 +00:00
Pascal
1985-04-12 11:20:15 +00:00
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
1990-02-09 16:27:59 +00:00
vax4 VAX/BSD 4.? 4/4 C * vax4
System V.2 Pascal
1985-04-12 11:20:15 +00:00
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
sparc Sun-4 4/4 C * sparc
Pascal
Basic
Occam
Modula-2
Fortran
1985-04-12 11:20:15 +00:00
1988-04-11 13:03:14 +00:00
m68k2 M68000/Unisoft 2/4 C + m68k2
1985-04-12 11:20:15 +00:00
Pascal
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
1988-04-11 13:03:14 +00:00
m68k4 M68000/Unisoft 4/4 C + m68k4
Pascal m68k2
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1985-04-12 11:20:15 +00:00
1988-04-11 13:03:14 +00:00
pmds M68000/PMDS 2/4 C + pmds Philips Micro
1985-04-12 11:20:15 +00:00
Pascal m68k2 Devel. System
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
1988-04-11 13:03:14 +00:00
pmds4 M68000/PMDS 4/4 C + pmds4 Philips Micro
Pascal m68k2 Devel. System
Basic m68k4
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1988-04-11 13:03:14 +00:00
mantra M68000/SysV.0 4/4 C + mantra
Pascal m68k2
Basic m68k4
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1988-04-11 13:03:14 +00:00
m68020 M68020/V/68 4/4 C + m68020
R2V2.1 Pascal
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1991-10-16 13:33:50 +00:00
sun3 Sun-3 R3.0 4/4 C + sun3
Pascal m68020
1985-04-12 11:20:15 +00:00
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1985-04-12 11:20:15 +00:00
1991-10-16 13:33:50 +00:00
sun2 Sun-2 R3.0 4/4 C + sun2
Pascal m68k4
Basic m68k2
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1988-04-11 13:03:14 +00:00
i86 IBM PC/IX 2/2 C + i86 IBM PC with PC/IX
Pascal Causes kernel crashes
1985-04-12 11:20:15 +00:00
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
1988-04-11 13:03:14 +00:00
xenix3 Microsoft Xenix V3 2/2 C + xenix3 IBM AT with Xenix
Pascal i86
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1990-02-09 16:27:59 +00:00
i386 SCO Xenix System V 4/4 C + i386 Intel 80386, Xenix System V
1989-10-10 14:42:59 +00:00
Pascal
Basic
Occam
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1989-10-10 14:42:59 +00:00
1988-04-19 14:33:58 +00:00
minix Minix PC 2/2 C + minix IBM PC running Minix
Pascal i86
Basic
Occam
Modula-2
minixST ST Minix 2/4 C + minixST Atari ST running Minix
Pascal m68k2
Basic
Occam
Modula-2
1988-04-11 13:03:14 +00:00
1985-04-12 11:20:15 +00:00
z8000 Zilog 8000 2/2 C z8000 Central Data
Pascal CPU board
Basic Uses assembler/loader
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
1988-05-06 13:46:55 +00:00
em22 EM machine 2/2 C * em22 Needs interpreter
1985-04-12 11:20:15 +00:00
Pascal
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
1988-05-06 13:46:55 +00:00
em24 EM machine 2/4 C * em24 Needs interpreter
1985-04-12 11:20:15 +00:00
Pascal
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
1988-05-06 13:46:55 +00:00
em44 EM machine 4/4 C * em44 Needs interpreter
Pascal
1985-04-12 11:20:15 +00:00
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1985-04-12 11:20:15 +00:00
6500 6502/BBC 2/2 C 6500 Uses assembler/loader
1985-04-12 11:20:15 +00:00
Pascal
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
6800 Bare 6800 6800 Assembler only
6805 Bare 6805 6805 Assembler only
6809 Bare 6809 6809 Assembler only
ns Bare NS16032 4/4 C ns
Pascal
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1991-10-16 13:33:50 +00:00
Fortran
1985-04-12 11:20:15 +00:00
i80 Hermac/z80 2/2 C i80
Pascal
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
z80 Hermac/z80 2/2 C z80 \fIi80\fP is faster
Pascal
Basic
Occam
1988-04-19 14:33:58 +00:00
Modula-2
1985-04-12 11:20:15 +00:00
s2650 Signetics 2650 s2650 Assembler only
1991-10-16 13:33:50 +00:00
arm Acorn Archimedes 4/4 C * arm Uses assembler/loader
Pascal
Basic
Occam
Modula-2
Fortran
1985-04-12 11:20:15 +00:00
.TE
1991-10-16 13:33:50 +00:00
.LP
1988-05-06 13:46:55 +00:00
The commands \fBem22\fP, \fBem24\fP and \fBem44\fP
1985-04-12 11:20:15 +00:00
produce e.out files with EM machine code which must be interpreted.
1988-06-27 15:08:38 +00:00
The Kit contains three interpreters: one running under PDP 11/V7 UNIX,
1991-10-16 13:33:50 +00:00
one for the M68000, running under the PMDS system, Sun systems,
the Mantra system, etc, and a portable one, written in C.
1985-04-12 11:20:15 +00:00
The first one can only interpret 2/2 e.out files,
1988-06-27 15:08:38 +00:00
the second takes 2/4 and 4/4 files,
and the last one takes 2/2, 2/4 and 4/4.
1985-04-12 11:20:15 +00:00
The PDP 11 interpreter executes floating point instructions.
.LP
1991-10-16 13:33:50 +00:00
The program \fB$TARGET_HOME/bin/em\fP calls the appropriate
1985-04-12 11:20:15 +00:00
interpreter.
1991-10-16 13:33:50 +00:00
The interpreters are looked for in the em22, em24 and em44
1985-04-12 11:20:15 +00:00
subdirectories of lib.
1991-10-16 13:33:50 +00:00
The third interpreter is available as the program \fB$TARGET_HOME/bin/int\fP
1988-06-27 15:08:38 +00:00
in the bin directory.
1984-06-29 11:21:50 +00:00
.NH
1985-04-12 11:20:15 +00:00
Compilation on a different machine.
1984-06-29 11:21:50 +00:00
.PP
1985-04-12 11:20:15 +00:00
The Kit be installed and used as a cross-compiler
1991-10-16 13:33:50 +00:00
for the languages it supports on
.UX
machine.
The presence of most
.UX
utilities is essential for compilation.
A few of the programs you certainly need are: C-compiler, sed,
and make.
1984-06-29 11:21:50 +00:00
.NH 2
1985-04-12 11:20:15 +00:00
Backend
1984-06-29 11:21:50 +00:00
.PP
1985-04-12 11:20:15 +00:00
The existence of a backend with a system call library
for your system is essential
1984-06-29 11:21:50 +00:00
if you wish to produce executable files for that system.
1985-04-12 11:20:15 +00:00
Rewriting the system call library if the one supplied does
not work on your system is fairly straightforward.
If no backend exists for your CPU type you have to write one yourself
which is a major undertaking.
.NH 2
Universal assembler/loader, link editor
1984-06-29 11:21:50 +00:00
.PP
1991-10-16 13:33:50 +00:00
For most machines, the description files in $TARGET_HOME/lib/*/descr use our
universal assembler and our link editor.
The load file produced is not directly
1984-06-29 11:21:50 +00:00
usable in any system known to us,
but has to be converted before it can be put to use.
1985-04-12 11:20:15 +00:00
The \fIcv\fP programs convert our a.out format into
executable files.
1984-06-29 11:21:50 +00:00
The \fIdl\fP programs present for some machines unravel
our a.out files and transmit commands to load memory
1984-06-29 11:21:50 +00:00
to a microprocessor over a serial line.
1991-10-16 13:33:50 +00:00
The file $TARGET_HOME/man/ack.out.5 contains a description of the format of
the universal assembler load file.
It might be useful to those who wish or need to write their
1984-06-29 11:21:50 +00:00
own conversion programs.
Also, a module is included to read and write our a.out format.
1991-10-16 13:33:50 +00:00
See $TARGET_HOME/modules/man/object.3.
1984-06-29 11:21:50 +00:00
.NH 2
1985-04-12 11:20:15 +00:00
Compiling libraries
1984-06-29 11:21:50 +00:00
.PP
The Kit contains sources for part II and III of the C-library.
1990-02-09 16:27:59 +00:00
These files can be used to make libraries for the ACK C-compiler.
1984-06-29 11:21:50 +00:00
The recompilation process uses a few include files.
1991-10-16 13:33:50 +00:00
The $TARGET_HOME/include directory contains the include files
it needs.
An effort has been made to make the part III stuff as system independent as
possible.
1984-06-29 11:21:50 +00:00
.NH
1985-04-12 11:20:15 +00:00
Options
.NH 2
Default machine
.PP
1991-10-16 13:33:50 +00:00
There is one important option in $TARGET_HOME/config/local.h.
1985-04-12 11:20:15 +00:00
The utility \fIack\fP uses a default machine name when called
1988-04-19 14:33:58 +00:00
as \fIacc\fP, \fIcc\fP, \fIabc\fP, \fIapc\fP, \fIpc\fP, \fIocm\fP,
1991-10-16 13:33:50 +00:00
\fIm2\fP, \fIf2c\fP, or \fIack\fP.
1985-04-12 11:20:15 +00:00
The machine name used for default is determined by the
1991-10-16 13:33:50 +00:00
definition of ACKM in $TARGET_HOME/config/local.h.
1990-02-09 16:27:59 +00:00
The Kit is distributed with "sun3" as the default machine,
1985-04-12 11:20:15 +00:00
but the shell script "first" in the directory "first" alters this
to suit your own system.
There is nothing against using the Kit as a cross-compiler
and by default produce code that can't run on your own system.
.NH 2
Pathnames
.PP
1991-10-16 13:33:50 +00:00
Absolute pathnames are concentrated in "$TARGET_HOME/config/em_path.h".
Only the utilities \fIack\fP, \fIflex\fP, and \fILLgen\fP use
1985-04-12 11:20:15 +00:00
absolute pathnames to access files in the Kit.
The tree is distributed with /usr/em as the working
directory.
The definition of EM_DIR in em_path.h should be altered to
specify the root
1991-10-16 13:33:50 +00:00
directory for the Compiler Kit distribution on your system ($SRC_HOME).
1990-02-09 16:27:59 +00:00
This is done automatically by the shell script "first" in the
1985-04-12 11:20:15 +00:00
directory "first".
Em_path.h also specifies which directory should be used for
temporary files.
Most programs from the Kit do indeed use that directory
although some remain stubborn and use /tmp or /usr/tmp.
.LP
The shape of the tree should not be altered lightly because
most Makefiles and the
utility \fIack\fP know the shape of the ACK tree.
The knowledge of the utility \fIack\fP about the shape of the tree is
1991-10-16 13:33:50 +00:00
concentrated in the files in the directory $TARGET_HOME/lib/*/descr and $TARGET_HOME/lib/descr/*.
1985-04-12 11:20:15 +00:00
.NH
Makefiles
.PP
1991-10-16 13:33:50 +00:00
Most directories contain a "proto.make", from which a Makefile is derived.
1985-04-12 11:20:15 +00:00
Apart from commands applying to that specific directory these
files all recognize a few special commands.
When called with one of these they will apply the command to
their own directory and all subdirectories.
The special commands are:
.sp 1
.IP "install" 20
recompile and install all binaries and libraries.
.br
Some Makefiles allow errors to occur in the programs they call.
They ignore such errors and notify the user with the message
"~....... error code n: ignored".
Whenever such a message appears in the output you can ignore it
too.
.IP "cmp"
recompile all binaries and libraries and compare them to the
ones already installed.
.IP pr
print the sources and documentation on the standard output.
.IP opr
make pr | opr
.br
Opr should be an off-line printer daemon.
On some systems it exists under another name e.g. lpr.
The easiest way to call such a spooler is using a shell script
with the name opr that calls lpr.
1991-10-16 13:33:50 +00:00
This script should be placed in /usr/bin or $TARGET_HOME/bin or
1985-04-12 11:20:15 +00:00
one of the directories in your PATH.
.IP clean
remove all files not needed for day-to-day use,
that is binaries not in bin or lib, object files etc.
.LP
Example:
1991-10-16 13:33:50 +00:00
.DS
make install
.DE
given as command in the configuration directory will cause
1985-04-12 11:20:15 +00:00
compilation of all programs in the directory and copying of the results
1991-10-16 13:33:50 +00:00
to the bin and lib.bin directories.
1984-06-29 11:21:50 +00:00
.NH
Testing
.PP
1985-04-12 11:20:15 +00:00
Test sets are available in Pascal, C, Basic and EM assembly.
1984-06-29 11:21:50 +00:00
.IP em 8
1991-10-16 13:33:50 +00:00
The directory $SRC_HOME/emtest contains a few EM test programs.
1984-06-29 11:21:50 +00:00
The EM assembly files in these tests must be transformed into
1985-04-12 11:20:15 +00:00
load files.
1984-06-29 11:21:50 +00:00
These tests use the LIN and NOP instructions to mark the passing of each
test.
The NOP instruction prints the current line number during the
test phase.
Each test notifies its correctness by calling LIN with a unique
number followed by a NOP which prints this line number.
The test finishes normally with 0 as the last number printed
In all other cases a bug showed its
existence.
.IP Pascal
1991-10-16 13:33:50 +00:00
The directory $SRC_HOME/lang/pc/test contains a few Pascal test programs.
1984-06-29 11:21:50 +00:00
All these programs print the number of errors found and a
identification of these errors.
1985-04-12 11:20:15 +00:00
.sp 1
.ti +4
We also tested Pascal with the Validation Suite.
The Validation Suite is a collection of more than 200 Pascal programs,
designed by Brian Wichmann and Arthur Sale to test Pascal compilers.
We are not allowed to distribute it, but you may
request a copy from
.DS
Richard J. Cichelli
A.N.P.A.
1350 Sullivan Trail
P.O. Box 598
Easton, Pennsylvania 18042
USA
.DE
1984-06-29 11:21:50 +00:00
.IP C
1991-10-16 13:33:50 +00:00
The sub-directories in $SRC_HOME/lang/cem/ctest contain C test programs.
1984-06-29 11:21:50 +00:00
The idea behind these tests is:
when you have a program called xx.c, compile it into xx.cem.
Run it with standard output to xx.cem.r, compare this file to
xx.cem.g, a file containing the 'ideal' output.
Any differences will point to implementation differences or
bugs.
Giving the command "run gen" or plain "run" starts this
process.
The differences will be presented on standard output.
The contents of the result files depend on the wordsize,
the xx.cem.g files on the distribution are intended for a
32-bit machine.
1985-04-12 11:20:15 +00:00
.IP Basic
1991-10-16 13:33:50 +00:00
The directory $SRC_HOME/lang/basic/test contains some forty basic programs.
1985-04-12 11:20:15 +00:00
Not all of these programs are correct, some have syntactic errors,
some simply don't work.
The Makefile in that directory attempts to compile and run
these tests.
If it compiles its output is compared to a file with suffix .g
which contains the output to be expected.
The make should be started with its standard input diverted
to /dev/null.
An example of the output of a make is present in the file Out.std.
1984-06-29 11:21:50 +00:00
.NH
Documentation
.PP
Manual pages for Amsterdam Compiler Kit can be copied
to "/usr/man/man?" by the
following commands:
.DS
1991-10-16 13:33:50 +00:00
cd $TARGET_HOME/man
1984-06-29 11:21:50 +00:00
make install
.DE
but do this \fBafter\fR compiling the Kit.
1984-06-29 11:21:50 +00:00
.LP
Several documents are provided:
1985-04-12 11:20:15 +00:00
.TS
l l.
doc/toolkit.doc general overview (CACM article)
doc/em description of the EM machine architecture
1985-04-12 11:20:15 +00:00
doc/ack.doc format of machine description files (lib/*/descr)
1991-10-16 13:33:50 +00:00
doc/ansi_C.doc ANSI C implementation description
1985-04-12 11:20:15 +00:00
doc/basic.doc Basic reference manual
doc/pcref.doc Pascal-frontend reference manual
doc/val.doc results of running the Pascal Validation Suite
doc/crefman.doc C-frontend description
1988-06-27 15:00:08 +00:00
doc/LLgen description of the LL(1) parser generator
1985-04-12 11:20:15 +00:00
doc/peep.doc internal documentation for the peephole optimizer
doc/cg.doc documentation for backend writers and maintainers
doc/regadd.doc addendum to previous document describing register variables
doc/ncg.doc documentation for the newest backends
doc/v7bugs.doc bugs in the V7 system and how to fix them
1988-06-27 15:00:08 +00:00
doc/6500.doc MSC 6500 backend description
doc/i80.doc Intel 8080 backend description
doc/z80.doc Zilog Z80 backend description
doc/m68020.doc Motorola M68000/M68020 backend description
1991-10-16 13:33:50 +00:00
doc/sparc SPARC code expander description
doc/occam Occam-frontend description
doc/ego Global Optimizer description
doc/top Target Optimizer description
1988-06-27 15:00:08 +00:00
doc/int description of the EM interpreter written in C
1989-03-07 16:25:32 +00:00
doc/ceg documentation for code-expander writers and maintainers
1991-10-16 13:33:50 +00:00
doc/lint documentation of LINT
1988-04-26 14:11:05 +00:00
doc/m2ref.doc Modula-2 frontend description
1985-04-12 11:20:15 +00:00
doc/install.doc this document
doc/install.pr this document (formatted)
.TE
1991-10-16 13:33:50 +00:00
.LP
The names in this list without a suffix are in fact a subdirectory.
Use the Makefile to get readable copies.
1984-06-29 11:21:50 +00:00
.LP
Good luck.