Staging
v0.8.1
v0.8.1
# Installing BINSEC from sources
The latest public revision of `binsec` is available on GitHub:
https://github.com/binsec/binsec.
The latest public revision of `unisim_archisec` is available on GitHub:
https://github.com/binsec/unisim_archisec.
A convenient way to build `unisim_archisec` together with `binsec` is to
put `unisim_archisec` directory inside the `binsec` directory.
```console
$ git clone https://github.com/binsec/binsec.git
$ cd binsec
$ git clone https://github.com/binsec/unisim_archisec.git
```
#### Dependencies
##### System
- [GMP v6.1 (GNU Multi-Precision arithmetic library)](https://gmplib.org)
- [OCaml >= 4.08](https://github.com/ocaml/ocaml)
##### OCaml
- [dune >= 2.8](https://github.com/ocaml/dune)
- [menhir](https://gitlab.inria.fr/fpottier/menhir)
- [ocamlgraph >= 1.8.5](https://github.com/backtracking/ocamlgraph)
- [zarith >= 1.4](https://github.com/ocaml/Zarith)
- *[unisim_archisec](https://github.com/binsec/unisim_archisec) (optional)*
- [odoc](https://github.com/ocaml/odoc) (*documentation*)
- [qcheck](https://github.com/c-cube/qcheck) (*test*)
- [ounit2](https://github.com/gildor478/ounit) (*test*)
## Build instructions
#### With `make`
[Makefile](Makefile) is a wrapper around `dune` build system.
When `opam` is available, using the command `make` will automatically install the missing dependencies.
---
:information_source: **Local opam switch**
If `opam` is available, using the following command will create a new OCaml switch inside the BINSEC tree.
```bash
OCAML_COMPILER=4.08.0 make switch
```
A local switch makes the installation of dependencies, including ocaml supported version, not impacting the system wide ocaml configuration.
*Doing so, everything installed will be readily available but only inside the BINSEC directory.*
---
Run the following in order to build the `binsec` executable:
```bash
make
```
Then run the following in order to install `binsec` in the current switch:
```bash
make install
```
#### With `dune`
Make sure the above dependencies are available.
Dependencies can still be automatically installed via
[*opam*](https://opam.ocaml.org/doc/Install.html).
```bash
opam pin add -n . # read the package definition
opam depext binsec # install system dependencies
opam install --deps-only binsec # install OCaml dependencies
opam install --deps-only --with-doc binsec # optional, for documentation
opam install --deps-only --with-test binsec # optional, for tests
```
Run the following in order to build `binsec` executable:
```bash
dune build @install
```
`binsec` executable can be found in
`_build/install/default/bin`.
Run the following in order to install `binsec` in the current switch:
```bash
dune install
```
Or use it locally with:
```bash
dune exec -- binsec [...]
```