install.doc 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224
  1. .\" $Header$
  2. .if n .nr PD 1v
  3. .if n .nr LL 78m
  4. .if n .ll 78m
  5. .TL
  6. Amsterdam Compiler Kit Installation Guide
  7. .AU
  8. Ed Keizer
  9. (revised for 3rd, 4th and 5th distribution by Ceriel Jacobs)
  10. .AI
  11. Vakgroep Informatica
  12. Vrije Universiteit
  13. Amsterdam
  14. .NH
  15. Introduction
  16. .PP
  17. This document
  18. describes the process of installing the Amsterdam Compiler Kit (ACK).
  19. It depends on the combination of hard- and software how
  20. hard it will be to install the Kit.
  21. This description is intended for a Sun-3 or SPARC workstation.
  22. Installation on VAXen running Berkeley
  23. .UX
  24. or Ultrix,
  25. Sun-2 systems and most System V
  26. .UX
  27. systems should be easy.
  28. As of this distribution, installation on PDP-11's or other
  29. systems with a small address space is no longer supported.
  30. See section 8 for installation on other systems.
  31. .NH
  32. The ACK installation process
  33. .PP
  34. In the ACK installation process, three directory trees are used:
  35. .IP "-"
  36. the ACK source tree. This is the tree on the ACK distribution medium.
  37. For the rest of this document, we will refer to this directory
  38. as $SRC_HOME;
  39. .IP "-"
  40. a configuration tree. This tree is built by the installation process and
  41. is used to do compilations in. Its structure reflects that of the source tree,
  42. but this tree will mostly contain Makefiles and relocatable objects.
  43. For the rest of this document, we will refer to this directory
  44. as $CONFIG;
  45. .IP "-"
  46. an ACK users tree. This tree is also built by the installation process.
  47. For the rest of this document, we will refer to this directory
  48. as $TARGET_HOME;
  49. .LP
  50. After installation,
  51. the directories in $TARGET_HOME contain the following information:
  52. .if n .sp 1
  53. .if n .nr PD 0
  54. .IP "bin" 14
  55. the few utilities that knot things together.
  56. See the section about "Commands".
  57. .IP "lib"
  58. root of a tree containing almost all libraries used by
  59. commands.
  60. Files specific to a certain machine are collected in one subtree
  61. per machine. E.g. "lib/pdp", "lib/z8000".
  62. The names used here are the same names as used for subtrees
  63. of "$SRC_HOME/mach".
  64. .IP "lib/descr"
  65. command descriptor files used by the program ack.
  66. .IP "lib/LLgen"
  67. files used by the LL(1) parser generator.
  68. .IP "lib/flex"
  69. files used by the lexical analyzer generator Flex.
  70. .IP "lib/m2"
  71. definition modules for Modula-2.
  72. .IP "lib.bin"
  73. root of a tree containing almost all binaries used by
  74. commands.
  75. All programs specific to a certain machine are collected in one subtree
  76. per machine. E.g. "lib.bin/pdp", "lib.bin/z8000".
  77. The names used here are the same names as used for subtrees
  78. of "$SRC_HOME/mach".
  79. .IP "lib.bin/ego"
  80. files used by the global optimizer.
  81. .IP "lib.bin/lint"
  82. binaries for the lint passes and lint libraries.
  83. .IP "lib.bin/ceg"
  84. files used by the code-expander-generator.
  85. .IP "etc"
  86. contains the file "ip_spec.t" needed for EM interpreters and EM documentation.
  87. .IP "config"
  88. contains two include files:
  89. .TS
  90. l l.
  91. em_path.h path names used by \fIack\fP, intended for all utilities
  92. local.h various definitions for local versions
  93. .TE
  94. These include files are specific for the current machine, so they
  95. are in a separate directory.
  96. .IP "include/_tail_cc"
  97. .br
  98. include files needed by modules
  99. in the C library from lang/cem/libcc.
  100. .IP "include/tail_ac"
  101. .br
  102. include files for ANSI C.
  103. .IP "include/occam"
  104. include files for occam.
  105. .IP "include/_tail_mon"
  106. .br
  107. more or less system independent include files needed by modules
  108. in the library lang/cem/libcc/mon.
  109. .IP "h"
  110. the #include files for:
  111. .TS
  112. l l.
  113. arch.h definition of the ACK archive format
  114. as_spec.h used by EM assembler and interpreters
  115. bc_io.h used by the Basic run-time system
  116. bc_string.h used by the Basic run-time system
  117. cg_pattern.h used by the backend program "cg" and its bootstrap
  118. cgg_cg.h used by the backend program "ncg" and its bootstrap
  119. em_abs.h contains trap numbers and address for lin and fil
  120. em_ego.h definition of names for some global optimizer
  121. messages
  122. em_flag.h definition of bits in array em_flag in
  123. $TARGET_HOME/lib.bin/em_data.a. Describes parameters
  124. effect on flow of instructions
  125. em_mes.h definition of names for mes pseudo numbers
  126. em_mnem.h instruction => compact mapping
  127. em_pseu.h pseudo instruction => compact mapping
  128. em_ptyp.h useful for compact code reading/writing,
  129. defines classes of parameters
  130. em_reg.h definition of mnemonics indicating register type
  131. em_spec.h definition of constants used in compact code
  132. ip_spec.h used by programs that read e.out files
  133. m2_traps.h used by the Modula-2 run-time system
  134. ocm_chan.h used by the occam run-time system
  135. ocm_parco.h used by the occam run-time system
  136. ocm_proc.h used by the occam run-time system
  137. out.h defines the ACK a.out format
  138. pc_err.h definitions of error numbers in Pascal
  139. pc_file.h macro's used in file handling in Pascal
  140. pc_math.h used by the Pascal runtime system
  141. ranlib.h defines symbol table format for archives
  142. stb.h defines debugger symbol table types
  143. .TE
  144. .IP "modules"
  145. root of a tree containing modules for compiler writers.
  146. .IP "modules/man"
  147. manual pages for all modules.
  148. .IP "modules/lib"
  149. contains module objects.
  150. .IP "modules/h"
  151. include files for some of the modules.
  152. .IP "modules/pkg"
  153. include files for some of the modules.
  154. .IP "doc"
  155. this directory contains the unformatted documents for the Kit.
  156. A list of the available documents can be found in the last section.
  157. These documents must be processed by [nt]roff.
  158. .IP "man"
  159. man files for various utilities.
  160. .if n .nr PD 1v
  161. .LP
  162. When installing ACK on several types of machines with a shared file system,
  163. it may be useful to know that the "doc", "etc", "h",
  164. "include", "lib" and "man" sub-directories do not depend on this
  165. particular installation. They do not contain binaries or path-dependent
  166. information. These directories can therefore be shared between the
  167. ACK installations. This can be accomplished by creating the tree and
  168. suitable symbolic links before starting the installation process.
  169. .LP
  170. For instance, let us say there is a file-system that is accessible from
  171. the different machines as "/usr/share/local", and the ACK binary tree
  172. must be installed in "/usr/local/ack". In this case, proceed as follows:
  173. .IP \-
  174. create a directory "/usr/share/local/ack", with subdirectories
  175. "doc", "etc", "h", "include", "lib" and "man".
  176. .IP \-
  177. create a directory "/usr/local/ack" and
  178. then create symbolic links "doc" to "/usr/share/local/ack/doc", etc.
  179. .LP
  180. If this is done on all machines on which ACK will be installed, the
  181. machine-independent part only has to be installed once, preferably
  182. on the fastest processor (it takes a long time to install all libraries).
  183. .LP
  184. The directories in the source tree contain the following information:
  185. .if n .sp 1
  186. .if n .nr PD 0
  187. .IP "bin" 14
  188. source of some shell-scripts.
  189. .IP "lib"
  190. mostly description files for the "ack" program.
  191. .IP "etc"
  192. the main description of EM sits here.
  193. Files (e.g. em_table) describing
  194. the opcodes and pseudos in use,
  195. the operands allowed, effect in stack etc. etc.
  196. .IP "mach"
  197. just there to group the directories with all sources for each machine.
  198. The section about "Machines" of this manual indicates which subdirectories
  199. are used for which systems.
  200. .br
  201. These directories have subdirectories named:
  202. .in +3n
  203. .TS
  204. l l.
  205. cg the backend (*.m => *.s)
  206. ncg the new backend (*.m => *.s)
  207. as the assembler (*.s => *.o) or
  208. assembler/linker (*.s + libraries => a.out)
  209. cv conversion programs for a.out files
  210. dl down-load programs
  211. top the target optimizer
  212. int source for an interpreter
  213. libbc to create Basic run-time system and libraries
  214. libcc to create C run-time system and libraries
  215. libcc.ansi to create ANSI C run-time system and libraries
  216. libpc to create Pascal run-time system and libraries
  217. libf77 to create Fortran run-time system and libraries
  218. libm2 to create Modula-2 run-time system and libraries
  219. liboc to create occam run-time system and libraries
  220. libem EM runtime system, only depending on CPU type
  221. libend library defining end, edata, etext
  222. libfp to create floating point library
  223. libdb to create debugger support library
  224. libsys system-dependent EM library
  225. libce fast cc-compatible C compiler library support
  226. ce code expander (fast back-end)
  227. test various tests
  228. .TE
  229. .in -3n
  230. Actually, some of these directories will only appear in the configuration tree.
  231. .br
  232. The directory proto contains files used by most machines,
  233. like machine-independent sources and Makefiles.
  234. .in +3n
  235. .TS
  236. l l.
  237. mach/proto/cg current backend sources
  238. mach/proto/ncg new backend sources
  239. mach/proto/as assembler sources
  240. mach/proto/top target optimizer sources
  241. mach/proto/fp floating point package sources
  242. mach/proto/libg makefiles for compiling libraries
  243. mach/proto/grind machine-independent debugger support
  244. .TE
  245. .IP "emtest"
  246. contains prototype of em test set.
  247. .IP "lang"
  248. just there to group the directories for all front-ends.
  249. .IP "lang/pc"
  250. the Pascal front-end.
  251. .IP "lang/pc/libpc"
  252. .br
  253. source of Pascal run-time system (in EM or C).
  254. .IP "lang/pc/test"
  255. some test programs written in Pascal.
  256. .IP "lang/pc/comp"
  257. the Pascal compiler proper.
  258. .IP "lang/cem"
  259. the C front-end.
  260. .IP "lang/cem/libcc"
  261. .br
  262. directories with sources of C runtime system, libraries (in EM or C).
  263. .IP "lang/cem/libcc/gen"
  264. .br
  265. sources for routines in chapter III of
  266. .UX
  267. programmers manual,
  268. excluding stdio.
  269. .IP "lang/cem/libcc/stdio"
  270. .br
  271. stdio sources.
  272. .IP "lang/cem/libcc/math"
  273. .br
  274. sources for mathematical routines, normally available with the
  275. \fB-lm\fP option to \fIcc\fP.
  276. .IP "lang/cem/libcc/mon"
  277. .br
  278. sources for routines in chapter II, mostly written in EM.
  279. .IP "lang/cem/cemcom"
  280. .br
  281. the compiler proper.
  282. .IP "lang/cem/cemcom.ansi"
  283. .br
  284. the ANSI C compiler proper.
  285. .IP "lang/cem/cpp.ansi"
  286. .br
  287. the ANSI C preprocessor.
  288. .IP "lang/cem/libcc.ansi"
  289. .br
  290. the ANSI C library sources.
  291. .IP "lang/cem/ctest"
  292. .br
  293. the C test set.
  294. .IP "lang/cem/ctest/cterr"
  295. .br
  296. programs developed for pinpointing previous errors.
  297. .IP "lang/cem/ctest/ct*"
  298. .br
  299. the test programs.
  300. .IP "lang/cem/lint"
  301. a C program checker.
  302. .IP "lang/cem/lint/lpass1"
  303. .br
  304. the first pass of lint.
  305. .IP "lang/cem/lint/lpass1.ansi"
  306. .br
  307. the first pass of lint, this time for ANSI C.
  308. .IP "lang/cem/lint/lpass2"
  309. .br
  310. the second pass of lint, shared between ANSI C and "old-fashioned" C.
  311. .IP "lang/cem/lint/llib"
  312. .br
  313. programs for producing lint libraries.
  314. .IP "lang/basic"
  315. the Basic front-end.
  316. .IP "lang/basic/src"
  317. .br
  318. the compiler proper.
  319. .IP "lang/basic/lib"
  320. .br
  321. the Basic run-time library source.
  322. .IP "lang/basic/test"
  323. .br
  324. various Basic programs.
  325. .IP "lang/occam"
  326. the occam front-end.
  327. .IP "lang/occam/comp"
  328. .br
  329. the compiler proper.
  330. .IP "lang/occam/lib"
  331. .br
  332. source of occam run-time system (in EM or C).
  333. .IP "lang/occam/test"
  334. .br
  335. some occam programs.
  336. .IP "lang/m2"
  337. the Modula-2 front-end.
  338. .IP "lang/m2/comp"
  339. the compiler proper.
  340. .IP "lang/m2/libm2"
  341. source of Modula-2 run-time system (in EM, C and Modula-2).
  342. .IP "lang/m2/m2mm"
  343. the Modula-2 makefile generator.
  344. .IP "lang/m2/test"
  345. some Modula-2 example programs.
  346. .IP "lang/fortran"
  347. the Fortran front-end (translates Fortran into C). This compiler is not
  348. a part of ACK, but is included because it adds another language.
  349. The Fortran system carries the following copyright notice:
  350. .IP ""
  351. .nf
  352. /**************************************************************
  353. Copyright 1990, 1991 by AT&T Bell Laboratories and Bellcore.
  354. Permission to use, copy, modify, and distribute this software
  355. and its documentation for any purpose and without fee is hereby
  356. granted, provided that the above copyright notice appear in all
  357. copies and that both that the copyright notice and this
  358. permission notice and warranty disclaimer appear in supporting
  359. documentation, and that the names of AT&T Bell Laboratories or
  360. Bellcore or any of their entities not be used in advertising or
  361. publicity pertaining to distribution of the software without
  362. specific, written prior permission.
  363. AT&T and Bellcore disclaim all warranties with regard to this
  364. software, including all implied warranties of merchantability
  365. and fitness. In no event shall AT&T or Bellcore be liable for
  366. any special, indirect or consequential damages or any damages
  367. whatsoever resulting from loss of use, data or profits, whether
  368. in an action of contract, negligence or other tortious action,
  369. arising out of or in connection with the use or performance of
  370. this software.
  371. **************************************************************/
  372. .fi
  373. .IP "lang/fortran/comp"
  374. .br
  375. the compiler proper.
  376. .IP "lang/fortran/lib"
  377. .br
  378. source of Fortran runtime system and libraries.
  379. .IP "fast"
  380. contains sub-directories for installing the fast ACK compatible compilers.
  381. .IP "fast/driver"
  382. .br
  383. contains the sources of the fast ACK compatible compiler drivers.
  384. .IP "fcc"
  385. contains the fast cc-compatible C compiler for SUN-3 and VAX.
  386. .IP "util"
  387. contains directories with sources for various utilities.
  388. .IP "util/ack"
  389. the program used for translation with the Kit.
  390. .IP "util/opt"
  391. the EM peephole optimizer (*.k => *.m).
  392. .IP "util/ego"
  393. the global optimizer.
  394. .IP "util/topgen"
  395. the target optimizer generator.
  396. .IP "util/misc"
  397. decode (*.[km] => *.e) + encode (*.e => *.k).
  398. .IP "util/data"
  399. the C-code for $TARGET_HOME/lib.bin/em_data.a.
  400. These sources are created by the Makefile in `etc`.
  401. .IP "util/ass"
  402. the EM assembler (*.[km] + libraries => e.out).
  403. .IP "util/arch"
  404. the archivers to be used for all EM utilities.
  405. .IP "util/cgg"
  406. a program needed for compiling backends.
  407. .IP "util/ncgg"
  408. a program needed for compiling the newest backends.
  409. .IP "util/cpp"
  410. the C preprocessor.
  411. .IP "util/shf"
  412. various shell files.
  413. .IP "util/LLgen"
  414. the extended LL(1) parser generator.
  415. .IP "util/amisc"
  416. contains some programs handling ACK a.out format, such as anm, asize.
  417. .IP "util/cmisc"
  418. contains some programs to help in resolving name conflicts, and
  419. a dependency generator for makefiles.
  420. .IP "util/led"
  421. the ACK link-editor, reading ACK relocatable a.out format, and writing
  422. ACK a.out format.
  423. .IP "util/int"
  424. an EM interpreter, written in C. Very useful for checking out software,
  425. but slow.
  426. .IP "util/ceg"
  427. code expander generator.
  428. .IP "util/grind"
  429. a symbolic debugger.
  430. .IP "util/byacc"
  431. this is Berkeley yacc, in the public domain.
  432. .IP "util/flex"
  433. this is a replacement for lex. It carries the following copyright notice:
  434. .IP ""
  435. .nf
  436. Copyright (c) 1990 The Regents of the University of California.
  437. All rights reserved.
  438. This code is derived from software contributed to Berkeley by
  439. Vern Paxson.
  440. The United States Government has rights in this work pursuant
  441. to contract no. DE-AC03-76SF00098 between the United States
  442. Department of Energy and the University of California.
  443. Redistribution and use in source and binary forms are permitted
  444. provided that: (1) source distributions retain this entire
  445. copyright notice and comment, and (2) distributions including
  446. binaries display the following acknowledgement: ``This product
  447. includes software developed by the University of California,
  448. Berkeley and its contributors'' in the documentation or other
  449. materials provided with the distribution and in all advertising
  450. materials mentioning features or use of this software. Neither the
  451. name of the University nor the names of its contributors may be
  452. used to endorse or promote products derived from this software
  453. without specific prior written permission.
  454. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  455. IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  456. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  457. PURPOSE.
  458. .fi
  459. .ne 4
  460. .if n .nr PD 1v
  461. .LP
  462. All path names mentioned in the text of this document are relative to
  463. $SRC_HOME, unless they start with '/' or one of $SRC_HOME,
  464. $TARGET_HOME or $CONFIG.
  465. .NH
  466. Restoring the ACK tree
  467. .PP
  468. The process of installing the Amsterdam Compiler Kit is quite simple.
  469. The first step is to restore the Amsterdam Compiler Kit
  470. distribution tree structure.
  471. Proceed as follows
  472. .IP " \-" 10
  473. Create a directory, for example /usr/share/local/src/ack, on a device
  474. with at least 15 Megabytes left. This directory will be $SRC_HOME.
  475. .IP " \-"
  476. Change to that directory (cd ...).
  477. .IP " \-"
  478. Extract all files from the distribution medium, for instance
  479. magtape:
  480. \fBtar x\fP.
  481. .IP " \-"
  482. Keep a copy of the original distribution to be able to repeat the process
  483. of installation in case of disasters.
  484. This copy is also useful as a reference point for diff-listings.
  485. .NH
  486. Adapting ACK to the local system
  487. .PP
  488. Before compiling the sources in the Kit some installation dependent
  489. actions have to be taken.
  490. Most of these are performed by an interactive shell script in the file
  491. .I $SRC_HOME/first/first.
  492. Calling this script should be done
  493. from another directory, for instance an empty directory which will later
  494. become $CONFIG.
  495. .LP
  496. The actions of the
  497. .I first
  498. script are:
  499. .if n .sp 1
  500. .if n .nr PD 0
  501. .IP \-
  502. Asking for the path names of the ACK source directory ($SRC_HOME), the
  503. configuration directory ($CONFIG), and the ACK users directory ($TARGET_HOME).
  504. About 5M are needed for the configuration tree. The disk space needed
  505. for the ACK users tree depends on which front-ends and back-ends are to be
  506. installed.
  507. For instance, on our SPARC systems
  508. we have installed all languages and 6 back-ends, including the
  509. system-independent part. This amounts to about 16M.
  510. On our SUN-3 systems, we have installed all front-ends and 5 back-ends,
  511. but only the machine-dependent part. The machine-independent directories are
  512. symbolic links to the SPARC ACK users tree.
  513. We also have the fast ACK compilers
  514. installed on the SUN-3's.
  515. The total amount of disk-space used is less than 8M.
  516. .IP \-
  517. Asking for what type of system the binary tree must be produced for
  518. and creating the shell script "ack_sys" in the Kit's bin directory.
  519. Several utilities make use of "ack_sys" to determine the type of
  520. system.
  521. The current choice is between:
  522. .TS
  523. c c c
  524. l l l.
  525. answer system type default machine
  526. vax_bsd4_1a VAX11 + BSD4.1a vax4
  527. vax_bsd4_2 VAX11 + BSD4.2 vax4
  528. vax_sysV_2 VAX11 + System V.2 vax4
  529. i386 Intel 80386 system + Xenix System V i386
  530. sun3 Sun-3 Motorola 68020 workstation sun3
  531. sun2 Sun-2 Motorola 68010 workstation sun2
  532. m68_sysV_0 68000 + Uniplus System V.0 mantra
  533. m68020 Motorola 68020 VME131 + System V/68 R2V2.1 m68020
  534. sparc Sun-4 or SPARC workstation sparc
  535. ANY Neither of the above ???
  536. .TE
  537. For some of these, the installation procedure has not been tested, as
  538. we don't have them.
  539. For others, the installation procedure has only been tested with earlier
  540. distributions, as we don't have those systems anymore.
  541. However, the sun3 and sparc systems are known to behave reasonably.
  542. The Sun systems should run SunOs Release 3.0 or newer.
  543. The i386 choice may also be used for Intel 80386 or 80486 systems
  544. running
  545. .UX
  546. System V Release 4. These systems are also able to run Xenix System V
  547. binaries.
  548. If the target system is not on this list, choose one that comes close.
  549. If none of them come close, use the "ANY" choice.
  550. For ANY, any name can be used,
  551. but the Kit will not be able to compile programs for the target system.
  552. See the section about "compilation
  553. on a different machine".
  554. .IP \-
  555. Setting the default machine for which code is
  556. produced to the local type of system according to the table above.
  557. This in done in the file "$TARGET_HOME/config/local.h".
  558. See also section 9.1.
  559. .IP \-
  560. Asking for things that don't have to be installed.
  561. .IP \-
  562. Producing a shell script called "INSTALL" that will take care of the
  563. ACK installation process.
  564. .NH
  565. Compiling the Kit
  566. .PP
  567. The next step in the installation process is to run the "INSTALL"
  568. shell-script. When using a Bourne-shell, type:
  569. .DS
  570. sh INSTALL > INSTALL.out 2>&1 &
  571. .DE
  572. When using a C-shell, type:
  573. .DS
  574. sh INSTALL >& INSTALL.out &
  575. .DE
  576. This shell-script performs the following steps:
  577. .if n .sp 1
  578. .if n .nr PD 0
  579. .IP \-
  580. Produce a configuration tree ($CONFIG), reflecting the structure of the
  581. source tree.
  582. .IP \-
  583. Produce Makefiles in $CONFIG.
  584. As mentioned before, compilations
  585. will be done in the configuration tree, not in the source tree.
  586. Most configuration directories will have Makefiles
  587. used to compile and install the programs in that
  588. directory.
  589. All programs needed for compilation and/or cross compilation
  590. with the Kit are installed in $TARGET_HOME by these Makefiles.
  591. These Makefiles are produced from corresponding files called
  592. "proto.make" in the source tree. In fact, the "proto.make" files
  593. are almost complete Makefiles, except for some macro definitions that
  594. are collected by the \fIfirst\fP script.
  595. The Makefiles adhere to a standard which is described in the
  596. section 9.
  597. .IP \-
  598. Copy "Action" files to the configuration tree and editing them to
  599. reflect the choices concerning the parts of ACK that have to be
  600. installed. "Action" files are described below.
  601. .IP \-
  602. Copy part of the source tree to the ACK users tree (include files,
  603. manual pages, documentation, et cetera).
  604. .IP \-
  605. Calling the "TakeAction" script.
  606. All these Makefiles do not have to be called separately.
  607. We wrote a shell script calling the make's needed to install
  608. the whole Kit.
  609. This script consists of the file $SRC_HOME/TakeAction
  610. and a few files called Action in some configuration directories.
  611. The Action files describe in a very simple form which actions
  612. have to be performed in which directories.
  613. The default action is to start "make install && make clean".
  614. The output of each make is diverted to a file called "Out"
  615. in the same directory as the make was started in.
  616. If the make was successful (return code 0) the Out file is removed
  617. and the script TakeAction produces a small message indicating
  618. that it succeeded in fulfilling its goal.
  619. If the make was not successful (any other return code) the Out file
  620. is left alone for further examination and the script TakeAction
  621. produces a small message indicating that it failed.
  622. .br
  623. For some programs the scripts already know they can't be
  624. installed on the local type of system.
  625. In that case they produce a message "Sorry, ....." and
  626. happily proceed with further installation commands.
  627. .if n .sp 1
  628. .if n .nr PD 1v
  629. .LP
  630. Installation of the Kit might take anything from a few
  631. hours to more than a day, depending on the speed of the local machine and
  632. what must be installed.
  633. .LP
  634. If the installation succeeded, the Kit is ready to be used.
  635. Read section 6 and the manuals provided
  636. with the Kit (in the $TARGET_HOME/man directory) on how to use it.
  637. .NH 2
  638. Problems
  639. .NH 3
  640. on Unisoft m68000 systems.
  641. .PP
  642. The Unisoft C compiler has a bug which impedes the correct
  643. translation of the peephole optimizer.
  644. For a more detailed description of this phenomenon see
  645. the file "$SRC_HOME/mach/m68k2/Unisoft_bug".
  646. (This observation was made in 1985 or so, so it is probably
  647. no longer true).
  648. .NH 3
  649. with backends
  650. .PP
  651. The backends for the PDP11, VAX, Motorola 68000 and 68020,
  652. SPARC, Intel 8086, and Intel 80386
  653. have been heavily used by ourselves and are well tested.
  654. The backends for the other machines are known to run our own
  655. test programs,
  656. but might reveal errors when more heavily used.
  657. .NH 2
  658. An example output of TakeAction.
  659. .LP
  660. .sp 1
  661. .nf
  662. System definition -- done
  663. EM definition library -- done
  664. C utilities -- done
  665. Flex lexical analyzer generator -- done
  666. Yacc parser generator -- done
  667. system-call interface module -- done
  668. .
  669. .
  670. .
  671. EM Global optimizer -- done
  672. ACK archiver -- done
  673. Program 'ack' -- done
  674. Bootstrap for backend tables -- done
  675. Bootstrap for newest form of backend tables -- done
  676. .
  677. .
  678. .
  679. C frontend -- done
  680. ANSI-C frontend -- done
  681. ANSI-C preprocessor -- done
  682. ANSI-C header files -- done
  683. Failed for LINT C program checker, see lang/cem/lint/Out
  684. Pascal frontend -- done
  685. Basic frontend -- done
  686. .
  687. .
  688. .
  689. Vax 4-4 assembler -- done
  690. Vax 4-4 backend -- done
  691. Vax target optimizer -- done
  692. ACK a.out to VAX a.out conversion program -- done
  693. Sorry, Vax code expander library can only be made on vax* systems
  694. Vax 4-4 EM library -- done
  695. Vax 4-4 debugger support library -- done
  696. Vax 4-4 etext,edata,end library -- done
  697. Vax 4-4 systemcall interface -- done
  698. .
  699. .
  700. .
  701. .sp 1
  702. .fi
  703. .LP
  704. The lines starting with "Sorry, " indicate that certain programs cannot
  705. be translated on the local machine.
  706. The lines starting with "Failed for" indicate
  707. that certain programs/libraries were expected to,
  708. but did not compile.
  709. In this example, the installation of LINT failed.
  710. To repeat a certain part of the installation, look in
  711. the Action file, which resides in the root of the configuration tree,
  712. for the directory in which that part is to be found.
  713. If that directory contains an Action file issue the command
  714. "sh $CONFIG/bin/TakeAction", otherwise type "make install".
  715. .NH
  716. Commands
  717. .PP
  718. The following commands are available in the $TARGET_HOME/bin directory after compilation
  719. of the Kit:
  720. .IP "\fIack\fP, \fIacc\fP, \fIabc\fP, \fIapc\fP, \fIocm\fP, \fIm2\fP, \fIf2c\fP and their links" 14
  721. .br
  722. the names mentioned here can be used to compile Pascal, C, etc... programs.
  723. Most of the links can be used to generate code for a particular
  724. machine.
  725. See also the section about "Machines".
  726. .IP \fIarch\fP
  727. the archiver used for the EM- and universal assembler/loader.
  728. .IP \fIaal\fP
  729. the archiver used for ACK objects.
  730. .IP \fIem\fP
  731. this program selects a interpreter to execute an e.out file.
  732. Interpreters exist for PDP-11 and Motorola 68000 systems.
  733. .IP \fIeminform\fP
  734. the program to unravel the post-mortem information of
  735. the EM interpretator for the PDP-11.
  736. .IP \fILLgen\fP
  737. the LL(1) parser generator.
  738. .IP \fIack_sys\fP
  739. a shell script producing an identification of the target system.
  740. Used by some utilities to determine what is, and what is
  741. not feasible on the target system.
  742. .IP \fImarch\fP
  743. a shell script used while compiling libraries.
  744. .IP "\fIasize\fP, \fIanm\fP, \fIastrip\fP"
  745. .br
  746. do the same as \fIsize\fP, \fInm\fP and \fIstrip\fP, but for ACK object format.
  747. .IP \fImkdep\fP
  748. a dependency generator for makefiles.
  749. .IP "\fIcid\fP, \fIprid\fP, \fIcclash\fP"
  750. .br
  751. some utilities for handling name clashes in C programs. Some
  752. systems have C-compilers with only 7 or 8 characters significant in
  753. identifiers.
  754. .IP \fItabgen\fP
  755. a utility for generating character tables for C-programs.
  756. .IP \fIint\fP
  757. an EM interpreter. This one is written in C, and is very useful for checking
  758. out programs.
  759. .IP \fIgrind\fP
  760. a source level debugger for C, ANSI-C, Modula-2 and Pascal.
  761. .IP "\fIafcc\fP, \fIafm2\fP, \fIafpc\fP"
  762. .br
  763. these are ACK-compatible fast C, Modula-2 and Pascal compilers,
  764. available for M68020, VAX and Intel 80386 systems. They compile very fast,
  765. but produce slow code.
  766. .IP \fIfcc\fP
  767. this is a cc-compatible fast C compiler, available on SUN-3 and VAX
  768. systems. It compiles very fast, but produces slow code.
  769. .LP
  770. We currently make the Kit available to our users by telling
  771. them that they should include the $TARGET_HOME/bin directory in
  772. their PATH shell variable.
  773. The programs will still work when moved to a different
  774. directory or linked to.
  775. Copying should preferably be done with tar, since links are
  776. heavily used.
  777. Renaming of the programs linked to \fIack\fP will not always
  778. produce the desired result.
  779. This program uses its call name as an argument.
  780. Any call name not being \fIcc\fP, \fIacc\fP, \fIabc\fP, \fIpc\fP, \fIf2c\fP,
  781. \fIocm\fP, \fIm2\fP, or \fIapc\fP will be
  782. interpreted as the name of a 'machine description' and the
  783. program will try to find a description file with that name.
  784. The installation process will only touch the utilities in the $TARGET_HOME/bin
  785. directory, not copies of these utilities.
  786. .NH
  787. Machines
  788. .PP
  789. Below is a table with entries for all commands in
  790. the bin directory used to (cross)compile for a particular machine.
  791. The name in the first column gives the name in the bin directory.
  792. The column headed dir indicates which subdirectories of
  793. $TARGET_HOME/lib and/or $TARGET_HOME/lib.bin are needed for compilation.
  794. The column head i/p contains the integer and pointer size used in units of
  795. bytes.
  796. The subdirectories with the same name in mach contain the sources.
  797. A * in the column headed 'fp' indicates that floating point can be used
  798. for that particular machine. A + in that column indicates that floating
  799. point is available under the '-fp' option. In this case, software
  800. floating point emulation is used.
  801. .TS
  802. l l l l l l l.
  803. command system i/p languages fp dir remarks
  804. pdp PDP/UNIX V7 2/2 C * pdp
  805. Pascal
  806. Basic
  807. occam
  808. Modula-2
  809. vax4 VAX/BSD 4.? 4/4 C * vax4
  810. System V.2 Pascal
  811. Basic
  812. occam
  813. Modula-2
  814. Fortran
  815. sparc Sun-4 4/4 C * sparc
  816. Pascal
  817. Basic
  818. occam
  819. Modula-2
  820. Fortran
  821. m68k2 M68000/ 2/4 C + m68k2
  822. Unisoft Pascal
  823. Basic
  824. occam
  825. Modula-2
  826. m68k4 M68000/ 4/4 C + m68k4
  827. Unisoft Pascal m68k2
  828. Basic
  829. occam
  830. Modula-2
  831. Fortran
  832. pmds M68000/ 2/4 C + pmds Philips Micro
  833. PMDS Pascal m68k2 Devel. System
  834. Basic
  835. occam
  836. Modula-2
  837. pmds4 M68000/ 4/4 C + pmds4 Philips Micro
  838. PMDS Pascal m68k2 Devel. System
  839. Basic m68k4
  840. occam
  841. Modula-2
  842. Fortran
  843. mantra M68000/ 4/4 C + mantra
  844. Sys V.0 Pascal m68k2
  845. Basic m68k4
  846. occam
  847. Modula-2
  848. Fortran
  849. m68020 M68020/ 4/4 C + m68020
  850. Sys V/68 R2V2.1 Pascal
  851. Basic
  852. occam
  853. Modula-2
  854. Fortran
  855. sun3 Sun-3 R4.1 4/4 C + sun3
  856. Pascal m68020
  857. Basic
  858. occam
  859. Modula-2
  860. Fortran
  861. sun2 Sun-2 R3.0 4/4 C + sun2
  862. Pascal m68k4
  863. Basic m68k2
  864. occam
  865. Modula-2
  866. Fortran
  867. i86 IBM PC/IX 2/2 C + i86 IBM PC with PC/IX
  868. Pascal Causes kernel crashes
  869. Basic
  870. occam
  871. Modula-2
  872. xenix3 Microsoft 2/2 C + xenix3 IBM AT with Xenix
  873. Xenix V3 Pascal i86
  874. Basic
  875. occam
  876. Modula-2
  877. i386 SCO Xenix 4/4 C + i386 Intel 80386
  878. System V Pascal Xenix System V
  879. Basic
  880. occam
  881. Modula-2
  882. Fortran
  883. minix Minix PC 2/2 C + minix IBM PC running Minix
  884. Pascal i86
  885. Basic
  886. occam
  887. Modula-2
  888. minixST ST Minix 2/4 C + minixST Atari ST running Minix
  889. Pascal m68k2
  890. Basic
  891. occam
  892. Modula-2
  893. z8000 Zilog 8000 2/2 C z8000 Central Data
  894. Pascal CPU board
  895. Basic Assembler/loader
  896. occam
  897. Modula-2
  898. em22 EM machine 2/2 C * em22 Needs interpreter
  899. Pascal
  900. Basic
  901. occam
  902. Modula-2
  903. em24 EM machine 2/4 C * em24 Needs interpreter
  904. Pascal
  905. Basic
  906. occam
  907. Modula-2
  908. em44 EM machine 4/4 C * em44 Needs interpreter
  909. Pascal
  910. Basic
  911. occam
  912. Modula-2
  913. Fortran
  914. 6500 6502/BBC 2/2 C 6500 Assembler/loader
  915. Pascal
  916. Basic
  917. occam
  918. Modula-2
  919. 6800 Bare 6800 6800 Assembler only
  920. 6805 Bare 6805 6805 Assembler only
  921. 6809 Bare 6809 6809 Assembler only
  922. ns Bare NS16032 4/4 C ns
  923. Pascal
  924. Basic
  925. occam
  926. Modula-2
  927. Fortran
  928. i80 Hermac/z80 2/2 C i80
  929. Pascal
  930. Basic
  931. occam
  932. Modula-2
  933. z80 Hermac/z80 2/2 C z80 \fIi80\fP is faster
  934. Pascal
  935. Basic
  936. occam
  937. Modula-2
  938. s2650 Signetics s2650 Assembler only
  939. arm Acorn 4/4 C * arm Assembler/loader
  940. Archimedes Pascal
  941. Basic
  942. occam
  943. Modula-2
  944. Fortran
  945. .TE
  946. .LP
  947. The commands \fBem22\fP, \fBem24\fP and \fBem44\fP
  948. produce e.out files with EM machine code which must be interpreted.
  949. The Kit contains three interpreters: one running under PDP 11/V7 UNIX,
  950. one for the M68000, running under the PMDS system, Sun systems,
  951. the Mantra system, etc, and a portable one, written in C.
  952. The first one can only interpret 2/2 e.out files,
  953. the second takes 2/4 and 4/4 files,
  954. and the last one takes 2/2, 2/4 and 4/4.
  955. The PDP 11 interpreter executes floating point instructions.
  956. .LP
  957. The program \fB$TARGET_HOME/bin/em\fP calls the appropriate
  958. interpreter.
  959. The interpreters are looked for in the em22, em24 and em44
  960. subdirectories of $TARGET_HOME/lib.bin.
  961. The third interpreter is available as the program \fB$TARGET_HOME/bin/int\fP
  962. in the bin directory.
  963. .NH
  964. Compilation on a different machine.
  965. .PP
  966. The Kit be installed and used as a cross-compiler
  967. for the languages it supports on
  968. .UX
  969. machine.
  970. The presence of most
  971. .UX
  972. utilities is essential for compilation.
  973. A few of the programs certainly needed are: C-compiler, sed,
  974. make, and awk.
  975. .NH 2
  976. Backend
  977. .PP
  978. The existence of a backend with a system call library
  979. for the target system is essential
  980. for producing executable files for that system.
  981. Rewriting the system call library if the one supplied does
  982. not work on the target system is fairly straightforward.
  983. If no backend exists for the target CPU type, a new backend has to be written
  984. which is a major undertaking.
  985. .NH 2
  986. Universal assembler/loader, link editor
  987. .PP
  988. For most machines, the description files in $TARGET_HOME/lib/*/descr use our
  989. universal assembler and our link editor.
  990. The load file produced is not directly
  991. usable in any system known to us,
  992. but has to be converted before it can be put to use.
  993. The \fIcv\fP programs convert our a.out format into
  994. executable files.
  995. The \fIdl\fP programs present for some machines unravel
  996. our a.out files and transmit commands to load memory
  997. to a microprocessor over a serial line.
  998. The file $TARGET_HOME/man/man5/ack.out.5 contains a description of the format of
  999. the universal assembler load file.
  1000. It might be useful to those who wish or need to write their
  1001. own conversion programs.
  1002. Also, a module is included to read and write our a.out format.
  1003. See $TARGET_HOME/man/man3/object.3.
  1004. .NH
  1005. Options
  1006. .NH 2
  1007. Default machine
  1008. .PP
  1009. There is one important option in $TARGET_HOME/config/local.h.
  1010. The utility \fIack\fP uses a default machine name when called
  1011. as \fIacc\fP, \fIcc\fP, \fIabc\fP, \fIapc\fP, \fIpc\fP, \fIocm\fP,
  1012. \fIm2\fP, \fIf2c\fP, or \fIack\fP.
  1013. The machine name used for default is determined by the
  1014. definition of ACKM in $TARGET_HOME/config/local.h.
  1015. The Kit is distributed with "sun3" as the default machine,
  1016. but the shell script "first" in the directory "first" alters this
  1017. to suit the target system.
  1018. There is nothing against using the Kit as a cross-compiler
  1019. and by default produce code that can't run on the local system.
  1020. .NH 2
  1021. Pathnames
  1022. .PP
  1023. Absolute path names are concentrated in "$TARGET_HOME/config/em_path.h".
  1024. Only the utilities \fIack\fP, \fIflex\fP, and \fILLgen\fP use
  1025. absolute path names to access files in the Kit.
  1026. The tree is distributed with /usr/em as the working
  1027. directory.
  1028. The definition of EM_DIR in em_path.h should be altered to
  1029. specify the root
  1030. directory for the Compiler Kit binaries on the local system ($TARGET_HOME).
  1031. This is done automatically by the shell script "first" in the
  1032. directory "first".
  1033. Em_path.h also specifies which directory should be used for
  1034. temporary files.
  1035. Most programs from the Kit do indeed use that directory
  1036. although some remain stubborn and use /tmp or /usr/tmp.
  1037. .LP
  1038. The shape of the tree should not be altered lightly because
  1039. most Makefiles and the
  1040. utility \fIack\fP know the shape of the ACK tree.
  1041. The knowledge of the utility \fIack\fP about the shape of the tree is
  1042. concentrated in the files in the directory $TARGET_HOME/lib/*/descr and $TARGET_HOME/lib/descr/*.
  1043. .NH
  1044. Makefiles
  1045. .PP
  1046. Most directories contain a "proto.make", from which a Makefile is derived.
  1047. Apart from commands applying to that specific directory these
  1048. files all recognize a few special commands.
  1049. When called with one of these they will apply the command to
  1050. their own directory.
  1051. The special commands are:
  1052. .sp 1
  1053. .IP "install" 20
  1054. recompile and install all binaries and libraries.
  1055. .br
  1056. Some Makefiles allow errors to occur in the programs they call.
  1057. They ignore such errors and notify the user with the message
  1058. "~....... error code n: ignored".
  1059. Whenever such a message appears in the output it can be ignored.
  1060. .IP "cmp"
  1061. recompile all binaries and libraries and compare them to the
  1062. ones already installed.
  1063. .IP pr
  1064. print the sources and documentation on the standard output.
  1065. .IP opr
  1066. make pr | opr
  1067. .br
  1068. Opr should be an off-line printer daemon.
  1069. On some systems it exists under another name e.g. lpr.
  1070. The easiest way to call such a spooler is using a shell script
  1071. with the name opr that calls lpr.
  1072. This script should be placed in /usr/bin or $TARGET_HOME/bin or
  1073. one of the directories in the PATH environment variable.
  1074. .IP clean
  1075. remove all files not needed for day-to-day use,
  1076. that is binaries not in $TARGET_HOME/bin or $TARGET_HOME/lib.bin, object files etc.
  1077. .LP
  1078. Example:
  1079. .DS
  1080. make install
  1081. .DE
  1082. given as command in a configuration directory will cause
  1083. compilation of all programs in the directory and copying of the results
  1084. to the $TARGET_HOME/bin and $TARGET_HOME/lib.bin directories.
  1085. .NH
  1086. Testing
  1087. .PP
  1088. Test sets are available in Pascal, C, Basic and EM assembly:
  1089. .IP EM 8
  1090. the directory $SRC_HOME/emtest contains a few EM test programs.
  1091. The EM assembly files in these tests must be transformed into
  1092. load files.
  1093. These tests use the LIN and NOP instructions to mark the passing of each
  1094. test.
  1095. The NOP instruction prints the current line number during the
  1096. test phase.
  1097. Each test notifies its correctness by calling LIN with a unique
  1098. number followed by a NOP which prints this line number.
  1099. The test finishes normally with 0 as the last number printed
  1100. In all other cases a bug showed its
  1101. existence.
  1102. .IP Pascal
  1103. the directory $SRC_HOME/lang/pc/test contains a few Pascal test programs.
  1104. All these programs print the number of errors found and a
  1105. identification of these errors.
  1106. .sp 1
  1107. .ti +4
  1108. We also tested Pascal with the Validation Suite.
  1109. The Validation Suite is a collection of more than 200 Pascal programs,
  1110. designed by Brian Wichmann and Arthur Sale to test Pascal compilers.
  1111. We are not allowed to distribute it, but a copy may
  1112. be requested from
  1113. .DS
  1114. Richard J. Cichelli
  1115. A.N.P.A.
  1116. 1350 Sullivan Trail
  1117. P.O. Box 598
  1118. Easton, Pennsylvania 18042
  1119. USA
  1120. .DE
  1121. .IP C
  1122. the sub-directories in $SRC_HOME/lang/cem/ctest contain C test programs.
  1123. The idea behind these tests is:
  1124. if there is a program called xx.c, compile it into xx.cem.
  1125. Run it with standard output to xx.cem.r, compare this file to
  1126. xx.cem.g, a file containing the 'ideal' output.
  1127. Any differences will point to implementation differences or
  1128. bugs.
  1129. Giving the command "run gen" or plain "run" starts this
  1130. process.
  1131. The differences will be presented on standard output.
  1132. The contents of the result files depend on the word size,
  1133. the xx.cem.g files on the distribution are intended for a
  1134. 32-bit machine.
  1135. .IP Basic
  1136. the directory $SRC_HOME/lang/basic/test contains some forty Basic programs.
  1137. Not all of these programs are correct, some have syntactic errors,
  1138. some simply don't work.
  1139. The Makefile in that directory attempts to compile and run
  1140. these tests.
  1141. If it compiles its output is compared to a file with suffix .g
  1142. which contains the output to be expected.
  1143. The make should be started with its standard input diverted
  1144. to /dev/null.
  1145. An example of the output of a make is present in the file Out.std.
  1146. .NH
  1147. Documentation
  1148. .PP
  1149. After installationm manual pages for Amsterdam Compiler Kit can be found
  1150. in the $TARGET_HOME/man directory. Also, the following documents are provided
  1151. in the $TARGET_HOME/doc directory:
  1152. .TS
  1153. l l.
  1154. toolkit.doc general overview (CACM article)
  1155. em.doc description of the EM machine architecture
  1156. ack.doc format of machine description files (lib/*/descr)
  1157. ansi_C.doc ANSI C implementation description
  1158. basic.doc Basic reference manual
  1159. pcref.doc Pascal-frontend reference manual
  1160. val.doc results of running the Pascal Validation Suite
  1161. crefman.doc C-frontend description
  1162. LLgen description of the LL(1) parser generator
  1163. peep.doc internal documentation for the peephole optimizer
  1164. cg.doc documentation for backend writers and maintainers
  1165. regadd.doc addendum to previous document describing register variables
  1166. ncg.doc documentation for the newest backends
  1167. v7bugs.doc bugs in the V7 system and how to fix them
  1168. 6500.doc MSC 6500 backend description
  1169. i80.doc Intel 8080 backend description
  1170. z80.doc Zilog Z80 backend description
  1171. m68020.doc Motorola M68000/M68020 backend description
  1172. sparc.doc SPARC code expander description
  1173. occam.doc occam-frontend description
  1174. ego.doc Global Optimizer description
  1175. top.doc Target Optimizer description
  1176. int.doc description of the EM interpreter written in C
  1177. ceg.doc documentation for code-expander writers and maintainers
  1178. lint.doc documentation of LINT
  1179. m2ref.doc Modula-2 frontend description
  1180. install.doc this document
  1181. install.pr this document (formatted for a simple line printer)
  1182. .TE
  1183. .LP
  1184. Use the Makefile to get readable copies.
  1185. .LP
  1186. Good luck.