this repo has no description
1opam-version: "2.0"
2available: opam-version >= "2.1.0"
3flags: avoid-version
4synopsis: "Platform dedicated to the analysis of source code written in C"
5description:"""
6Frama-C gathers several analysis techniques in a single collaborative
7framework, based on analyzers (called "plug-ins") that can build upon the
8results computed by other analyzers in the framework.
9Thanks to this approach, Frama-C provides sophisticated tools, including:
10- an analyzer based on abstract interpretation (Eva plug-in);
11- a program proof framework based on weakest precondition calculus (WP plug-in);
12- a program slicer (Slicing plug-in);
13- a tool for verification of temporal (LTL) properties (Aoraï plug-in);
14- a runtime verification tool (E-ACSL plug-in);
15- several tools for code base exploration and dependency analysis
16 (plug-ins From, Impact, Metrics, Occurrence, Scope, etc.).
17These plug-ins communicate between each other via the Frama-C API
18and via ACSL (ANSI/ISO C Specification Language) properties.
19"""
20maintainer: "frama-ci-bot@frama-c.com"
21authors: [
22 "Michele Alberti"
23 "Thibaud Antignac"
24 "Gergö Barany"
25 "Patrick Baudin"
26 "Thibaut Benjamin"
27 "Allan Blanchard"
28 "Lionel Blatter"
29 "François Bobot"
30 "Richard Bonichon"
31 "Quentin Bouillaguet"
32 "David Bühler"
33 "Zakaria Chihani"
34 "Loïc Correnson"
35 "Julien Crétin"
36 "Pascal Cuoq"
37 "Zaynah Dargaye"
38 "Basile Desloges"
39 "Jean-Christophe Filliâtre"
40 "Philippe Herrmann"
41 "Maxime Jacquemin"
42 "Florent Kirchner"
43 "Alexander Kogtenkov"
44 "Tristan Le Gall"
45 "Jean-Christophe Léchenet"
46 "Matthieu Lemerre"
47 "Dara Ly"
48 "David Maison"
49 "Claude Marché"
50 "André Maroneze"
51 "Thibault Martin"
52 "Fonenantsoa Maurica"
53 "Melody Méaulle"
54 "Benjamin Monate"
55 "Yannick Moy"
56 "Pierre Nigron"
57 "Anne Pacalet"
58 "Valentin Perrelle"
59 "Guillaume Petiot"
60 "Dario Pinto"
61 "Virgile Prevosto"
62 "Armand Puccetti"
63 "Félix Ridoux"
64 "Virgile Robles"
65 "Jan Rochel"
66 "Muriel Roger"
67 "Julien Signoles"
68 "Nicolas Stouls"
69 "Kostyantyn Vorobyov"
70 "Boris Yakobowski"
71]
72homepage: "https://frama-c.com/"
73license: "LGPL-2.1-only"
74dev-repo: "git+https://git.frama-c.com/pub/frama-c.git"
75doc: "http://frama-c.com/download/user-manual-28.0-Nickel.pdf"
76bug-reports: "https://git.frama-c.com/pub/frama-c/issues"
77tags: [
78 "deductive"
79 "program verification"
80 "formal specification"
81 "automated theorem prover"
82 "interactive theorem prover"
83 "C"
84 "plugins"
85 "abstract interpretation"
86 "slicing"
87 "weakest precondition"
88 "ACSL"
89 "dataflow analysis"
90 "runtime verification"
91]
92
93build: [
94 ["bash" "dev/disable-plugins.sh" "e-acsl"] { os-family = "windows" }
95 ["bash" "dev/disable-plugins.sh" "gui"] { os = "macos" }
96 ["dune" "build" "-j%{jobs}%" "-p" name "--promote-install-files=false"
97 "@install"
98 "@doc" { with-doc }
99 ]
100]
101
102install: [
103 [make
104 "RELEASE=yes" "PREFIX=%{prefix}%" "MANDIR=%{man}%"
105 "DOCDIR=%{doc}%" { with-doc }
106 "install"
107 ]
108]
109
110remove: [
111 [make "PREFIX=%{prefix}%" "-f" "ivette/Makefile.installation" "uninstall"]
112]
113
114run-test: [
115 ["dune" "exec" "--" "frama-c-ptests" "tests" "src/plugins/*/tests"
116 ] { arch != "ppc64" & arch != "x86_32" & arch != "arm32" & os != "macos" }
117 ["dune" "build" "-j%{jobs}%" "@ptests_config"
118 ] { arch != "ppc64" & arch != "x86_32" & arch != "arm32" & os != "macos" }
119]
120
121depends: [
122 "dune" { >= "3.7.0" }
123 "dune-configurator"
124 "dune-site" { >= "3.7.0" }
125
126 ( "alt-ergo-free" | "alt-ergo" )
127 "conf-graphviz" { post }
128 "conf-time" { with-test }
129 "menhir" { >= "20181006" & build }
130 "ocaml" {>= "4.13.1" & < "5.3"}
131 "ocamlgraph" { >= "1.8.8" }
132 "ocamlgraph" { with-test & >= "2.1.0" }
133 "odoc" { with-doc }
134 "unionFind" { >= "20220107" }
135 "why3" { >= "1.6.0" & < "1.7~" }
136 "yaml" { >= "3.0.0" }
137 "yojson" {>= "1.6.0" & (>= "2.0.1" | !with-test)}
138 "zarith" { >= "1.5" }
139
140 # PPXs
141 "ppx_deriving"
142 "ppx_deriving_yojson"
143 "ppx_deriving_yaml" { >= "0.2.0" }
144 "ppx_import"
145
146 # GTK3 for non-macos only
147 "lablgtk3" { >= "3.1.0" & os!="macos" }
148 "lablgtk3-sourceview3" { os!="macos" }
149 "conf-gtksourceview3" { os!="macos" }
150]
151
152# Note: do not put particular versions here, if some version is *incompatible*,
153# use the field 'conflicts'.
154depopts: [
155 "apron"
156 "mlmpfr"
157 "zmq"
158]
159
160conflicts: [
161 "cairo2" { < "0.6.2" }
162 "mlmpfr" { < "4.1.0-bugfix2" }
163 "pilat" { <= "1.6" }
164 "result" { < "1.5" }
165]
166
167post-messages: [
168"The Frama-C/WP plug-in requires one or more external prover(s).
169Recommended provers are:
170- Alt-Ergo (https://alt-ergo.ocamlpro.com)
171- CVC4 (https://cvc4.github.io)
172- Z3 (https://github.com/Z3Prover/z3)
173Use 'why3 config detect' to configure new provers.
174 " { success }
175"Ivette is a new GUI for Frama-C, currently in development.
176Run 'ivette' once to finalize installation (requires an internet connection).
177Once finalized, 'ivette' will work offline.
178Finalization also requires Node v16 and Yarn:
179- install NVM (https://github.com/nvm-sh/nvm)
180- run 'nvm use 16'
181- run 'npm install --global yarn'" { success }
182]
183
184url {
185 src: "https://www.frama-c.com/download/frama-c-28.0-beta-Nickel.tar.gz"
186 checksum: "sha256=0c80dae8074fcb3f6a33d7a41faf9939a2a336478a8d2c79e20e2d7bab953735"
187}