1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 cmake,
6 boost,
7 tbb,
8 gmp,
9 llvm,
10 clang,
11 sqlite,
12 python3,
13 ocamlPackages,
14 mpfr,
15 ppl,
16 doxygen,
17 graphviz,
18}:
19
20stdenv.mkDerivation rec {
21 pname = "ikos";
22 version = "3.5";
23
24 src = fetchFromGitHub {
25 owner = "NASA-SW-VnV";
26 repo = "ikos";
27 rev = "v${version}";
28 hash = "sha256-kqgGD0plTW0N30kD7Y8xOvGODplJbi37Wh6yYAkzNKI=";
29 };
30
31 nativeBuildInputs = [
32 cmake
33 python3.pkgs.setuptools
34 python3.pkgs.wheel
35 python3.pkgs.build
36 python3.pkgs.installer
37 python3.pkgs.wrapPython
38 ];
39
40 buildInputs = [
41 boost
42 tbb
43 gmp
44 clang
45 llvm
46 sqlite
47 python3
48 ocamlPackages.apron
49 mpfr
50 ppl
51 doxygen
52 graphviz
53 ];
54
55 propagatedBuildInputs = [
56 python3.pkgs.pygments
57 ];
58
59 cmakeFlags = [
60 "-DAPRON_ROOT=${ocamlPackages.apron}"
61 "-DINSTALL_PYTHON_VIRTUALENV=off"
62 "-DPYTHON_VENV_EXECUTABLE=${python3}/bin/python"
63 ];
64
65 postBuild = ''
66 make doc
67 ${python3}/bin/python -m build --no-isolation --outdir dist/ --wheel analyzer/python
68 '';
69
70 postInstall = ''
71 ${python3}/bin/python -m installer --prefix "$out" dist/*.whl
72 '';
73
74 postFixup = ''
75 wrapPythonPrograms
76 '';
77
78 meta = with lib; {
79 homepage = "https://github.com/NASA-SW-VnV/ikos";
80 description = "Static analyzer for C/C++ based on the theory of Abstract Interpretation";
81 license = licenses.nasa13;
82 maintainers = with maintainers; [ atnnn ];
83 };
84}