cpython/Tools/wasm/emscripten/config.site-wasm32-emscripten
Hood Chatham c933a6bb32
gh-124621: Emscripten: Support pyrepl in browser (GH-136931)
Basic support for pyrepl in Emscripten. Limitations:
* requires JSPI
* no signal handling implemented

As followup work, it would be nice to implement a webworker variant
for when JSPI is not available and proper signal handling.

Because it requires JSPI, it doesn't work in Safari. Firefox requires
setting an experimental flag. All the Chromiums have full support since
May. Until we make it work without JSPI, let's keep the original web_example
around.

Co-authored-by: Łukasz Langa <lukasz@langa.pl>
Co-authored-by: Éric <merwok@netwok.org>
2025-07-22 12:13:38 +02:00

103 lines
2.8 KiB
Text

# config.site override for cross compiling to wasm32-emscripten platform
#
# CONFIG_SITE=Tools/wasm/emscripten/config.site-wasm32-emscripten \
# emconfigure ./configure --host=wasm32-unknown-emscripten --build=...
#
# Written by Christian Heimes <christian@python.org>
# Partly based on pyodide's pyconfig.undefs.h file.
#
# cannot be detected in cross builds
ac_cv_buggy_getaddrinfo=no
# Emscripten has no /dev/pt*
ac_cv_file__dev_ptmx=no
ac_cv_file__dev_ptc=no
# new undefined symbols / unsupported features
ac_cv_func_posix_spawn=no
ac_cv_func_posix_spawnp=no
ac_cv_func_eventfd=no
ac_cv_func_memfd_create=no
ac_cv_func_prlimit=no
# unsupported syscall, https://github.com/emscripten-core/emscripten/issues/13393
ac_cv_func_shutdown=no
# The rest is based on pyodide
# https://github.com/pyodide/pyodide/blob/main/cpython/pyconfig.undefs.h
ac_cv_func_epoll_create=no
ac_cv_func_epoll_create1=no
ac_cv_header_linux_vm_sockets_h=no
ac_cv_func_socketpair=no
ac_cv_func_sigaction=no
# symlinkat is implemented, but fails
ac_cv_func_symlinkat=no
# lchmod/lchown are implemented, but fail with ENOTSUP.
ac_cv_func_lchmod=no
ac_cv_func_lchown=no
# geteuid / getegid are stubs and always return 0 (root). The stub breaks
# code that assume effective user root has special permissions.
ac_cv_func_geteuid=no
ac_cv_func_getegid=no
ac_cv_func_seteuid=no
ac_cv_func_setegid=no
ac_cv_func_getresuid=no
ac_cv_func_getresgid=no
ac_cv_func_setresuid=no
ac_cv_func_setresgid=no
# Syscalls not implemented in emscripten
# [Errno 52] Function not implemented
ac_cv_func_preadv2=no
ac_cv_func_preadv=no
ac_cv_func_pwritev2=no
ac_cv_func_pwritev=no
ac_cv_func_pipe2=no
ac_cv_func_nice=no
ac_cv_func_setpriority=no
ac_cv_func_setitimer=no
# unsupported syscall: __syscall_prlimit64
ac_cv_func_prlimit=no
# unsupported syscall: __syscall_getrusage
ac_cv_func_getrusage=no
ac_cv_func_posix_fallocate=no
# Syscalls that resulted in a segfault
ac_cv_func_utimensat=no
# sockets are supported, but only AF_INET / AF_INET6 in non-blocking mode.
# Disable AF_UNIX and AF_PACKET support, see socketmodule.h.
ac_cv_header_sys_un_h=no
ac_cv_header_netpacket_packet_h=no
# aborts with bad ioctl
ac_cv_func_openpty=no
ac_cv_func_forkpty=no
# mkfifo and mknod are broken, create regular file
ac_cv_func_mkfifo=no
ac_cv_func_mkfifoat=no
ac_cv_func_mknod=no
ac_cv_func_mknodat=no
# always fails with permission or not implemented error
ac_cv_func_getgroups=no
ac_cv_func_setgroups=no
ac_cv_func_setresuid=no
ac_cv_func_setresgid=no
# Emscripten does not support hard links, always fails with errno 34
# "Too many links". See emscripten_syscall_stubs.c
ac_cv_func_link=no
ac_cv_func_linkat=no
# Emscripten's faccessat does not accept AT_* flags.
ac_cv_func_faccessat=no
# alarm signal is not delivered, may need a callback into the event loop?
ac_cv_func_alarm=no