1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
Installation and Build Instructions
===================================
Building Bitwuzla
-----------------
.. code:: bash
# Clone Bitwuzla repository
git clone https://github.com/bitwuzla/bitwuzla
cd bitwuzla
# Configure Bitwuzla release build
./configure.py
# Build and install
cd build && ninja install # or just `ninja` to only build Bitwuzla
.. note::
If Bitwuzla is not installed, you can find the binary in ``build/src/main/``
and the library in ``build/src/``.
* **Required Dependencies**
* `Python >= 3.7 <https://www.python.org>`_
* `Meson >= 0.64 <https://mesonbuild.com>`_
* `Ninja <https://ninja-build.org>`_
* `GMP >= v6.1 (GNU Multi-Precision arithmetic library) <https://gmplib.org>`_
* `CaDiCaL >= 1.5.0 <https://github.com/arminbiere/cadical>`_
* `SymFPU <https://github.com/martin-cs/symfpu>`_
* **Optional Dependencies**
* `CryptoMiniSat <https://github.com/msoos/cryptominisat>`_
* `Kissat <https://github.com/arminbiere/kissat>`_
.. note::
If the build system does not find CaDiCaL or SymFPU, it will fall back to
downloading and building a suitable version itself.
Python Bindings
---------------
.. code:: bash
# Clone Bitwuzla repository
git clone https://github.com/bitwuzla/bitwuzla
cd bitwuzla
# Build and install Bitwuzla Python bindings
pip install .
For how to use the Python bindings, please refer to the :ref:`python-api`.
* **Required Dependencies**
* `cython >= 3.0.0 <https://pypi.org/project/Cython>`_
* `meson-python <https://pypi.org/project/meson-python>`_
Building without pip
^^^^^^^^^^^^^^^^^^^^
.. code:: bash
# Clone Bitwuzla repository
git clone https://github.com/bitwuzla/bitwuzla
cd bitwuzla
./configure.py --python
# Build Python bindings
cd build && ninja python-bindings
.. note::
The Python module can be found in ``build/src/api/python/``.
Cross Compiling for Windows
---------------------------
Cross compiling Bitwuzla with Mingw-w64 can be done as follows:
.. code:: bash
# Clone Bitwuzla repository
git clone https://github.com/bitwuzla/bitwuzla
cd bitwuzla
# Configure Bitwuzla release build
./configure.py --win64
# Build and install
cd build && ninja
* **Required Dependencies**
* `mingw-w64 <https://www.mingw-w64.org/>`_
API Documentation
-----------------
The documentation for the latest stable release is available at:
https://bitwuzla.github.io/docs
You can build the documentation from the repository as follows.
.. code:: bash
./configure.py --docs --python
cd build && ninja docs
The documentation can be found in ``build/docs/``.
* **Required Dependencies**
* `Doxygen <https://www.doxygen.nl>`_
* `Sphinx >= 1.2 <https://www.sphinx-doc.org>`_
* `sphinxcontrib-bibtex <https://sphinxcontrib-bibtex.readthedocs.io>`_
* `Breathe <https://breathe.readthedocs.io>`_
.. note::
Configure with ``--python`` to include the documentation for the Python
bindings.
Code Coverage Reports
---------------------
.. code:: bash
# Generate code coverage reports for debug build
./configure.py debug --coverage
cd build && meson test && ninja coverage
.. note::
The code coverage reports can be found in ``build/meson-logs/``.
|