fastports

wasi-libc 32

devel/wasi-libc

C standard library for WebAssembly System Interface

Category
devel
Maintainer
vishwin@FreeBSD.org
WWW
https://github.com/WebAssembly/wasi-libc
License
APACHE20 MIT LLVM2
USES
cmake llvm:19

Description

libc/sysroot for WASI (WebAssembly System Interface)

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.

Dependencies

Commit History

may be incomplete — full history at freebsd-ports on GitHub

Commit Credits Log message
32
2209fded2d files touched
Charlie Li (vishwin)
devel/wasi-libc: update to sdk-32
No changes, possibly for internal upstream purposes
31
7c5b2039a4 files touched
Charlie Li (vishwin)
wasi: consistently use the wasm32-wasip1 triple
The WebAssembly community have reclaimed wasm32-wasi, without suffix,
for a future WASI 1.0 standard. The first version of WASI, 0.1, is
now wasm32-wasip1 in triple form, WASI 0.2 is wasm32-wasip2, etc.
Starting LLVM 22 the non-suffixed form is deprecated, aligning with
Rust and Go:

https://github.com/llvm/llvm-project/issues/165344
https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets/

The Mozilla build system's WASI checks always pass -Werror so
configure fails when the non-suffixed target/triple is passed using
LLVM 22:

Using wasi sysroot in /usr/local/share/wasi-sysroot
checking for the wasm C compiler... /usr/local/bin/clang22
checking whether the wasm C compiler can be used... yes
checking the wasm C compiler version... 22.1.0
checking the wasm C compiler works... yes
checking the wasm C compiler can find wasi headers... yes
checking the wasm C linker can find wasi libraries... yes
checking for the wasm C++ compiler... /usr/local/bin/clang++22
checking whether the wasm C++ compiler can be used... yes
checking the wasm C++ compiler version... 22.1.0
checking the wasm C++ compiler works... yes
checking the wasm C++ compiler can find wasi headers... yes
checking the wasm C++ linker can find wasi libraries... yes
checking for clock() in wasi sysroot... no
checking for emulated clock() in wasi sysroot...
DEBUG: Creating `/tmp/conftest0vk5p554.c` with content:
DEBUG: | #include <time.h>
DEBUG: | int
DEBUG: | main(void)
DEBUG: | {
DEBUG: | clock();
DEBUG: |   ;
DEBUG: |   return 0;
DEBUG: | }
DEBUG: Executing: `/usr/local/bin/clang22 --target=wasm32-wasi /tmp/conftest0vk5p554.c -Werror -D_WASI_EMULATED_PROCESS_CLOCKS -lwasi-emulated-process-clocks --sysroot=/usr/local/share/wasi-sysroot`
DEBUG: The command returned non-zero exit status 1.
DEBUG: Its error output was:
DEBUG: | clang: error: argument '--target=wasm32-wasi' is deprecated, use --target=wasm32-wasip1 instead [-Werror,-Wdeprecated]
ERROR: Can't find clock() in wasi sysroot.

Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=2023597

Bump all WASI ports for the new triple. Adjust consumers accordingly
but do not bump, since non-suffixed and p1 are identical as a
transition measure.
31
c7fd3c079c files touched
Charlie Li (vishwin)
devel/wasi-libc: add WITHOUT_CPU_CFLAGS
PR: 293925
31
91dbb7749a files touched
Charlie Li (vishwin)
devel/wasi-libc: add LLVM 22 flavour
PR: 293100
31
3cdf07363a files touched
Charlie Li (vishwin)
wasi: update to sdk-31
- switch to cmake
- stop copying std{arg,def}.h from devel/llvm, not needed
- sync libcxx CMAKE_ARGS
- bump all existing libcxx
29
125d2d37ad files touched
Charlie Li (vishwin)
devel/wasi-libc: update to sdk-29
Consumer PORTREVISIONs to be bumped
28
1d55bbdbd2 files touched
Charlie Li (vishwin)
devel/wasi-libc: update to sdk-28
Consumer PORTREVISIONs to be bumped
27
1aa742d29c files touched
Charlie Li (vishwin)
devel/wasi-libc: fix plist for non-LLVM 21 flavours
<wasi/libc-busywait.h> is added and libwasi-emulated-pthread is removed

Reported by: eduardo
27
4b92026e07 files touched
Charlie Li (vishwin)
devel/wasi-libc: update to sdk-27
Add LLVM 21 flavour

Consumer PORTREVISIONs to be bumped
25-14
bba41fb683 files touched
Charlie Li (vishwin)
devel/wasi-libc: update to latest commit
Enable LLVM 20 flavour, and reorder FLAVORS. Only other changes are
tests so no consumer PORTREVISION bumps.
25
0afd5daeca files touched
Charlie Li (vishwin)
devel/wasi-libc: update to sdk-25
Only real changes deal with build and test infrastructure so not
bumping any consumer PORTREVISION.
24-13
c0c57c629e files touched
Charlie Li (vishwin)
devel/wasi-libc: fix build when ${FLAVOR} is not specified
To have separate flavours per supported LLVM version, USES=llvm is
version-locked to each flavour as USES=llvm:${FLAVOR}. This allows
${LLVM_VERSION} to be used throughout the Makefile for consistency.
However, when ${FLAVOR} is not specified, ${LLVM_VERSION} uses
${LLVM_DEFAULT} which may not match the first item in ${FLAVORS},
resulting in missing dependency. Specify a fallback ${FLAVOR} when
not otherwise set so USES=llvm is guaranteed a version lock.

