guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

09/10: gnu: Add bap.


From: julien lepiller
Subject: 09/10: gnu: Add bap.
Date: Wed, 27 Sep 2017 15:28:12 -0400 (EDT)

roptat pushed a commit to branch master
in repository guix.

commit cd1562ef8ec877ebe02848a2f9a2c73589f78a36
Author: Julien Lepiller <address@hidden>
Date:   Thu Sep 21 20:49:29 2017 +0200

    gnu: Add bap.
    
    * gnu/packages/ocaml.scm (bap): New variable.
---
 gnu/packages/ocaml.scm | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 0c32e47..8151044 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -41,6 +41,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libevent)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
@@ -3451,6 +3452,74 @@ It provides a uniform interface for serializing OCaml 
data structures to JSON,
 XML and Protocol Buffers formats.")
     (license license:asl2.0)))
 
+(define-public bap
+  (package
+    (name "bap")
+    (version "1.1.0")
+    (home-page "https://github.com/BinaryAnalysisPlatform/bap";)
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "/archive/v" version ".tar.gz"))
+              (sha256
+               (base32
+                "1ms95m4j1qrmy7zqmsn2izh7gq68lnmssl7chyhk977kd3sxj66m"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+   (build-system ocaml-build-system)
+   (native-inputs
+    `(("oasis" ,ocaml-oasis)
+      ("clang" ,clang)
+      ("ounit" ,ocaml-ounit)))
+   (propagated-inputs
+    `(("core-kernel" ,ocaml-core-kernel)
+      ("ppx-driver" ,ocaml-ppx-driver)
+      ("uri" ,ocaml-uri)
+      ("llvm" ,llvm)
+      ("gmp" ,gmp)
+      ("clang-runtime" ,clang-runtime)
+      ("fileutils" ,ocaml-fileutils)
+      ("cmdliner" ,ocaml-cmdliner)
+      ("zarith" ,ocaml-zarith)
+      ("uuidm" ,ocaml-uuidm)
+      ("camlzip" ,camlzip)
+      ("frontc" ,ocaml-frontc)
+      ("ezjsonm" ,ocaml-ezjsonm)
+      ("ocurl" ,ocaml-ocurl)
+      ("piqi" ,ocaml-piqi)
+      ("ocamlgraph" ,ocaml-graph)
+      ("bitstring" ,ocaml-bitstring)
+      ("ppx-jane" ,ocaml-ppx-jane)
+      ("re" ,ocaml-re)))
+   (inputs `(("llvm" ,llvm)))
+   (arguments
+    `(#:use-make? #t
+      #:phases
+      (modify-phases %standard-phases
+        (replace 'configure
+          (lambda* (#:key outputs #:allow-other-keys)
+            (zero? (system* "./configure" "--prefix"
+                            (assoc-ref outputs "out")
+                            "--libdir"
+                            (string-append
+                              (assoc-ref outputs "out")
+                              "/lib/ocaml/site-lib")
+                            "--with-llvm-version=3.8"
+                            "--with-llvm-config=llvm-config"
+                            "--enable-everything"))))
+        (add-after 'install 'link-stubs
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out (assoc-ref outputs "out"))
+                   (stubs (string-append out "/lib/ocaml/site-lib/stubslibs"))
+                   (lib (string-append out 
"/lib/ocaml/site-lib/bap-plugin-llvm")))
+              (mkdir-p stubs)
+              (symlink (string-append lib "/dllllvm_plugin_stubs.so")
+                       (string-append stubs "/dllllvm_plugin_stubs.so"))))))))
+   (synopsis "Binary Analysis Platform")
+   (description "Binary Analysis Platform is a framework for writing program
+analysis tools, that target binary files.  The framework consists of a plethora
+of libraries, plugins, and frontends.  The libraries provide code reusability,
+the plugins facilitate extensibility, and the frontends serve as entry 
points.")
+   (license license:expat)))
+
 (define-public coq-flocq
   (package
     (name "coq-flocq")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]