# config.site override for cross compiling to wasm32-emscripten platform
#
# CONFIG_SITE=Platforms/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
