123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- THE AMSTERDAM COMPILER KIT V6.1pre1
- ===================================
- © 1987-2005 Vrije Universiteit, Amsterdam
- 2016-08-02
- INTRODUCTION
- ============
- The Amsterdam Compiler Kit is a complete compiler toolchain consisting of
- front end compilers for a number of different languages, code generators,
- support libraries, and all the tools necessary to go from source code to
- executable on any of the platforms it supports.
- This is an early prerelease of the apocryphal version 6.1 release. Not a
- lot is supported, the build mechanism needs work, and a lot of things are
- probably broken. However, what's there should be sufficient to get things
- done and to evaluate how the full 6.1 release should work.
- SUPPORT
- =======
- Languages:
- ANSI C, Pascal, Modula 2, Basic. K&R is supported via the ANSI C compiler.
- Platforms:
- pc86 produces bootable floppy disk images for 8086 PCs
- linux386 produces ELF executables for PC Linux systems
- linux68k produces ELF executables for m68020 Linux systems
- cpm produces i80 CP/M .COM files
- rpi produces Raspberry Pi GPU binaries
- INSTALLATION
- ============
- The version 5.0 build mechanism has been completely rewritten. Installation
- ought to be fairly straightforward.
- Requirements:
- - an ANSI C compiler. This defaults to gcc. You can change this by setting
- the CC make variable.
- - flex and yacc.
- - GNU make.
- - Lua 5.1 and the luaposix library (used by the build system).
- - (optionally) ninja; if you've got this, this will be autodetected and give
- you faster builds.
- - about 40MB free in /tmp (or some other temporary directory).
- - about 6MB in the target directory.
- Instructions:
- - edit the Makefile. There's a small section at the top where you can change
- the configuration. Probably the only one you may want to edit is PREFIX,
- which changes where the ACK installs to.
- - Run:
- make
- ...from the command line. This will do the build.
- The make system is fully parallelisable. If you have a multicore system,
- install ninja and it'll use all your cores. If you don't have ninja, you
- can still use make for parallel builds with:
- make MAKEFLAGS='-r -j8' # or however many cores you have
- ...but frankly, I recommend ninja.
- - Run:
- sudo make install
- ...from the command line. This will install the ACK in your PREFIX
- directory (by default, /usr/local).
- The ACK should now be ready to use.
- USAGE
- =====
- Currently I haven't sorted out all the documentation --- it's supplied in the
- distribution, but not all of it gets installed yet --- so here is a quickstart
- guide.
- The main command to use is 'ack'. This invokes the compiler and the linker.
- Some useful options include:
- -m<platform> build for the specified platform
- -o <file> specifies the output file
- -c produce a .o file
- -c.s produce a .s assembly file
- -O enable optimisation (optimisation levels go up to 6)
- -ansi compile ANSI C (when using the C compiler)
- -v be more verbose (repeatable)
- <file> build file
- ack figures out which language to use from the file extension:
- .c C (ANSI or K&R)
- .b Basic
- .mod Modula-2
- .ocm Occam 1
- .p Pascal
- .o object files
- .s assembly files
- .e ACK intermediate code assembly files
- For further information, see the man page (which actually does get
- installed, but is rather out of date).
- There are some (known working) example programs in the 'examples' directory.
- A sample command line is:
- ack -mlinux386 -O examples/paranoia.c
- GOTCHAS
- =======
- There are some things you should be aware of.
- - Look at plat/<PLATFORMNAME>/README for information about the supported
- platforms.
-
- - The library support is fairly limited; for C, it's at roughly the ANSI C
- level, and for the other languages it's similar.
-
- - When compiling languages other than C, the ACK will usually look at the
- first character of the file. If it's a #, then the file will be run through
- the C preprocessor anyway.
- - BSD systems may need to up the number of file descriptors (e.g.
- 'ulimit -n 200') before the ACK will compile.
-
- - The ACK uses its own .o format. You won't be able to mix the ACK's object
- files and another compiler's.
- - The distribution contains *everything*, including the weird, ancient,
- archaic stuff that doesn't work any more and never will, such as the int EM
- interpreter and the assembler-linkers. Only some of it builds. Look for
- build.lua files.
- DISCLAIMER
- ==========
- The ACK is mature, well-tested software, but the environment in which it was
- developed for and tested under is rather different from that available on
- today's machines. There will probably be little in the way of logical bugs,
- but there may be many compilation and API bugs.
- If you wish to use the ACK, *please* join the mailing list. We are interested
- in any reports of success and particularly, failure. If it does fail for you,
- we would love to know why, in as much detail as possible. Bug fixes are even
- more welcome.
- The ACK is licensed under a BSD-like license. Please see the 'Copyright' file
- for the full text.
- You can find the mailing list on the project's web site:
- http://tack.sourceforge.net/
-
- Please enjoy.
- David Given (dtrg on Sourceforge)
- dg@cowlark.com
- 2016-08-02
|