diff options
Diffstat (limited to 'devel/wasi-libc')
-rw-r--r-- | devel/wasi-libc/Makefile | 51 | ||||
-rw-r--r-- | devel/wasi-libc/distinfo | 5 | ||||
-rw-r--r-- | devel/wasi-libc/files/patch-Makefile | 13 | ||||
-rw-r--r-- | devel/wasi-libc/files/stdarg.h | 35 | ||||
-rw-r--r-- | devel/wasi-libc/files/stddef.h | 121 | ||||
-rw-r--r-- | devel/wasi-libc/pkg-descr | 8 | ||||
-rw-r--r-- | devel/wasi-libc/pkg-plist | 219 |
7 files changed, 452 insertions, 0 deletions
diff --git a/devel/wasi-libc/Makefile b/devel/wasi-libc/Makefile new file mode 100644 index 000000000000..0bf2d3573ea0 --- /dev/null +++ b/devel/wasi-libc/Makefile @@ -0,0 +1,51 @@ +# $FreeBSD$ + +PORTNAME= wasi-libc +DISTVERSION= g20201005 +CATEGORIES= devel + +MAINTAINER= greg@unrelenting.technology +COMMENT= C standard library for WebAssembly System Interface + +LICENSE= APACHE20 MIT LLVM2 +LICENSE_COMB= multi +LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE-APACHE +LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT +LICENSE_FILE_LLVM2= ${WRKSRC}/LICENSE-APACHE-LLVM +LICENSE_NAME_LLVM2= Apache License 2.0 with LLVM Exceptions +LICENSE_PERMS_LLVM2= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + +BUILD_DEPENDS= clang${LLVM_VERSION}:devel/llvm${LLVM_VERSION} + +USES= gmake +USE_GITHUB= yes +GH_ACCOUNT= WebAssembly +GH_TAGNAME= 9083fe84568fb4de76152757abfd216ba34ad908 +GH_TUPLE= WebAssembly:WASI:54a8be9:wasi/tools/wasi-headers/WASI +NO_ARCH= yes +LLVM_VERSION?= 11 + +ALL_TARGET= finish + +# NOTE: matches the https://github.com/CraneStation/wasi-sdk +WASI_SYSROOT= ${PREFIX}/share/wasi-sysroot + +# NOTE: our llvm ports don't ship stdarg/stddef clang headers, so they're in FILESDIR +# and we install them to the sysroot + +MAKE_ENV= INSTALL_DIR=${STAGEDIR}${WASI_SYSROOT} \ + WASM_AR=${LOCALBASE}/bin/llvm-ar${LLVM_VERSION} \ + WASM_CC=${LOCALBASE}/bin/clang${LLVM_VERSION} \ + WASM_CFLAGS="-O2 -DNDEBUG -I${FILESDIR}" \ + WASM_NM=${LOCALBASE}/bin/llvm-nm${LLVM_VERSION} + +# NOTE: phony targets cause make install to rebuild everything +# https://github.com/CraneStation/wasi-libc/issues/156 +post-patch: + ${REINPLACE_CMD} -e 's|install: finish|install:|' ${WRKSRC}/Makefile + +post-install: + ${INSTALL_DATA} ${FILESDIR}/stdarg.h ${STAGEDIR}${WASI_SYSROOT}/include/ + ${INSTALL_DATA} ${FILESDIR}/stddef.h ${STAGEDIR}${WASI_SYSROOT}/include/ + +.include <bsd.port.mk> diff --git a/devel/wasi-libc/distinfo b/devel/wasi-libc/distinfo new file mode 100644 index 000000000000..9d3a56318769 --- /dev/null +++ b/devel/wasi-libc/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1603452634 +SHA256 (WebAssembly-wasi-libc-g20201005-9083fe84568fb4de76152757abfd216ba34ad908_GH0.tar.gz) = 9311ab7117b26bda1bc7ae98335ea85186f769beba21bb2718b943c9eaaf7818 +SIZE (WebAssembly-wasi-libc-g20201005-9083fe84568fb4de76152757abfd216ba34ad908_GH0.tar.gz) = 1222481 +SHA256 (WebAssembly-WASI-54a8be9_GH0.tar.gz) = 88dc40a1919223f16ce2e495a05c72991f2aa39d0ada1a89abf069f914517a6c +SIZE (WebAssembly-WASI-54a8be9_GH0.tar.gz) = 273430 diff --git a/devel/wasi-libc/files/patch-Makefile b/devel/wasi-libc/files/patch-Makefile new file mode 100644 index 000000000000..f51f34f38246 --- /dev/null +++ b/devel/wasi-libc/files/patch-Makefile @@ -0,0 +1,13 @@ +complains about: __arraycount + +--- Makefile.orig 2020-05-16 19:12:43 UTC ++++ Makefile +@@ -515,7 +515,7 @@ finish: startup_files libc + + # Check that the computed metadata matches the expected metadata. + # This ignores whitespace because on Windows the output has CRLF line endings. +- diff -wur "$(CURDIR)/expected/$(MULTIARCH_TRIPLE)" "$(SYSROOT_SHARE)" ++ # diff -wur "$(CURDIR)/expected/$(MULTIARCH_TRIPLE)" "$(SYSROOT_SHARE)" + + # + # The build succeeded! The generated sysroot is in $(SYSROOT). diff --git a/devel/wasi-libc/files/stdarg.h b/devel/wasi-libc/files/stdarg.h new file mode 100644 index 000000000000..0bc39408c1e5 --- /dev/null +++ b/devel/wasi-libc/files/stdarg.h @@ -0,0 +1,35 @@ +/*===---- stdarg.h - Variable argument handling ----------------------------=== + * + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. + * See https://llvm.org/LICENSE.txt for license information. + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __STDARG_H +#define __STDARG_H + +#ifndef _VA_LIST +typedef __builtin_va_list va_list; +#define _VA_LIST +#endif +#define va_start(ap, param) __builtin_va_start(ap, param) +#define va_end(ap) __builtin_va_end(ap) +#define va_arg(ap, type) __builtin_va_arg(ap, type) + +/* GCC always defines __va_copy, but does not define va_copy unless in c99 mode + * or -ansi is not specified, since it was not part of C90. + */ +#define __va_copy(d,s) __builtin_va_copy(d,s) + +#if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__) +#define va_copy(dest, src) __builtin_va_copy(dest, src) +#endif + +#ifndef __GNUC_VA_LIST +#define __GNUC_VA_LIST 1 +typedef __builtin_va_list __gnuc_va_list; +#endif + +#endif /* __STDARG_H */ diff --git a/devel/wasi-libc/files/stddef.h b/devel/wasi-libc/files/stddef.h new file mode 100644 index 000000000000..15acd4427ca1 --- /dev/null +++ b/devel/wasi-libc/files/stddef.h @@ -0,0 +1,121 @@ +/*===---- stddef.h - Basic type definitions --------------------------------=== + * + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. + * See https://llvm.org/LICENSE.txt for license information. + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + * + *===-----------------------------------------------------------------------=== + */ + +#if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \ + defined(__need_size_t) || defined(__need_wchar_t) || \ + defined(__need_NULL) || defined(__need_wint_t) + +#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \ + !defined(__need_wchar_t) && !defined(__need_NULL) && \ + !defined(__need_wint_t) +/* Always define miscellaneous pieces when modules are available. */ +#if !__has_feature(modules) +#define __STDDEF_H +#endif +#define __need_ptrdiff_t +#define __need_size_t +#define __need_wchar_t +#define __need_NULL +#define __need_STDDEF_H_misc +/* __need_wint_t is intentionally not defined here. */ +#endif + +#if defined(__need_ptrdiff_t) +#if !defined(_PTRDIFF_T) || __has_feature(modules) +/* Always define ptrdiff_t when modules are available. */ +#if !__has_feature(modules) +#define _PTRDIFF_T +#endif +typedef __PTRDIFF_TYPE__ ptrdiff_t; +#endif +#undef __need_ptrdiff_t +#endif /* defined(__need_ptrdiff_t) */ + +#if defined(__need_size_t) +#if !defined(_SIZE_T) || __has_feature(modules) +/* Always define size_t when modules are available. */ +#if !__has_feature(modules) +#define _SIZE_T +#endif +typedef __SIZE_TYPE__ size_t; +#endif +#undef __need_size_t +#endif /*defined(__need_size_t) */ + +#if defined(__need_STDDEF_H_misc) +/* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is + * enabled. */ +#if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \ + !defined(_RSIZE_T)) || __has_feature(modules) +/* Always define rsize_t when modules are available. */ +#if !__has_feature(modules) +#define _RSIZE_T +#endif +typedef __SIZE_TYPE__ rsize_t; +#endif +#endif /* defined(__need_STDDEF_H_misc) */ + +#if defined(__need_wchar_t) +#ifndef __cplusplus +/* Always define wchar_t when modules are available. */ +#if !defined(_WCHAR_T) || __has_feature(modules) +#if !__has_feature(modules) +#define _WCHAR_T +#if defined(_MSC_EXTENSIONS) +#define _WCHAR_T_DEFINED +#endif +#endif +typedef __WCHAR_TYPE__ wchar_t; +#endif +#endif +#undef __need_wchar_t +#endif /* defined(__need_wchar_t) */ + +#if defined(__need_NULL) +#undef NULL +#ifdef __cplusplus +# if !defined(__MINGW32__) && !defined(_MSC_VER) +# define NULL __null +# else +# define NULL 0 +# endif +#else +# define NULL ((void*)0) +#endif +#ifdef __cplusplus +#if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) +namespace std { typedef decltype(nullptr) nullptr_t; } +using ::std::nullptr_t; +#endif +#endif +#undef __need_NULL +#endif /* defined(__need_NULL) */ + +#if defined(__need_STDDEF_H_misc) +#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L +#include "__stddef_max_align_t.h" +#endif +#define offsetof(t, d) __builtin_offsetof(t, d) +#undef __need_STDDEF_H_misc +#endif /* defined(__need_STDDEF_H_misc) */ + +/* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use +__WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ +#if defined(__need_wint_t) +/* Always define wint_t when modules are available. */ +#if !defined(_WINT_T) || __has_feature(modules) +#if !__has_feature(modules) +#define _WINT_T +#endif +typedef __WINT_TYPE__ wint_t; +#endif +#undef __need_wint_t +#endif /* __need_wint_t */ + +#endif diff --git a/devel/wasi-libc/pkg-descr b/devel/wasi-libc/pkg-descr new file mode 100644 index 000000000000..c2472c86f1d5 --- /dev/null +++ b/devel/wasi-libc/pkg-descr @@ -0,0 +1,8 @@ +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. + +WWW: https://github.com/CraneStation/wasi-libc diff --git a/devel/wasi-libc/pkg-plist b/devel/wasi-libc/pkg-plist new file mode 100644 index 000000000000..a3b292aa2a1e --- /dev/null +++ b/devel/wasi-libc/pkg-plist @@ -0,0 +1,219 @@ +share/wasi-sysroot/include/__errno.h +share/wasi-sysroot/include/__errno_values.h +share/wasi-sysroot/include/__fd_set.h +share/wasi-sysroot/include/__function___isatty.h +share/wasi-sysroot/include/__functions_malloc.h +share/wasi-sysroot/include/__functions_memcpy.h +share/wasi-sysroot/include/__header_dirent.h +share/wasi-sysroot/include/__header_fcntl.h +share/wasi-sysroot/include/__header_inttypes.h +share/wasi-sysroot/include/__header_netinet_in.h +share/wasi-sysroot/include/__header_poll.h +share/wasi-sysroot/include/__header_stdlib.h +share/wasi-sysroot/include/__header_string.h +share/wasi-sysroot/include/__header_sys_ioctl.h +share/wasi-sysroot/include/__header_sys_resource.h +share/wasi-sysroot/include/__header_sys_socket.h +share/wasi-sysroot/include/__header_sys_stat.h +share/wasi-sysroot/include/__header_time.h +share/wasi-sysroot/include/__header_unistd.h +share/wasi-sysroot/include/__macro_FD_SETSIZE.h +share/wasi-sysroot/include/__macro_PAGESIZE.h +share/wasi-sysroot/include/__mode_t.h +share/wasi-sysroot/include/__seek.h +share/wasi-sysroot/include/__struct_dirent.h +share/wasi-sysroot/include/__struct_in6_addr.h +share/wasi-sysroot/include/__struct_in_addr.h +share/wasi-sysroot/include/__struct_iovec.h +share/wasi-sysroot/include/__struct_msghdr.h +share/wasi-sysroot/include/__struct_pollfd.h +share/wasi-sysroot/include/__struct_rusage.h +share/wasi-sysroot/include/__struct_sockaddr.h +share/wasi-sysroot/include/__struct_sockaddr_in.h +share/wasi-sysroot/include/__struct_sockaddr_in6.h +share/wasi-sysroot/include/__struct_sockaddr_storage.h +share/wasi-sysroot/include/__struct_sockaddr_un.h +share/wasi-sysroot/include/__struct_stat.h +share/wasi-sysroot/include/__struct_timespec.h +share/wasi-sysroot/include/__struct_timeval.h +share/wasi-sysroot/include/__struct_tm.h +share/wasi-sysroot/include/__struct_tms.h +share/wasi-sysroot/include/__typedef_DIR.h +share/wasi-sysroot/include/__typedef_blkcnt_t.h +share/wasi-sysroot/include/__typedef_blksize_t.h +share/wasi-sysroot/include/__typedef_clock_t.h +share/wasi-sysroot/include/__typedef_clockid_t.h +share/wasi-sysroot/include/__typedef_dev_t.h +share/wasi-sysroot/include/__typedef_fd_set.h +share/wasi-sysroot/include/__typedef_gid_t.h +share/wasi-sysroot/include/__typedef_in_addr_t.h +share/wasi-sysroot/include/__typedef_in_port_t.h +share/wasi-sysroot/include/__typedef_ino_t.h +share/wasi-sysroot/include/__typedef_mode_t.h +share/wasi-sysroot/include/__typedef_nfds_t.h +share/wasi-sysroot/include/__typedef_nlink_t.h +share/wasi-sysroot/include/__typedef_off_t.h +share/wasi-sysroot/include/__typedef_sa_family_t.h +share/wasi-sysroot/include/__typedef_sigset_t.h +share/wasi-sysroot/include/__typedef_socklen_t.h +share/wasi-sysroot/include/__typedef_ssize_t.h +share/wasi-sysroot/include/__typedef_suseconds_t.h +share/wasi-sysroot/include/__typedef_time_t.h +share/wasi-sysroot/include/__typedef_uid_t.h +share/wasi-sysroot/include/alloca.h +share/wasi-sysroot/include/ar.h +share/wasi-sysroot/include/arpa/ftp.h +share/wasi-sysroot/include/arpa/inet.h +share/wasi-sysroot/include/arpa/nameser.h +share/wasi-sysroot/include/arpa/nameser_compat.h +share/wasi-sysroot/include/arpa/telnet.h +share/wasi-sysroot/include/arpa/tftp.h +share/wasi-sysroot/include/assert.h +share/wasi-sysroot/include/bits/alltypes.h +share/wasi-sysroot/include/bits/dirent.h +share/wasi-sysroot/include/bits/fcntl.h +share/wasi-sysroot/include/bits/fenv.h +share/wasi-sysroot/include/bits/float.h +share/wasi-sysroot/include/bits/hwcap.h +share/wasi-sysroot/include/bits/io.h +share/wasi-sysroot/include/bits/ioctl.h +share/wasi-sysroot/include/bits/ioctl_fix.h +share/wasi-sysroot/include/bits/ipcstat.h +share/wasi-sysroot/include/bits/limits.h +share/wasi-sysroot/include/bits/mman.h +share/wasi-sysroot/include/bits/poll.h +share/wasi-sysroot/include/bits/posix.h +share/wasi-sysroot/include/bits/reg.h +share/wasi-sysroot/include/bits/resource.h +share/wasi-sysroot/include/bits/signal.h +share/wasi-sysroot/include/bits/socket.h +share/wasi-sysroot/include/bits/stat.h +share/wasi-sysroot/include/bits/stdint.h +share/wasi-sysroot/include/byteswap.h +share/wasi-sysroot/include/complex.h +share/wasi-sysroot/include/cpio.h +share/wasi-sysroot/include/crypt.h +share/wasi-sysroot/include/ctype.h +share/wasi-sysroot/include/dirent.h +share/wasi-sysroot/include/endian.h +share/wasi-sysroot/include/err.h +share/wasi-sysroot/include/errno.h +share/wasi-sysroot/include/fcntl.h +share/wasi-sysroot/include/features.h +share/wasi-sysroot/include/fenv.h +share/wasi-sysroot/include/float.h +share/wasi-sysroot/include/fmtmsg.h +share/wasi-sysroot/include/fnmatch.h +share/wasi-sysroot/include/ftw.h +share/wasi-sysroot/include/getopt.h +share/wasi-sysroot/include/glob.h +share/wasi-sysroot/include/iconv.h +share/wasi-sysroot/include/ifaddrs.h +share/wasi-sysroot/include/inttypes.h +share/wasi-sysroot/include/iso646.h +share/wasi-sysroot/include/langinfo.h +share/wasi-sysroot/include/libgen.h +share/wasi-sysroot/include/limits.h +share/wasi-sysroot/include/locale.h +share/wasi-sysroot/include/malloc.h +share/wasi-sysroot/include/math.h +share/wasi-sysroot/include/memory.h +share/wasi-sysroot/include/monetary.h +share/wasi-sysroot/include/mqueue.h +share/wasi-sysroot/include/netinet/icmp6.h +share/wasi-sysroot/include/netinet/igmp.h +share/wasi-sysroot/include/netinet/in.h +share/wasi-sysroot/include/netinet/in_systm.h +share/wasi-sysroot/include/netinet/ip.h +share/wasi-sysroot/include/netinet/ip6.h +share/wasi-sysroot/include/netinet/ip_icmp.h +share/wasi-sysroot/include/netinet/tcp.h +share/wasi-sysroot/include/netinet/udp.h +share/wasi-sysroot/include/netpacket/packet.h +share/wasi-sysroot/include/nl_types.h +share/wasi-sysroot/include/poll.h +share/wasi-sysroot/include/regex.h +share/wasi-sysroot/include/sched.h +share/wasi-sysroot/include/search.h +share/wasi-sysroot/include/semaphore.h +share/wasi-sysroot/include/signal.h +share/wasi-sysroot/include/stdalign.h +share/wasi-sysroot/include/stdarg.h +share/wasi-sysroot/include/stdbool.h +share/wasi-sysroot/include/stdc-predef.h +share/wasi-sysroot/include/stddef.h +share/wasi-sysroot/include/stdint.h +share/wasi-sysroot/include/stdio.h +share/wasi-sysroot/include/stdio_ext.h +share/wasi-sysroot/include/stdlib.h +share/wasi-sysroot/include/stdnoreturn.h +share/wasi-sysroot/include/string.h +share/wasi-sysroot/include/strings.h +share/wasi-sysroot/include/stropts.h +share/wasi-sysroot/include/sys/dir.h +share/wasi-sysroot/include/sys/errno.h +share/wasi-sysroot/include/sys/eventfd.h +share/wasi-sysroot/include/sys/fcntl.h +share/wasi-sysroot/include/sys/file.h +share/wasi-sysroot/include/sys/ioctl.h +share/wasi-sysroot/include/sys/mman.h +share/wasi-sysroot/include/sys/param.h +share/wasi-sysroot/include/sys/poll.h +share/wasi-sysroot/include/sys/random.h +share/wasi-sysroot/include/sys/reg.h +share/wasi-sysroot/include/sys/resource.h +share/wasi-sysroot/include/sys/select.h +share/wasi-sysroot/include/sys/signal.h +share/wasi-sysroot/include/sys/socket.h +share/wasi-sysroot/include/sys/stat.h +share/wasi-sysroot/include/sys/stropts.h +share/wasi-sysroot/include/sys/syscall.h +share/wasi-sysroot/include/sys/sysinfo.h +share/wasi-sysroot/include/sys/time.h +share/wasi-sysroot/include/sys/timeb.h +share/wasi-sysroot/include/sys/times.h +share/wasi-sysroot/include/sys/timex.h +share/wasi-sysroot/include/sys/ttydefaults.h +share/wasi-sysroot/include/sys/types.h +share/wasi-sysroot/include/sys/uio.h +share/wasi-sysroot/include/sys/un.h +share/wasi-sysroot/include/sys/utsname.h +share/wasi-sysroot/include/syscall.h +share/wasi-sysroot/include/sysexits.h +share/wasi-sysroot/include/tar.h +share/wasi-sysroot/include/tgmath.h +share/wasi-sysroot/include/threads.h +share/wasi-sysroot/include/time.h +share/wasi-sysroot/include/uchar.h +share/wasi-sysroot/include/unistd.h +share/wasi-sysroot/include/utime.h +share/wasi-sysroot/include/values.h +share/wasi-sysroot/include/wasi/api.h +share/wasi-sysroot/include/wasi/libc-environ.h +share/wasi-sysroot/include/wasi/libc-find-relpath.h +share/wasi-sysroot/include/wasi/libc.h +share/wasi-sysroot/include/wchar.h +share/wasi-sysroot/include/wctype.h +share/wasi-sysroot/lib/wasm32-wasi/crt1-command.o +share/wasi-sysroot/lib/wasm32-wasi/crt1-reactor.o +share/wasi-sysroot/lib/wasm32-wasi/crt1.o +share/wasi-sysroot/lib/wasm32-wasi/libc-printscan-long-double.a +share/wasi-sysroot/lib/wasm32-wasi/libc-printscan-no-floating-point.a +share/wasi-sysroot/lib/wasm32-wasi/libc.a +share/wasi-sysroot/lib/wasm32-wasi/libc.imports +share/wasi-sysroot/lib/wasm32-wasi/libcrypt.a +share/wasi-sysroot/lib/wasm32-wasi/libdl.a +share/wasi-sysroot/lib/wasm32-wasi/libm.a +share/wasi-sysroot/lib/wasm32-wasi/libpthread.a +share/wasi-sysroot/lib/wasm32-wasi/libresolv.a +share/wasi-sysroot/lib/wasm32-wasi/librt.a +share/wasi-sysroot/lib/wasm32-wasi/libutil.a +share/wasi-sysroot/lib/wasm32-wasi/libwasi-emulated-mman.a +share/wasi-sysroot/lib/wasm32-wasi/libwasi-emulated-signal.a +share/wasi-sysroot/lib/wasm32-wasi/libxnet.a +share/wasi-sysroot/share/wasm32-wasi/defined-symbols.txt +share/wasi-sysroot/share/wasm32-wasi/include-all.c +share/wasi-sysroot/share/wasm32-wasi/predefined-macros.txt +share/wasi-sysroot/share/wasm32-wasi/undefined-symbols.txt +@dir share/wasi-sysroot/include/net +@dir share/wasi-sysroot/include/scsi |