summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2023-02-02 14:04:48 -0500
committerDavid Thompson <dthompson2@worcester.edu>2023-02-03 08:09:15 -0500
commit157b94ead7ea64c945b8dc11f8a8800350ef53a5 (patch)
tree3d166527f40263d4d56763548ae9ff3243d9ca10
parent59b102cab9d66ba0c561ed9ed8df04f9fc340bd2 (diff)
downloadguix-patches-157b94ead7ea64c945b8dc11f8a8800350ef53a5.tar
guix-patches-157b94ead7ea64c945b8dc11f8a8800350ef53a5.tar.gz
gnu: Add wasm3.
* gnu/packages/web.scm (wasm3): New variable.
-rw-r--r--gnu/packages/web.scm48
1 files changed, 48 insertions, 0 deletions
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index a29f53108c..c527ff80df 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -61,6 +61,7 @@
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2022 Bruno Victal <mirai@makinata.eu>
+;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1557,6 +1558,53 @@ These tools are intended for use in (or for development of) toolchains or
other systems that want to manipulate WebAssembly files.")
(license license:asl2.0)))
+(define-public wasm3
+ (package
+ (name "wasm3")
+ (version "0.5.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/wasm3/wasm3")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "07zzmk776j8ydyxhrnnjiscbhhmz182a62r6aix6kfk5kq2cwia2"))))
+ (build-system cmake-build-system)
+ (arguments
+ ;; The default WASI option "uvwasi" causes CMake to initiate a 'git
+ ;; clone' which cannot happen within the build container.
+ '(#:configure-flags '("-DBUILD_WASI=simple")
+ ;; No check target. There are tests but they require a network
+ ;; connection to download the WebAssembly core test suite.
+ #:tests? #f
+ ;; There is no install target. Instead, we have to manually copy the
+ ;; wasm3 build artifacts to the output directory.
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bindir (string-append out "/bin"))
+ (includedir (string-append out "/include"))
+ (libdir (string-append out "/lib")))
+ (mkdir-p bindir)
+ (mkdir-p includedir)
+ (mkdir-p libdir)
+ (copy-file "wasm3" (string-append bindir "/wasm3"))
+ (for-each (lambda (header)
+ (copy-file header
+ (string-append includedir "/"
+ (basename header))))
+ (find-files "../source/source" "\\.h$"))
+ (copy-file "source/libm3.a"
+ (string-append libdir "/libm3.a"))))))))
+ (home-page "https://github.com/wasm3/wasm3")
+ (synopsis "WebAssembly interpreter")
+ (description "WASM3 is a fast WebAssembly interpreter.")
+ (license license:expat)))
+
(define-public websocketpp
(package
(name "websocketpp")