What is this?
=============

C-Mix/II is a *partial evaluator* (or, as it is also called, a
*program specializer*) for the C language. It takes a C program
and (commonly) also some of its input and tries to produce a
faster, but equivalent, C program, utilizing the fact that some
of the program's variables will have known values so that some
of the program's actions can be precomputed.

Interested? Get the manual (in the `doc' package for C-Mix/II) and
read the first few chapters for more information.

Who made it?
============

C-Mix/II is developed at DIKU which is the University of Copenhagen's
department of Computer Science. Parts of the development was funded
by the Danish Natural Sciences Research Council, as part of the DART
project.

The primary distribution site is
  http://www.diku.dk/research-groups/topps/activities/cmix.html

The development team can be reached at the email address cmix@diku.dk.

Bug reports should be sent to cmix-bugreport@diku.dk.

We're setting up an email discussion list for C-Mix/II users. Contact
cmix@diku.dk for subscription information.

What are the use and copying terms?
===================================

C-Mix/II is free; its copyright terms are "GPL-like". See the file
COPYING.cmix for details.

Where does it run?
==================

C-Mix/II should be able to run on most unix-like platforms. A Windows
version running in the Cygwin32 GNU-like environment and a DOS version
in the DJGPP GNU-like environment exist. (In some cases the build
process has trouble finding the network support, and makes a simpler
version of the the annotation viewer that does not interface with a
HTML browser). A MacOS version is not even planned at the moment.

What other software do I need?
==============================

To use a precompiled version of C-Mix/II
   -------------------------------------

  You'll need a C++ compiler which needs to be the *very same*
  C++ compiler that was used to build the precompiled C-Mix/II
  because you're going to link machine-generated C++ code with
  a precompiled C++ library.

  You'll probably want a C compiler so you can run the specialized
  C programs produced by C-Mix. It needs to be "reasonably compatible"
  with the C++ compiler, in the sense that the lay-out of structs,
  the sizes of the basic types, and the ways of doing arithmetic
  must match each other.

  A frames-capable WWW browser is useful for browsing the analysis
  results from C-Mix/II when something does not work as you expected.
  There are other, more tedious ways of getting most if the information
  it can show you, though.

To compile C-Mix/II from the source distribution
   ---------------------------------------------

  You'll need "reasonably compatible" C++ and C compilers, and you
  will probably succed only if they are GCC 2.8.1 (or possibly newer
  versions).

  You'll need GNU `make'. Our makefiles use several GNU extensions.

To modify the C-Mix/II sources
   ---------------------------

  You'll need Flex and Bison. We have not tried ordinary lex and yacc,
  and they probably won't work with the source as it is.

  You'll need Perl for creating some of the autogenerated C++ source
  files, and for creating updated manual pages.

  You'll need Autoconf when modifying `configure' scripts.

How do I install it?
====================

See the file INSTALL for details.
