summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Langlois <pierre.langlois@gmx.com>2022-01-17 19:19:30 +0000
committerJonathan Brielmaier <jonathan.brielmaier@web.de>2022-01-23 16:06:29 +0100
commit5e60eec084b8812c7a5fc1ed18ec1e0cf1c6b6f6 (patch)
treea90300f9143f3f9c72d9283a32964c272bc2eb08
parent3e649cb5c1621e60994f05c4eebb81331fac61f5 (diff)
nongnu: Add wasm32-wasi-libcxx.
* nongnu/packages/wasm.scm (wasm32-wasi-libcxx): New variable. Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
-rw-r--r--nongnu/packages/wasm.scm77
1 files changed, 76 insertions, 1 deletions
diff --git a/nongnu/packages/wasm.scm b/nongnu/packages/wasm.scm
index 3c0a8b5..910622f 100644
--- a/nongnu/packages/wasm.scm
+++ b/nongnu/packages/wasm.scm
@@ -22,8 +22,10 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils)
#:use-module (guix git-download)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
- #:use-module (gnu packages llvm))
+ #:use-module (gnu packages llvm)
+ #:use-module (gnu packages python))
(define-public wasi-libc
(let ((commit "ad5133410f66b93a2381db5b542aad5e0964db96")
@@ -132,3 +134,76 @@ other APIs.")
((#:phases phases)
`(modify-phases ,phases
(delete 'symlink-cfi_ignorelist))))))))
+
+(define-public wasm32-wasi-libcxx
+ (package
+ (name "wasm32-wasi-libcxx")
+ (version "13.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/llvm/llvm-project")
+ (commit (string-append "llvmorg-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0cjl0vssi4y2g4nfr710fb6cdhxmn5r0vis15sf088zsc5zydfhw"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ #~(list (string-append "-S ../source/runtimes")
+
+ "-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi"
+
+ (string-append
+ "-DCMAKE_SYSROOT=" #$wasi-libc "/wasm32-wasi")
+
+ (string-append
+ "-DCMAKE_INCLUDE_PATH=" #$wasi-libc "/wasm32-wasi/include")
+
+ (string-append
+ "-DCMAKE_STAGING_PREFIX=" #$output "/wasm32-wasi")
+
+ "-DCMAKE_C_COMPILER=clang"
+ "-DCMAKE_C_COMPILER_WORKS=ON"
+ "-DCMAKE_CXX_COMPILER=clang++"
+ "-DCMAKE_CXX_COMPILER_WORKS=ON"
+ "-DCMAKE_C_COMPILER_TARGET=wasm32-wasi"
+ "-DCMAKE_CXX_COMPILER_TARGET=wasm32-wasi"
+
+ "-DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi"
+
+ "-DLIBCXX_ENABLE_EXCEPTIONS=OFF"
+ "-DLIBCXX_ENABLE_SHARED=OFF"
+ "-DLIBCXX_ENABLE_THREADS=OFF"
+ "-DLIBCXX_ENABLE_FILESYSTEM=OFF"
+
+ "-DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi"
+
+ "-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF"
+ "-DLIBCXXABI_ENABLE_SHARED=OFF"
+ "-DLIBCXXABI_ENABLE_THREADS=OFF"
+ "-DLIBCXXABI_ENABLE_FILESYSTEM=OFF")
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH
+ (lambda _
+ (setenv "CPLUS_INCLUDE_PATH"
+ (string-append #$wasi-libc "/wasm32-wasi/include:"
+ (getenv "CPLUS_INCLUDE_PATH"))))))))
+ (native-inputs
+ (list lld
+ python
+ wasm32-wasi-clang))
+ (inputs
+ (list wasi-libc))
+ (home-page "https://libcxx.llvm.org")
+ (synopsis "C++ standard library for WebAssembly")
+ (description
+ "This package provides an implementation of the C++ standard library for
+use with Clang, targeting C++11, C++14 and above. This package targets
+WebAssembly with WASI.")
+ (license license:expat)))