mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 13:58:15 -05:00
gnu: Add c2ffi.
* gnu/packages/cpp.scm (c2ffi): New variable. Co-authored-by: muradm <mail@muradm.net> Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
This commit is contained in:
parent
3213c37341
commit
8c30375859
1 changed files with 49 additions and 0 deletions
|
@ -26,6 +26,8 @@
|
||||||
;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
|
;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
|
||||||
;;; Copyright © 2021 Disseminate Dissent <disseminatedissent@protonmail.com>
|
;;; Copyright © 2021 Disseminate Dissent <disseminatedissent@protonmail.com>
|
||||||
;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
|
;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
|
||||||
|
;;; Copyright © 2022 muradm <mail@muradm.net>
|
||||||
|
;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -227,6 +229,53 @@ (define-public c++-gsl
|
||||||
(home-page "https://github.com/microsoft/GSL/")
|
(home-page "https://github.com/microsoft/GSL/")
|
||||||
(license license:expat)))
|
(license license:expat)))
|
||||||
|
|
||||||
|
(define-public c2ffi
|
||||||
|
(package
|
||||||
|
(name "c2ffi")
|
||||||
|
;; As per the c2ffi README: the first three elements are encoding the
|
||||||
|
;; required Clang/LLVM version, and the last one is the c2ffi revision.
|
||||||
|
(version "12.0.0.0")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/rpav/c2ffi")
|
||||||
|
(commit (string-append "v" version))))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32 "1qq8dfismd20d9kfxpfvwz07v9mfvd0y7p5r3c92mk2pm4xnmzfy"))
|
||||||
|
(modules '((guix build utils)))
|
||||||
|
(snippet
|
||||||
|
'(substitute* "CMakeLists.txt"
|
||||||
|
;; Guix seems to be packaging LLVM libs separately thus -lLLVM
|
||||||
|
;; won't work, every used library must be specified explicitly.
|
||||||
|
(("c2ffi PUBLIC clang-cpp LLVM")
|
||||||
|
"c2ffi PUBLIC clang-cpp LLVMCore LLVMSupport LLVMMCParser \
|
||||||
|
LLVMOption LLVMBitReader LLVMProfileData")))))
|
||||||
|
(build-system cmake-build-system)
|
||||||
|
(arguments
|
||||||
|
'(;; If LLVM was built without RTTI, we need to also be built without
|
||||||
|
;; it. See: https://stackoverflow.com/q/11904519
|
||||||
|
#:configure-flags '("-DCMAKE_CXX_FLAGS=-fno-rtti")
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(replace 'check
|
||||||
|
(lambda* (#:key tests? #:allow-other-keys)
|
||||||
|
(when tests?
|
||||||
|
(invoke "./bin/c2ffi" "--help")))))))
|
||||||
|
(native-inputs
|
||||||
|
(list clang-12)) ; CMakeLists.txt invokes `clang -print-resource-dir`
|
||||||
|
(inputs
|
||||||
|
(list clang-12)) ; Compiled with gcc, but links against libclang-cpp.so
|
||||||
|
(home-page "https://github.com/rpav/c2ffi")
|
||||||
|
(synopsis "Clang-based FFI wrapper generator")
|
||||||
|
(description
|
||||||
|
"@code{c2ffi} is a tool for extracting definitions from C, C++, and
|
||||||
|
Objective C headers for use with foreign function call interfaces. It uses
|
||||||
|
the @code{Clang/LLVM} infrastructure to extract the data, and emits it in
|
||||||
|
various formats, including @code{json}.")
|
||||||
|
(license license:gpl2+)))
|
||||||
|
|
||||||
(define-public libzen
|
(define-public libzen
|
||||||
(package
|
(package
|
||||||
(name "libzen")
|
(name "libzen")
|
||||||
|
|
Loading…
Reference in a new issue