opam-version: "1.2"
name: "frama-c"
version: "20171101"
maintainer: "francois.bobot@cea.fr"
authors: [
  "Michele Alberti"
  "Thibaud Antignac"
  "Gergö Barany"
  "Patrick Baudin"
  "François Bobot"
  "Richard Bonichon"
  "David Bühler"
  "Loïc Correnson"
  "Julien Crétin"
  "Pascal Cuoq"
  "Zaynah Dargaye"
  "Jean-Christophe Filliâtre"
  "Philippe Herrmann"
  "Florent Kirchner"
  "Tristan Le Gall"
  "Jean-Christophe Léchenet"
  "Matthieu Lemerre"
  "David Maison"
  "Claude Marché"
  "André Maroneze"
  "Benjamin Monate"
  "Yannick Moy"
  "Anne Pacalet"
  "Valentin Perrelle"
  "Guillaume Petiot"
  "Virgile Prevosto"
  "Armand Puccetti"
  "Muriel Roger"
  "Julien Signoles"
  "Kostyantyn Vorobyov"
  "Boris Yakobowski"
]
homepage: "http://frama-c.com/"
license: "GNU Lesser General Public License version 2.1"
dev-repo: "https://github.com/Frama-C/Frama-C-snapshot.git"
doc: ["http://frama-c.com/download/user-manual-Sulfur-20171101.pdf"]
bug-reports: "https://bts.frama-c.com/"
tags: [
  "deductive"
  "program verification"
  "formal specification"
  "automated theorem prover"
  "interactive theorem prover"
  "C"
  "plugins"
  "abstract interpretation"
  "slicing"
  "weakest precondition"
  "ACSL"
  "dataflow analysis"
  "runtime verification"
]

build: [
  ["sh" "-eux" "./run_autoconf_if_needed.sh"] # when used in pinned mode,
                                              # the configure *cannot* yet be
                                              # generated
  ["./configure" "--prefix" prefix
                 "--disable-gui" { !conf-gtksourceview:installed |
                                   !conf-gnomecanvas:installed }
]
  [make "-j%{jobs}%"]
]

install: [
  [make "install"]
]

remove: [
  ["sh" "-eux" "./run_autoconf_if_needed.sh"] # when used in pinned mode,
                                              # the configure *cannot* yet be
                                              # generated
  ["./configure" "--prefix" prefix
                 "--disable-gui" { !conf-gtksourceview:installed |
                                   !conf-gnomecanvas:installed }
]
  [make "uninstall"]
  ["rm" "-rf" doc]
]

build-doc: [
   [make "-C" "doc" "download"]
   [make "-C" "doc" "install"]
]

build-test: [
  [make "-j%{jobs}%" "PTESTS_OPTS=-error-code" "tests"]
]

depends: [
  "ocamlgraph" { >= "1.8.8" & < "1.9~" }
  "ocamlfind"
  "zarith"
  "conf-autoconf"
  "lablgtk" { >= "2.18.2" } #for ocaml >= 4.02.1
  "conf-gtksourceview"
  "conf-gnomecanvas"
  "alt-ergo"
]

depopts: [
  "coq" { build }
  "why3" { build }
  "altgr-ergo" { build }
]

messages: [
   "Why3 can be used by the WP plug-in for running additional automatic solvers" { !why3:installed }
   "Coq can be used with the WP plug-in for proving interactively proof obligations" { !coq:installed }
   "Alt-Ergo Graphical Interface can be used by the WP plug-in" { !altgr-ergo:installed }
]

conflicts: [
  "why3-base" { < "0.86" } #for WP plug-in
  "coq"      { < "8.4.6" } #for WP plug-in
  "lablgtk" { < "2.18.2" } #for ocaml >= 4.02.1
  "frama-c-e-acsl" #avoid mixing old releases of E-ACSL, it is already
                   #distributed with this version of Frama-C
  "frama-c-base"   #avoid mixing old releases of Frama-C, now that only the
                   #'frama-c' package exists
]

available: [ ocaml-version >= "4.02.3" ]