Consumers always explicitly specify ${FLAVOR} so this problem is
not generally exposed.

Reported by: dim
PR: 282265
24-13
e4396ac9a4 files touched
Charlie Li (vishwin)
devel/wasi-libc: update to latest commit
sdk-24 was only tagged earlier this month and on a commit prior to
the previous one in tree, but portscout registered an "update"
anyway.

No real changes that warrant consumer PORTREVISION bumps.
22-27
84b600fb9f files touched
Charlie Li (vishwin)
wasi: update to latest commit past sdk-22
devel/wasi-libc is now flavourised per supported LLVM version. Each
flavour includes/copies the corresponding clang's stdarg.h and
stddef.h instead of simply using the latest clang release.

Technically upstream dropped support for LLVM < 18, but the commit
doing so admittedly operated under an uncertain assumption. LLVM
17 is still supported in these ports for the benefit of Rust and
gecko@ ports, which specify LLVM 17 minimum, and to facilitate LTO
with that version. LLVM 19 is also supported in this version, with
the corresponding ports to be committed separately.

Bump PORTREVISION of consumers
21
9fd4b7c836 files touched
Charlie Li (vishwin)
wasi: drop support for LLVM < 17
Prepare for update
21
b787213d5b files touched
Charlie Li (vishwin)
devel/wasi-libc: refresh std{arg,def} headers from LLVM 18
21
0654062eab files touched
Mathieu Arnold (mat)
cleanup: (ir)regular GH_TAGNAME cleanup
21
eabba650ca files touched
Charlie Li (vishwin)
devel/wasi-libc: update to sdk-21
Bump PORTREVISION of consumers
20-13
e38b3857f2 files touched
Charlie Li (vishwin)
wasi: update libc to sdk-20 and modularise LLVM bits
wasi-libcxx and wasi-compiler-rt now meta ports (similar to u-boot);
the build process is the same for each LLVM version so child ports
are minimal. Minimum supported LLVM version is 12, thus its
corresponding child ports are resurrected and LLVM 11 child ports
are removed.

Since all supported LLVM versions are made available at once, remove
restriction in bsd.gecko.mk and switch to USES=llvm throughout. LTO
on gecko ports should now work with later LLVM versions so long as
${DEFAULT_VERSIONS} is set properly and matches the LLVM used in
rust (if not using the PORT_LLVM option).

Reviewed by: brooks (LLVM ports interactions)
Tested by: Eric Camachat <eric[at]camachat[dot]org>
Approved by: maintainer timeout (gecko@ portion, 2+ weeks)
PR: 274896
Differential Revision: https://reviews.freebsd.org/D40098
g20210923
6ad958dd4e files touched
Charlie Li (vishwin)
devel/wasi-*: take maintainership
These have to be coordinated with gecko@.

Approved by: mentors (implicit)
g20210923
f57221afde files touched
Fernando Apesteguía (fernape)
*/*: Release ports from maintainership
Maintainer releases all his ports.

PR:		266871
Reported by:	unrelentingtech <greg@unrelenting.technology>
g20210923
fb16dfecae files touched
Stefan Eßer (se)
Remove WWW entries moved into port Makefiles
Commit b7f05445c00f has added WWW entries to port Makefiles based on
WWW: lines in pkg-descr files.

This commit removes the WWW: lines of moved-over URLs from these
pkg-descr files.

Approved by:		portmgr (tcberner)
g20210923
b7f05445c0 files touched
Stefan Eßer (se)
Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.

Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.

There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.

This commit implements such a proposal and moves one of the WWW: entries
of each pkg-descr file into the respective port's Makefile. A heuristic
attempts to identify the most relevant URL in case there is more than
one WWW: entry in some pkg-descr file. URLs that are not moved into the
Makefile are prefixed with "See also:" instead of "WWW:" in the pkg-descr
files in order to preserve them.

There are 1256 ports that had no WWW: entries in pkg-descr files. These
ports will not be touched in this commit.

The portlint port has been adjusted to expect a WWW entry in each port
Makefile, and to flag any remaining "WWW:" lines in pkg-descr files as
deprecated.

Approved by:		portmgr (tcberner)
g20210923
4d8144647a files touched
Greg V (greg)
devel/wasi-libc: Update to g20210923.
Differential Revision:	https://reviews.freebsd.org/D32440
g20201005
cf118ccf87 files touched
Mathieu Arnold (mat)
One more small cleanup, forgotten yesterday. Reported by: lwhsu
g20201005
305f148f48 files touched
Mathieu Arnold (mat)
Remove # $FreeBSD$ from Makefiles.
g20201005
e7dcca1066 files touched
Mikael Urankar (mikael)
devel/wasi-compiler-rt11, wasi-libc, wasi-libcxx: New ports for WebAssembly System Interface (WASI) libc, clang builtins (compiler-rt), libc++, libcxxabi
WASI is a "syscall" interface for WebAssembly, significantly inspired by CloudABI.
It is supported in clang 8 and up, but to actually build C programs,
it needs clang builtins and the libc/sysroot. And for C++, also libc++ and libcxxabi.

Submitted by:		Greg V <greg%unrelenting.technology>
Differential Revision:	https://reviews.freebsd.org/D22960