The implementation of the Leto algorithm is available in this repository.
Using Vagrant will allow you to build Leto within a VM that contains all of the (outdated) dependencies it needs. This is the easiest way to install Leto.
For the Vagrant install you will need:
- Vagrant
- VirtualBox
To build with Vagrant run vagrant up
.
This will generate a VM based on Debian 8 with all of the required dependencies
for building and running Leto.
Note that this will take a while to complete.
To run Leto under Vagrant, run vagrant up
(if you haven't already from the
build step) followed by vagrant ssh
.
The Leto source and benchmarks will be within the /vagrant
folder.
Note that this folder is shared with the host operating system, so local
changes to Leto will affect the VM and vice versa.
See the "Running Leto" section at the bottom of this file for how to run the
system once you've sshed into the VM.
After you are done, run vagrant halt
or vagrant suspend
to stop the VM (see
the Vagrant documentation for the difference between these two).
If you want to delete everything, run vagrant destroy
.
vagrant up
will bring the VM back up again, rebuilding if necessary (i.e.,
you used vagrant destroy
instead of halt
or suspend
).
Building Leto from scratch is NOT recommended. Getting the proper versions of dependencies is key as there appear to be compatibility issues between new versions of bisonc++ and clang.
Leto depends on the following software. It is known to work with the versions in parenthesis. With the exception of z3, these are all the current versions in the Debian Jessie package repository.
- bisonc++ (4.09.02)
- GNU cpp (4.9.2-10)
- clang (3.5.0-10)
- flexc++ (2.01.00)
- GNU Make (4.0)
- python3 (3.4.2)
- z3 (4.5.0)
To build the system, run make
from the src
directory.
If all goes well you will end up with a binary named leto
in the src
directory.
If the build process complains about not being able to find z3++.h
be sure
you installed the z3 development headers.
You may have to build z3 from source to get these (the Debian package omits
these headers, for example).
See USAGE.mkd
for information on running Leto.