-*- mode: Text -*-

--------------------------------------------------------------------

C-Reduce 

--------------------------------------------------------------------
Prereqs:

C-Reduce is written in Perl, C++, and C.  To compile and run C-Reduce,
you will need a development environment that supports these languages.
C-Reduce's build system requires GNU Make (*not* BSD Make).

Beyond the basic compile/build tools, C-Reduce depends on a set of
third-party software packages, including LLVM.  On Ubuntu or Mint,
the prerequisites other than LLVM can be installed like this:

  sudo apt-get install indent astyle delta libbenchmark-timer-perl \
    libexporter-lite-perl libfile-which-perl libgetopt-tabular-perl \
    libregexp-common-perl libsys-cpu-perl flex build-essential \
    zlib1g-dev

Otherwise, install these packages either manually or using the package
manager:

astyle: 
  http://astyle.sourceforge.net/

Berkeley delta:
  http://delta.tigris.org/

Flex:
  http://flex.sourceforge.net/

GNU Indent:
  http://www.gnu.org/software/indent/

LLVM/Clang 3.7.0:
  http://llvm.org/releases/download.html#3.7.0
  (No need to compile it: the appropriate "Clang binaries" package is
  all you need.  If you use one of the binary packages, you may need to
  install additional packages that the binary package depends on.  For
  example, the "Clang for x86_64 Ubuntu 14.04" binary package depends on
  "libedit2" and "libtinfo5".  You may need to install these, e.g.:
  "sudo apt-get install libedit-dev libtinfo-dev".)

Perl modules:
  Benchmark::Timer
  Exporter::Lite
  File::Which
  Getopt::Tabular
  Regexp::Common
  Sys::CPU (optional, but recommended)

For example, (perhaps as root):
  cpan -i 'Benchmark::Timer'
  cpan -i 'Exporter::Lite'
  cpan -i 'File::Which'
  cpan -i 'Getopt::Tabular'
  cpan -i 'Regexp::Common'
  cpan -i 'Sys::CPU'

zlib:
  http://www.zlib.net/

--------------------------------------------------------------------
Building and installing C-Reduce:

From either the source directory or a build directory:

  [source-path/]configure [options]
  make
  make install

The `configure' script was generated by GNU Autoconf, and therefore
accepts the usual options for naming the installation directories,
choosing the compilers you want to use, and so on.  `configure --help'
summarizes the command-line options.

If LLVM/Clang is not in your search path, you can tell the `configure'
script where to find LLVM/Clang:

  # Use the LLVM/Clang tree rooted at /opt/llvm
  configure --with-llvm=/opt/llvm

Note that assertions are disabled by default.  To enable assertions:

  configure --enable-trans-assert

The generated Makefiles require GNU Make.  BSD Make will not work.
If you see weird make-time errors, please check that you are using
GNU Make.

--------------------------------------------------------------------
Regarding LLVM versions:

Released versions of C-Reduce, and also our master branch at Github,
need to be compiled against specific released versions of LLVM, as
noted in this file.

Our GitHub repo usually also has a branch called llvm-svn-compatible
that supports building C-Reduce against the current LLVM SVN head.

--------------------------------------------------------------------
