install.doc 39 KB

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