]> git.proxmox.com Git - wasi-libc.git/blame - README.md
Multi-license wasi-libc under Apache and MIT licenses. (#174)
[wasi-libc.git] / README.md
CommitLineData
94d34a13 1# WASI Libc
dcf13b6f 2
320054e8
DG
3This is a work in progress. It's usable for many purposes, though the APIs
4aren't stable yet.
dcf13b6f
DG
5
6## What is this?
7
320054e8
DG
8It's several things.
9
32cd1700 10First, it's a usable libc. It builds a "libc" which can be used by
9f103c28
DG
11compilers, such as Clang 8.0, using the wasm32-wasi target. It's a work in
12progress, but it is already sufficient to run basic programs.
320054e8
DG
13
14Second, it's a "reference" implementation, which means the interfaces defined
15here can be used by other tools and libraries, even if they don't use all the
16actual implementations here. For example, we don't expect everyone will want
17to use the exact `malloc` implementation provided here, but tools and
18libraries using an ABI-compatible `malloc` interface will be able to
19interoperate regardless of which actual implementation is used.
20
21Third, it's an example showing the use of the WASI API. The libc functionality
22is implemented using calls to WASI functions.
dcf13b6f
DG
23
24## Usage
25
320054e8 26The easiest way to get started with this is to use one of the
488c478b 27[prepackaged releases](https://github.com/CraneStation/wasmtime/blob/master/docs/WASI-intro.md#how-can-i-write-programs-that-use-wasi).
320054e8
DG
28
29## Building from source
30
31To build a WASI sysroot from source, obtain a WebAssembly-supporting C compiler
b1e234b6 32(currently this is only clang 8+, though we'd like to support other compilers as well),
320054e8 33and then run:
dcf13b6f 34
b1e234b6
FD
35```sh
36make WASM_CC=/path/to/clang/with/wasm/support \
37 WASM_AR=/path/to/llvm-ar \
38 WASM_NM=/path/to/llvm-nm
dcf13b6f
DG
39```
40
c9850bfd 41This makes a directory called "sysroot", by default. See the top of the Makefile
dcf13b6f
DG
42for customization options.
43
44To use the sysroot, use the `--sysroot=` option:
45
b1e234b6 46```sh
dcf13b6f 47/path/to/wasm/supporting/c/compiler --sysroot=/path/to/the/newly/built/sysroot ...
f2049d9b 48```
dcf13b6f
DG
49
50to run the compiler using the newly built sysroot.