summaryrefslogtreecommitdiff
path: root/INSTALL
blob: e62332db642460bb4d83d5f77e2ce7f8e7a80b40 (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
Building on Linux
=================

Tested on a fresh Linux Mint 17.2. Note that we now have official releases for
Linux, so these instructions mostly apply to people interested in looking at
Dafny's sources.

0. Dependencies

    apt install mono-devel g++

1. Create an empty base directory

    mkdir BASE-DIRECTORY
    cd BASE-DIRECTORY

2. Download and build Boogie:

    git clone https://github.com/boogie-org/boogie
    cd boogie
    mozroots --import --sync
    wget https://nuget.org/nuget.exe
    mono ./nuget.exe restore Source/Boogie.sln
    xbuild Source/Boogie.sln
    cd ..

3. Download and build Dafny:

   hg clone https://hg.codeplex.com/dafny
   cd dafny/Source/
   xbuild Dafny.sln

4. Download and unpack z3 (Dafny looks for `z3` in Binaries/z3/bin/)

   cd BASE-DIRECTORY
   wget https://github.com/Z3Prover/z3/releases/download/z3-4.4.0/z3-4.4.0-x64-ubuntu-14.04.zip
   unzip z3-4.4.0-x64-ubuntu-14.04.zip
   mv z3-4.4.0-x64-ubuntu-14.04 dafny/Binaries/z3

5. (Optional) If you plan to use Boogie directly, copy (or symlink) the z3 binary so that Boogie, too, can find it:

   cd BASE-DIRECTORY
   rm -f boogie/Binaries/z3.exe
   cp dafny/Binaries/z3/bin/z3 boogie/Binaries/z3.exe

6. Run Dafny using the `dafny` shell script in the Binaries directory (it calls mono as appropriate)

Editing in Emacs
================

The README at https://github.com/boogie-org/boogie-friends has plenty of
information on how to set-up Emacs to work with Dafny. In short, it boils down
to running [M-x package-install RET boogie-friends RET] and adding the following
to your .emacs:
  (setq flycheck-dafny-executable "BASE-DIRECTORY/dafny/Binaries/dafny")

Do look at the README, though! It's full of useful tips.