What architecture?
------------------

CPROVER compiles in the following environments:
- Linux
- MacOS X
- Cygwin (using -mno-cygwin)
- Microsoft's Visual Studio 2010

You need to adjust config.inc to reflect the environment. The default is
Linux.


How to compile?
---------------

Follow these instructions:

0) You need a C/C++ compiler, Flex and Bison, and GNU make.

1) You need a SAT solver (in source). We recommend MiniSat2. Many
   Linux distributions now have a package for MiniSat2; e.g.,
   try "apt-get install minisat2" on Debian-like distributions.

   Alternatively, the source of MiniSat2 can be be downloaded at
   the following address:

   http://minisat.se/downloads/minisat-2.2.0.tar.gz

   MiniSat2 relies on zlib, which you have to obtain for your environment.

   Alternatively, you may use zchaff, Booleforce, or
   SMV-SAT (if you work for Cadence).

2) Adjust src/config.inc for the paths to a).

3) Adjust src/solvers/sat/satcheck.h to select which SAT solver to use
   (MiniSat2 with simplifier is the default).

4) Adjust the file src/utils/hash_cont.h

   Depending on the version of your STL, you need to adjust a preprocessor
   command:
   a) Recent versions of Linux run with "STL_HASH_TR1".
   b) Cygwin requires "STL_HASH_GNU".
   c) Visual Studio: please get Visual Studio 10 and use "STL_HASH_TR1".

5) Recent versions of Cygwin have issues with MingW support; specifically,
   the linker fails to find crt2.o. Do the following to fix this before
   starting compilation:

   export LIBRARY_PATH=/usr/lib/mingw

6) Type cd src; make - that should do it.
