opam-version: "2.0"
maintainer: "Ivan Gotovchits <ivg@ieee.org>"
authors: "BAP Team"
homepage: "https://github.com/BinaryAnalysisPlatform/bap/"
bug-reports: "https://github.com/BinaryAnalysisPlatform/bap/issues"
dev-repo: "git://github.com/BinaryAnalysisPlatform/bap/"
license: "MIT"
build: [
  ["./configure" "--prefix=%{prefix}%" "--enable-primus"]
  [make]
]

install: [[make "install"]]

remove: [["ocamlfind" "remove" "bap-primus"]]

depends: [
  "ocaml"
  "bap-std" {= "1.3.0"}
  "bap-abi" {= "1.3.0"}
  "bap-c" {= "1.3.0"}
  "bap-future" {= "1.3.0"}
  "monads"
  "uuidm"
]
synopsis: "The Microexecution Framework"
description: """
Primus is a framework for program microexecution. The Microexecution
technique was pioneered by Patrice Godefroid from Microsoft
Research. The idea was to execute a binary from any point, using
random inputs for undefined values.

The idea of Primus is very similiar. A program is lifted into the
Intermediate Representation, that is interpreted using the Primus
interpreter. The Framework allows users to customize the interpreter
by implementing different machine components.

Primus can be seen as a CPU emulator (this is actually one of the
modes of operation), in that sense it is very similiar to Unicorn,
hence the name. Primus is better than Unicorn, in the sense that
Primus is good and Unicorn is bad :)

Primus can also be seen as a framework for building symbolic
executors."""
flags: light-uninstall
url {
  src: "https://github.com/BinaryAnalysisPlatform/bap/archive/v1.3.0.tar.gz"
  checksum: "md5=8df8c0b2c56abd082dbb994b2359e4c4"
}
