···
2
+
available: opam-version >= "2.1.0"
5
+
synopsis: "Platform dedicated to the analysis of source code written in C"
7
+
Frama-C gathers several analysis techniques in a single collaborative
8
+
framework, based on analyzers (called "plug-ins") that can build upon the
9
+
results computed by other analyzers in the framework.
10
+
Thanks to this approach, Frama-C provides sophisticated tools, including:
11
+
- an analyzer based on abstract interpretation (Eva plug-in);
12
+
- a program proof framework based on weakest precondition calculus (WP plug-in);
13
+
- a program slicer (Slicing plug-in);
14
+
- a tool for verification of temporal (LTL) properties (Aoraï plug-in);
15
+
- a runtime verification tool (E-ACSL plug-in);
16
+
- several tools for code base exploration and dependency analysis
17
+
(plug-ins From, Impact, Metrics, Occurrence, Scope, etc.).
18
+
These plug-ins communicate between each other via the Frama-C API
19
+
and via ACSL (ANSI/ISO C Specification Language) properties.
21
+
maintainer: "francois.bobot@cea.fr"
32
+
"Quentin Bouillaguet"
40
+
"Jean-Christophe Filliâtre"
45
+
"Jean-Christophe Léchenet"
52
+
"Fonenantsoa Maurica"
66
+
"Kostyantyn Vorobyov"
69
+
homepage: "https://frama-c.com/"
70
+
license: "LGPL-2.1-only"
71
+
dev-repo: "git+https://git.frama-c.com/pub/frama-c.git"
72
+
doc: "http://frama-c.com/download/user-manual-26.0-beta-Iron.pdf"
73
+
bug-reports: "https://git.frama-c.com/pub/frama-c/issues"
76
+
"program verification"
77
+
"formal specification"
78
+
"automated theorem prover"
79
+
"interactive theorem prover"
82
+
"abstract interpretation"
84
+
"weakest precondition"
87
+
"runtime verification"
91
+
["dune" "build" "-j%{jobs}%" "--release" "--promote-install-files=false" "@install"]
92
+
[make "-C" "doc" "download"] {with-doc}
96
+
[make "PREFIX=%{prefix}%" "MANDIR=%{mandir}%" "install"]
97
+
[make "PREFIX=%{prefix}%" "-C" "doc" "install"] {with-doc}
101
+
[make "PREFIX=%{prefix}%" "-f" "ivette/Makefile.installation" "uninstall"]
105
+
["dune" "exec" "--" "frama-c-ptests" "tests" "src/plugins/*/tests"
106
+
] { arch != "ppc64" & arch != "x86_32" & arch != "arm32" & os != "macos" }
107
+
["dune" "build" "-j%{jobs}%" "@ptests_config"
108
+
] { arch != "ppc64" & arch != "x86_32" & arch != "arm32" & os != "macos" }
112
+
"dune" { (>= "3.2.0" & os!="macos") | (>= "3.5.0" & os="macos") }
113
+
"dune-configurator"
114
+
"dune-private-libs"
117
+
( "alt-ergo-free" | "alt-ergo" )
118
+
"conf-graphviz" { post }
119
+
"conf-time" { with-test }
120
+
"ocaml" { >= "4.11.1" }
121
+
"ocamlfind" # needed beyond build stage, used by -load-module
122
+
"ocamlgraph" { >= "1.8.8" }
123
+
"why3" { >= "1.5.1" }
124
+
"yojson" { >= "1.6.0" & < "2.0.0" }
125
+
"zarith" { >= "1.5" }
129
+
"ppx_deriving_yojson"
132
+
# This is hackish but will hopefully work until we remove GTK from Frama-C
133
+
# GTK 2 for macos only
134
+
"lablgtk" { >= "2.18.8" & os="macos" }
135
+
"conf-gnomecanvas" { os="macos" }
136
+
"conf-gtksourceview" { os="macos" }
137
+
("ocamlgraph" { < "2.0" & os="macos" } | "ocamlgraph_gtk" { os="macos" })
138
+
# GTK3 for non-macos only
139
+
"lablgtk3" { >= "3.1.0" & os!="macos" }
140
+
"lablgtk3-sourceview3" { os!="macos" }
141
+
"conf-gtksourceview3" { os!="macos" }
145
+
# cannot use {build}: Frama-C must be recompiled when Coq and libraries changes.
146
+
# Coq: because .vo would would not be loadable by another version of Coq
147
+
# libraries: because we use dynamic linking
155
+
"cairo2" { < "0.6.2" }
156
+
"mlmpfr" { < "4.1.0-bugfix2" }
157
+
"pilat" { <= "1.6" }
158
+
"result" { < "1.5" }
162
+
"The Frama-C/WP plug-in requires one or more external prover(s).
163
+
Recommended provers are:
164
+
- Alt-Ergo (https://alt-ergo.ocamlpro.com)
165
+
- CVC4 (https://cvc4.github.io)
166
+
- Z3 (https://github.com/Z3Prover/z3)
167
+
Use 'why3 config detect' to configure new provers.
169
+
"Ivette is a new GUI for Frama-C, currently in development.
170
+
Run 'ivette' once to finalize installation (requires an internet connection).
171
+
Once finalized, 'ivette' will work offline.
172
+
Finalization also requires Node v16 and Yarn:
173
+
- install NVM (https://github.com/nvm-sh/nvm)
175
+
- run 'npm install --global yarn'"
179
+
src: "https://www.frama-c.com/download/frama-c-26.0-beta-Iron.tar.gz"
180
+
checksum: "sha256=d4cce05ab46d66a10664fc3432181b9cbb2edc32a759ce280541c719135ca7e7"