diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-30 03:12:31 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-30 03:12:31 +0000 |
commit | 26711fdc8922df06123f2431e7cd9a27cdc2388a (patch) | |
tree | 4f9e0d646d4b1bb6821b8b7670b1bd1b280925bd /README.md | |
parent | Adding upstream version 0.0~git20230621.7018e24. (diff) | |
download | wasi-libc-26711fdc8922df06123f2431e7cd9a27cdc2388a.tar.xz wasi-libc-26711fdc8922df06123f2431e7cd9a27cdc2388a.zip |
Adding upstream version 0.0~git20230821.ec4566b.upstream/0.0_git20230821.ec4566b
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 39 |
1 files changed, 24 insertions, 15 deletions
@@ -1,25 +1,27 @@ -# WASI Libc +# `wasi-libc` -WASI Libc is a libc for WebAssembly programs built on top of WASI system calls. -It provides a wide array of POSIX-compatible C APIs, including support for -standard I/O, file I/O, filesystem manipulation, memory management, time, string, -environment variables, program startup, and many other APIs. +`wasi-libc` is a libc for WebAssembly programs built on top of WASI system +calls. It provides a wide array of POSIX-compatible C APIs, including support +for standard I/O, file I/O, filesystem manipulation, memory management, time, +string, environment variables, program startup, and many other APIs. -WASI Libc is sufficiently stable and usable for many purposes, as most of the +`wasi-libc` is sufficiently stable and usable for many purposes, as most of the POSIX-compatible APIs are stable, though it is continuing to evolve to better -align with wasm and WASI. For example, pthread support is still a work in -progress. +align with wasm and WASI. For example, pthread support is experimentally +provided via the [wasi-threads] proposal.` + +[wasi-threads]: https://github.com/WebAssembly/wasi-threads ## Usage The easiest way to get started with this is to use [wasi-sdk], which includes a -build of WASI Libc in its sysroot. +build of `wasi-libc` in its sysroot. ## Building from source To build a WASI sysroot from source, obtain a WebAssembly-supporting C compiler -(currently this is only clang 10+, though we'd like to support other compilers as well), -and then run: +(currently this is only clang 10+, though we'd like to support other compilers +as well), and then run: ```sh make CC=/path/to/clang/with/wasm/support \ @@ -27,7 +29,7 @@ make CC=/path/to/clang/with/wasm/support \ NM=/path/to/llvm-nm ``` -This makes a directory called "sysroot", by default. See the top of the Makefile +This makes a directory called "sysroot" by default. See the top of the Makefile for customization options. To use the sysroot, use the `--sysroot=` option: @@ -39,10 +41,17 @@ To use the sysroot, use the `--sysroot=` option: to run the compiler using the newly built sysroot. Note that Clang packages typically don't include cross-compiled builds of -compiler-rt, libcxx, or libcxxabi, for `libclang_rt.builtins-wasm32.a`, libc++.a, -or libc++abi.a, respectively, so they may not be usable without +compiler-rt, libcxx, or libcxxabi, for `libclang_rt.builtins-wasm32.a`, +`libc++.a`, or `libc++abi.a`, respectively, so they may not be usable without extra setup. This is one of the things [wasi-sdk] simplifies, as it includes -cross-compiled builds of compiler-rt, libc++.a, and libc++abi.a. +cross-compiled builds of compiler-rt, `libc++.a`, and `libc++abi.a`. + +## Building in pthread support + +To enable pthreads support via the [wasi-threads] proposal, follow the above +build directions with one addition: `make ... THREAD_MODEL=posix`. This creates +additional artifacts in `sysroot/lib/wasm32-wasi-threads` to support `--target +wasm32-wasi-threads`. ## Arch Linux AUR package |