cmsh
currently relies on a Make-based approach to building and supports
parallel make invocations. It respects CXXFLAGS
, CPPFLAGS
, and LDFLAGS
,
but doesn't pass these through to CryptoMiniSat. Additionally, CryptoMiniSat
can be built with DEBUG=1
in the environment to automatically select flags
reasonable for debug builds.
To use an already-built CryptoMiniSat, pass the CMS
environment variable
equal to the path of the build/
directory:
CMS=/path/to/cryptominisat/build make clean all check
The cmsh
Makefile supports the following targets:
- `all` -- equivalent to `cmsh` + `check-native`
- `check` -- execute all tests
- `check-native` -- build native test cases
- `clean` -- clean the build/ folder
- `cms` -- clone and build CryptoMiniSat
- `cmsh` -- build everything for the Python bindings
- `distclean` -- `clean` + removes CryptoMiniSat build artifacts
- `lint` -- runs pylint on `cmsh`
All build artifacts are placed under build/
: this includes a setup.py
for
installing build/cmsh
, build/include
for referencing CryptoMiniSat and
cmsh
headers, and the core cmsh
library in build/cmsh
. Native tests are
placed directly under build/
as executables. Intermediate object files are
hidden under cmsh/.objects
.
To install cmsh for the current user, run:
cd build && pip3 install --user -e .
Remove the --user
flag and invoke with sudo
if you truly wish to install
for all users. This is usually not desired.
We currently don't support packaging cmsh
in distros and wouldn't
recommend it. While possible, it would require the versions of CryptoMiniSat
that are shipped to be updated and to turn on Gaussian Elimination support.