summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuliana Sims <juli@incana.org>2023-07-25 14:42:45 -0400
committerEfraim Flashner <efraim@flashner.co.il>2023-07-26 11:31:15 +0300
commitca133a7c4d8bf07618b17a614b872fb8538da77b (patch)
treea1bafe0893e12472006b4069dd186855fe805922
parent713dca1399cda2439af75989510f86718741a4ff (diff)
gnu: Add rvvm.
* gnu/packages/virtualization.scm (rvvm): New variable. Co-authored-by: Efraim Flashner <efraim@flashner.co.il> Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
-rw-r--r--gnu/packages/virtualization.scm52
1 files changed, 52 insertions, 0 deletions
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 729c61de8d..db7df83524 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2023 Juliana Sims <juli@incana.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1126,6 +1127,57 @@ Guix to build virtual machines.")
Debian or a derivative using @command{debootstrap}.")
(license license:gpl2+)))
+(define-public rvvm
+ (package
+ (name "rvvm")
+ (version "0.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LekKit/RVVM")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1ldabcrmpa044bahpqa6ymwbhhwy69slh77f0m3421sq6j50l06p"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ ;; See src/rvjit/rvjit.h for list of architectures.
+ #~(#$@(if (or (target-x86?)
+ (target-arm?))
+ #~'()
+ #~(list "-DRVVM_USE_JIT=NO")))
+ #:modules `((srfi srfi-26)
+ (guix build utils)
+ (guix build cmake-build-system))
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Install phase inspired by the Makefile.
+ (replace 'install
+ (lambda _
+ (let ((src "../source/src/")
+ (incl (string-append #$output "/include/rvvm/")))
+ (install-file "rvvm" (string-append #$output "/bin"))
+ (for-each
+ (cut install-file <> (string-append #$output "/lib"))
+ (find-files "." "\\.(so|a)$"))
+ (install-file (string-append src "rvvmlib.h") incl)
+ (for-each
+ (cut install-file <> (string-append incl "devices"))
+ (find-files (string-append src "devices") "\\.h$"))))))
+ #:tests? #f)) ; no tests
+ (home-page "https://github.com/LekKit/RVVM")
+ (synopsis "RISC-V virtual machine")
+ (description
+ "RVVM is a RISC-V CPU and system software implementation written in C. It
+supports the entire RV64GC ISA, and it passes compliance tests for both RV64 and
+RV32. OpenSBI, U-Boot, and custom firmwares boot and execute properly. It is
+capable of running Linux, FreeBSD, OpenBSD, Haiku, and other OSes. Furthermore,
+it emulates a variety of hardware and peripherals.")
+ (license (list license:gpl3+ license:mpl2.0))))
+
(define-public spike
(package
(name "spike")