head	1.2;
access;
symbols
	ansi-20040405-merged:1.1
	premerge-autoconf:1.1
	ansi-20040316-freeze:1.1
	postmerge-20040315-windows:1.1
	premerge-20040315-windows:1.1
	windows-20040315-freeze:1.1
	autoconf-20031203:1.1
	autoconf-20031202:1.1
	phong-branch:1.1.0.12
	photonmap-branch:1.1.0.10
	rel-6-1-DP:1.1
	windows-branch:1.1.0.8
	rel-6-0-2:1.1
	ansi-branch:1.1.0.6
	rel-6-0-1-branch:1.1.0.4
	hartley-6-0-post:1.1
	hartley-6-0-pre:1.1
	rel-6-0-1:1.1
	rel-6-0:1.1
	rel-5-4:1.1
	offsite-5-3-pre:1.1
	rel-5-3:1.1
	rel-5-2:1.1
	rel-5-1-branch:1.1.0.2
	rel-5-1:1.1
	rel-5-0:1.1
	rel-5-0-beta:1.1
	rel-4-5:1.1
	ctj-4-5-post:1.1
	ctj-4-5-pre:1.1
	rel-4-4:1.1
	rel-4-0:1.1
	rel-3-5:1.1
	rel-3-0:1.1
	AUTOCONF:1.1.0.14;
locks; strict;
comment	@# @;


1.2
date	2004.03.18.18.15.14;	author erikg;	state dead;
branches;
next	1.1;

1.1
date	88.06.11.00.55.36;	author mike;	state Original;
branches
	1.1.14.1;
next	;

1.1.14.1
date	2004.03.18.18.10.24;	author erikg;	state dead;
branches;
next	;


desc
@cake
@


1.2
log
@merge of AUTOCONF branch in to HEAD
@
text
@This is the root directory of the cake distribution.

This directory contains the sources for the cake command itself.
Its subdirectories contain sources for commands used by the standard
cakefiles (Aux), diffs for a modified version of the lex driver (Lex),
"standard" cakefiles (Lib), manuals and a paper on cake (Man), and
commands implemented by scripts (Script). Each subdirectory contains
its own README file; you should have a look at them. The rest of this
file is just for the cake source.

Cake was developed on a 3240 under 4.2BSD Unix, with an early version
on a Pyramid 90x (in the Berkeley universe). It has been tested on a
VAX-11/780 under 4.3BSD, on a Sun under SunOS 3.4, and on an ELXSI 6400
under both 4.2BSD and System V. It should also be portable to other
configurations. Its parameters are concentrated in the Makefile and
in conf.h, but you should have a look at Lex/README *before* you run
"make install".

Makefile:

The four make variables you should have a look at and maybe change
are DEST, COPTS, CFLAGS, and LDFLAGS. DEST and CFLAGS should be
self-explanatory. LDFLAGS as it is just sets the max stack size
on the 3240 (a segmented non-paged machine) - on other machines
an empy LDFLAGS should do just fine. The macros you can choose from
for COPTS are:

ATT is for AT&T variants of Unix. Cake has not been tested extensively
for these, but it has been in use for a while now on an Elxsi 6400 
running Enix, a System V port. Defining ATT shortens variable names
to ensure that all are unique in the first six characters (see port.h)
and that no two variable names differ only in case. This effect depends
on the C preprocessor being able to handle long case-sensitive variable
names, even if the compiler/loader can't handle them. Defining ATT makes
cake call System V system calls instead of Berkeley ones, and does a few
other things as well. It may or may not work for System III.

CAKEDEBUG, when defined, enables cake to output debugging information
of various kinds, either on abnormal termination or in response to
debugging options (see main.c). The option -Y requires YYDEBUG
to debug the parser actions.

CAREFUL is a safety feature. It prevents cake from removing user files,
even when its semantics call for it (see the -G option). It moves files
to /tmp instead. This can slow cake down, so if you think it is not
necessary (e.g. because you have used cake long enough to be confident
that it will not delete files it should not delete or because you do
frequent backups) you should not define CAREFUL.

EXTRACHECK is another safety feature - it enables extra internal
consistency checks. These are fairly cheap, so you may keep them
unless you are hurting for CPU time. The one specific instance you
may want to delete is the one in mem.c which checks the aligment
of malloc returns.

If you are concerned about memory usage, you may want to define MEMUSED,
without which cake never free()s space. However, the opportunities for
savings are minimal (really!); and you should also keep in mind that
cake has never been tested with MEMUSED.

conf.h:

Cast should be a type to which all kinds of pointers can be converted
forward and back without loss. On most machines int will do.

SLIB is the directory containing the "standard" systemwide library
(which is in the Lib subdirectory in the distribution), while ULIB
is the suffix (after $HOME) of people's own cake library.

CPP is the command to invoke the C preprocessor.

STATS_FILE is the name of the file in which each invocation of cake
puts statistics. If you don't define STATS_FILE, cake does not keep
any stats. If you do, the stats are reported (nicely formatted)
by Script/{cs,ccs}.

Cake parses and execs normal (non-script) actions by itself if they
don't contain any chars from the macro METACHARS. If they do, cake
calls SYSTEM_CMD, while it calls SCRIPT_CMD for scripts. The arg
to SYSTEM_CMD is the command itself, while the arg to SCRIPT_CMD
is the name of a file (in /tmp) which contains the script. To convert
to the Bourne shell, change csh to sh and delete the -f flags.
For other shells, you will have to find out how to get equivalent
behaviour, but keep in mind that Unix restricts you to zero or one
arguments.

For ATT systems, TIMERES is the resulotion of the times() system call,
but this is used only for stats.

GENESIS is just a time() value used internally for time when there is
none applicable. It doesn't really matter what it is, as long as it
precedes all valid values.

CHASEROOT is also a name used only internally - it too could be anything
as long as it does not conflict with real filenames.

The other macros in conf.h define the (maximum) sizes of various kinds
of things. You need to check only CHARSETSIZE, which should be 512 for
9-bit byte systems. You should enlarge the others when somebody gets
a bounds exceeded message.

Conditions:

The copying conditions for the cake distribution are in the file
COPYING. It is patterned after the copying conditions of GNU,
in particular GNU Emacs. Basically, you can do anything with it
except prevent other people from getting access to it. This
means that you can't sell it. For the reasons for these conditions,
read Stallman's GNU manifesto.

Author:

Zoltan Somogyi

Department of Computer Science
University of Melbourne
Parkville, 3052 Victoria, Australia

UUCP:	{uunet,mcvax,ukc}!munnari.oz!zs
ARPA:	zs%munnari.oz@@uunet.uu.net
CSNET:	zs%munnari.oz@@australia
@


1.1
log
@Original CAKE version from net.sources
@
text
@@


1.1.14.1
log
@merge from head
@
text
@@

