summaryrefslogtreecommitdiff
path: root/INSTALL.md
diff options
context:
space:
mode:
Diffstat (limited to 'INSTALL.md')
-rw-r--r--INSTALL.md361
1 files changed, 0 insertions, 361 deletions
diff --git a/INSTALL.md b/INSTALL.md
deleted file mode 100644
index 1a9c03476..000000000
--- a/INSTALL.md
+++ /dev/null
@@ -1,361 +0,0 @@
-cvc5 prerelease version 1.0
-===========================
-
-## Building cvc5
-
- ./configure.sh
- # use --prefix to specify an install prefix (default: /usr/local)
- # use --name=<PATH> for custom build directory
- # use --auto-download to download and build missing, required or
- # enabled, dependencies
- cd <build_dir> # default is ./build
- make # use -jN for parallel build with N threads
- make check # to run default set of tests
- make install # to install into the prefix specified above
-
-All binaries are built into `<build_dir>/bin`, the cvc5 library is built into
-`<build_dir>/lib`.
-
-## Supported Operating Systems
-
-cvc5 can be built on Linux and macOS. Cross-compilation is possible for Arm64
-systems and Windows using Mingw-w64. We recommend a 64-bit operating system.
-
-On macOS, we recommend using Homebrew (https://brew.sh/) to install the
-dependencies. We also have a Homebrew Tap available at
-https://github.com/CVC4/homebrew-cvc4 .
-To build a static binary for macOS, use:
-`./configure.sh --static --no-static-binary`.
-
-### Cross-compiling for Windows
-
-Cross-compiling cvc5 with Mingw-w64 can be done as follows:
-
-```
- ./configure.sh --win64 --static <configure options...>
-
- cd <build_dir> # default is ./build
- make # use -jN for parallel build with N threads
-```
-
-The built binary `cvc5.exe` is located in `<build_dir>/bin` and the cvc5 library
-can be found in `<build_dir>/lib`.
-
-## Build dependencies
-
-cvc5 makes uses of a number of tools and libraries. Some of these are required
-while others are only used with certain configuration options. If
-`--auto-download` is given, cvc5 can automatically download and build most
-libraries that are not already installed on your system. Versions given are
-minimum versions; more recent versions should be compatible.
-
-- [GNU C and C++ (gcc and g++)](https://gcc.gnu.org)
- or [Clang](https://clang.llvm.org) (reasonably recent versions)
-- [CMake >= 3.9](https://cmake.org)
-- [Python 3.x](https://www.python.org)
- + module [toml](https://pypi.org/project/toml/)
-- [GMP v6.1 (GNU Multi-Precision arithmetic library)](https://gmplib.org)
-- [ANTLR 3.4](http://www.antlr3.org/)
-- [Java >= 1.6](https://www.java.com)
-- [SymFPU](https://github.com/martin-cs/symfpu/tree/CVC4)
-
-
-### ANTLR 3.4 parser generator
-
-For most systems, the package manager no longer contains pre-packaged versions
-of ANTLR 3.4. With `--auto-download`, cvc5 will automatically download and build
-ANTLR 3.4.
-
-
-### GMP (GNU Multi-Precision arithmetic library)
-
-GMP is usually available on you distribution and should be used from there. It
-can be downloaded and built automatically. If it does not, or you want to
-cross-compile, or you want to build cvc5 statically but the distribution does
-not ship static libraries, cvc5 builds GMP automatically when `--auto-download`
-is given.
-
-### SymFPU (Support for the Theory of Floating Point Numbers)
-
-[SymFPU](https://github.com/martin-cs/symfpu/tree/CVC4)
-is an implementation of SMT-LIB/IEEE-754 floating-point operations in terms
-of bit-vector operations.
-It is required for supporting the theory of floating-point numbers and
-can be downloaded and built automatically.
-
-## Optional Dependencies
-
-### CaDiCaL (Optional SAT solver)
-
-[CaDiCaL](https://github.com/arminbiere/cadical)
-is a SAT solver that can be used for solving non-incremental bit-vector
-problems with eager bit-blasting. This dependency may improve performance.
-It can be downloaded and built automatically.
-Configure cvc5 with `configure.sh --cadical` to build with this dependency.
-
-### CryptoMiniSat (Optional SAT solver)
-
-[CryptoMinisat](https://github.com/msoos/cryptominisat)
-is a SAT solver that can be used for solving bit-vector problems with eager
-bit-blasting. This dependency may improve performance.
-It can be downloaded and built automatically.
-Configure cvc5 with `configure.sh --cryptominisat` to build with this
-dependency.
-
-### Kissat (Optional SAT solver)
-
-[Kissat](https://github.com/arminbiere/kissat)
-is a SAT solver that can be used for solving bit-vector problems with eager
-bit-blasting. This dependency may improve performance.
-It can be downloaded and built automatically.
-Configure cvc5 with `configure.sh --kissat` to build with this
-dependency.
-
-### LibPoly (Optional polynomial library)
-
-[LibPoly](https://github.com/SRI-CSL/libpoly) is required for CAD-based
-nonlinear reasoning. It can be downloaded and built automatically. Configure
-cvc5 with `configure.sh --poly` to build with this dependency.
-
-### CLN >= v1.3 (Class Library for Numbers)
-
-[CLN](http://www.ginac.de/CLN)
-is an alternative multiprecision arithmetic package that may offer better
-performance and memory footprint than GMP.
-Configure cvc5 with `configure.sh --cln` to build with this dependency.
-
-Note that CLN is covered by the [GNU General Public License, version
-3](https://www.gnu.org/licenses/gpl-3.0.en.html). If you choose to use cvc5 with
-CLN support, you are licensing cvc5 under that same license. (Usually cvc5's
-license is more permissive than GPL, see the file `COPYING` in the cvc5 source
-distribution for details.)
-
-### glpk-cut-log (A fork of the GNU Linear Programming Kit)
-
-[glpk-cut-log](https://github.com/timothy-king/glpk-cut-log/) is a fork of
-[GLPK](http://www.gnu.org/software/glpk/) (the GNU Linear Programming Kit).
-This can be used to speed up certain classes of problems for the arithmetic
-implementation in cvc5. (This is not recommended for most users.)
-
-glpk-cut-log can be installed using the `contrib/get-glpk-cut-log` script.
-Note that the only installation option is manual installation via this script.
-cvc5 is no longer compatible with the main GLPK library.
-Configure cvc5 with `configure.sh --glpk` to build with this dependency.
-
-Note that GLPK and glpk-cut-log are covered by the [GNU General Public License,
-version 3](https://www.gnu.org/licenses/gpl-3.0.en.html). If you choose to use
-cvc5 with GLPK support, you are licensing cvc5 under that same license. (Usually
-cvc5's license is more permissive; see above discussion.)
-
-### ABC library (Improved Bit-Vector Support)
-
-[ABC](http://www.eecs.berkeley.edu/~alanmi/abc/) (A System for Sequential
-Synthesis and Verification) is a library for synthesis and verification of
-logic circuits. This dependency may improve performance of the eager
-bit-vector solver. When enabled, the bit-blasted formula is encoded into
-and-inverter-graphs (AIG) and ABC is used to simplify these AIGs.
-
-ABC can be installed using the `contrib/get-abc` script.
-Configure cvc5 with `configure.sh --abc` to build with this dependency.
-
-### Editline library (Improved Interactive Experience)
-
-The [Editline Library](https://thrysoee.dk/editline/) library is optionally
-used to provide command editing, tab completion, and history functionality at
-the cvc5 prompt (when running in interactive mode). Check your distribution
-for a package named "libedit-dev" or "libedit-devel" or similar.
-
-### Google Test Unit Testing Framework (Unit Tests)
-
-[Google Test](https://github.com/google/googletest) is required to optionally
-run cvc5's unit tests (included with the distribution).
-See [Testing cvc5](#Testing-cvc5) below for more details.
-
-## Language bindings
-
-cvc5 provides a complete and flexible C++ API (see `examples/api` for
-examples). It further provides Java (see `examples/SimpleVC.java` and
-`examples/api/java`) and Python (see `examples/api/python`) API bindings.
-
-Configure cvc5 with `configure.sh --<lang>-bindings` to build with language
-bindings for `<lang>`.
-
-### Dependencies for Language Bindings
-
-* Python
- * [Cython](https://cython.org/)
- * [scikit-build](https://pypi.org/project/scikit-build/)
- * [pytest](https://docs.pytest.org/en/6.2.x/)
-
-If you're interested in helping to develop, maintain, and test a language
-binding, please contact one of the project leaders.
-
-
-## Building the API Documentation
-
-Building the API documentation of cvc5 requires the following dependencies:
-* [Doxygen](https://www.doxygen.nl)
-* [Sphinx](https://www.sphinx-doc.org),
- [sphinx-tabs](https://sphinx-tabs.readthedocs.io/),
- [sphinxcontrib-bibtex](https://sphinxcontrib-bibtex.readthedocs.io)
-* [Breathe](https://breathe.readthedocs.io)
-
-To build the documentation, configure cvc5 with `./configure.sh --docs`.
-Building cvc5 will then include building the API documentation.
-
-The API documentation can then be found at `<build_dir>/docs/sphinx/index.html`.
-
-To only build the documentation, change to the build directory and call
-`make docs`.
-
-To build the documentation for GitHub pages, change to the build directory
-and call `make docs-gh`. The content of directory `<build_dir>/docs/sphinx-gh`
-can then be copied over to GitHub pages.
-
-
-## Building the Examples
-
-See `examples/README.md` for instructions on how to build and run the examples.
-
-## Testing cvc5
-
-We use `ctest` as test infrastructure, for all command-line options of ctest,
-see `ctest -h`. Some useful options are:
-
- ctest -R <regex> # run all tests with names matching <regex>
- ctest -E <regex> # exclude tests with names matching <regex>
- ctest -L <regex> # run all tests with labels matching <regex>
- ctest -LE <regex> # exclude tests with labels matching <regex>
- ctest # run all tests
- ctest -jN # run all tests in parallel with N threads
- ctest --output-on-failure # run all tests and print output of failed tests
-
-We have 4 categories of tests:
-- **examples** in directory `examples`
- (label: **example**)
-- **regression tests** (5 levels) in directory `test/regress`
- (label: **regressN** with N the regression level)
-- **api tests** in directory `test/api`
- (label: **api**)
-- **unit tests** in directory `test/unit`
- (label: **unit**)
-
-### Testing System Tests
-
-The system tests are not built by default.
-
- make apitests # build and run all system tests
- make <api_test> # build test/system/<system_test>.<ext>
- ctest api/<api_test> # run test/system/<system_test>.<ext>
-
-All system test binaries are built into `<build_dir>/bin/test/system`.
-
-We use prefix `api/` + `<api_test>` (for `<api_test>` in `test/api`)
-as test target name.
-
- make ouroborous # build test/api/ouroborous.cpp
- ctest -R ouroborous # run all tests that match '*ouroborous*'
- # > runs api/ouroborous
- ctest -R ouroborous$ # run all tests that match '*ouroborous'
- # > runs api/ouroborous
- ctest -R api/ouroborous$ # run all tests that match '*api/ouroborous'
- # > runs api/ouroborous
-### Testing Unit Tests
-
-The unit tests are not built by default.
-
-Note that cvc5 can only be configured with unit tests in non-static builds with
-assertions enabled.
-
- make units # build and run all unit tests
- make <unit_test> # build test/unit/<subdir>/<unit_test>.<ext>
- ctest unit/<subdir>/<unit_test> # run test/unit/<subdir>/<unit_test>.<ext>
-
-All unit test binaries are built into `<build_dir>/bin/test/unit`.
-
-We use prefix `unit/` + `<subdir>/` + `<unit_test>` (for `<unit_test>` in
-`test/unit/<subdir>`) as test target name.
-
- make map_util_black # build test/unit/base/map_util_black.cpp
- ctest -R map_util_black # run all tests that match '*map_util_black*'
- # > runs unit/base/map_util_black
- ctest -R base/map_util_black$ # run all tests that match '*base/map_util_black'
- # > runs unit/base/map_util_black
- ctest -R unit/base/map_util_black$ # run all tests that match '*unit/base/map_util_black'
- # > runs unit/base/map_util_black
-
-### Testing Regression Tests
-
-We use prefix `regressN/` + `<subdir>/` + `<regress_test>` (for `<regress_test>`
-in level `N` in `test/regress/regressN/<subdir>`) as test target name.
-
- ctest -L regress # run all regression tests
- ctest -L regress0 # run all regression tests in level 0
- ctest -L regress[0-1] # run all regression tests in level 0 and 1
- ctest -R regress # run all regression tests
- ctest -R regress0 # run all regression tests in level 0
- ctest -R regress[0-1] # run all regression tests in level 0 and 1
- ctest -R regress0/bug288b # run all tests that match '*regress0/bug288b*'
- # > runs regress0/bug288b
-### Custom Targets
-
-All custom test targets build and run a preconfigured set of tests.
-
-- `make check [-jN] [ARGS=-jN]`
- The default build-and-test target for cvc5, builds and runs all examples,
- all system and unit tests, and regression tests from levels 0 to 2.
-
-- `make systemtests [-jN] [ARGS=-jN]`
- Build and run all system tests.
-
-- `make units [-jN] [ARGS=-jN]`
- Build and run all unit tests.
-
-- `make regress [-jN] [ARGS=-jN]`
- Build and run regression tests from levels 0 to 2.
-
-- `make runexamples [-jN] [ARGS=-jN]`
- Build and run all examples.
-
-- `make coverage [-jN] [ARGS=-jN]`
- Build and run all tests (system and unit tests, regression tests level 0-4)
- with gcov to determine code coverage.
-
-We use `ctest` as test infrastructure, and by default all test targets
-are configured to **run** in parallel with the maximum number of threads
-available on the system. Override with `ARGS=-jN`.
-
-Use `-jN` for parallel **building** with `N` threads.
-
-
-## Recompiling a specific cvc5 version with different LGPL library versions
-
-To recompile a specific static binary of cvc5 with different versions of the
-linked LGPL libraries perform the following steps:
-
-1. Make sure that you have installed the desired LGPL library versions.
- You can check the versions found by cvc5's build system during the configure
- phase.
-
-2. Determine the commit sha and configuration of the cvc5 binary
-```
-cvc5 --show-config
-```
-3. Download the specific source code version:
-```
-wget https://github.com/CVC4/CVC4/archive/<commit-sha>.tar.gz
-```
-4. Extract the source code
-```
-tar xf <commit-sha>.tar.gz
-```
-5. Change into source code directory
-```
-cd cvc5-<commit-sha>
-```
-6. Configure cvc5 with options listed by `cvc5 --show-config`
-```
-./configure.sh --static <options>
-```
-
-7. Follow remaining steps from [build instructions](#building-cvc5)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback