summaryrefslogtreecommitdiff
path: root/INSTALL.md
blob: 7a8a387b7be167fceede6d8ab56cb21278d4998b (plain)
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
Installing Sail on Ubuntu
=========================

This note lists the commands needed to get Sail and all dependencies
working on a new Ubuntu install. I recently (2018-02-17) tested these
on Xubuntu 16.04 LTS in a virtual machine, so they should
work. Hopefully this will be useful as a reference.

Basics
------

First we need some basic packages if they're not already installed.
```
sudo apt-get install build-essential git
```

OCaml and sail expect some packages. m4 is for OPAM, libgmp-dev is for
zarith which most of our tools rely on. Sail uses Z3 as a constraint
solver.
```
sudo apt-get install m4 libgmp-dev z3
```

OCaml and OPAM
--------------

Install OPAM. Either directly from [https://opam.ocaml.org] or from
the package manager - both should work, but I used the install script
from the website. This should install OCaml 4.05.

We now need ocamlbuild, zarith, and menhir from OPAM.
```
opam install ocamlbuild
opam install zarith
opam install menhir
```

Ott
---

Before cloning the repositories you may need to set up ssh keys with
github or use https. Create a directory to install the various REMS
tools and cd into it.
```
git clone git@github.com:ott-lang/ott.git
cd ott
make
cd ..
```

Lem
---

If you are using OCaml 4.06, you'll need to run `opam install num` before building lem.

```
git clone git@github.com:rems-project/lem.git
cd lem
make
cd ocaml-lib
make install
cd ../..
```

Linksem
-------

Make sure the LEMLIB environment variable is set correctly before building linksem. This should be the library directory within the checked-out lem directory.

```
git clone git@github.com:rems-project/linksem.git
cd linksem
make && make install
```

Sail
----

Sail depends on lem and ott, so make sure lem and ott executables
exist in $PATH.
```
git clone git@github.com:rems-project/sail.git
cd sail
make
```
To build Sail with interactive support we need two more commands
```
opam install linenoise
make isail
```
To test Sail is installed correctly, execute the following from the
root directory of the sail repository. You may also need to set
$LEM_DIR to the root of the lem repository for the lem tests. Some of
the C backend tests will fail if valgrind isn't installed.
```
export SAIL_DIR=$PWD
test/run_tests.sh
```