# config.site override for cross compiling to wasm32-emscripten platform # # CONFIG_SITE=Tools/wasm/config.site-wasm32-emscripten \ # emconfigure ./configure --host=wasm32-unknown-emscripten --build=... # # Written by Christian Heimes # 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 # dummy readelf, Emscripten build does not need readelf. ac_cv_prog_ac_ct_READELF=true # 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 # clock_nanosleep() causes time.sleep() to sleep forever. # nanosleep() works correctly ac_cv_func_clock_nanosleep=no ac_cv_lib_rt_clock_nanosleep=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_utimensat=no ac_cv_func_sigaction=no # Untested or failing syscalls in emscripten ac_cv_func_openat=no ac_cv_func_mkdirat=no ac_cv_func_faccessat=no ac_cv_func_fchownat=no ac_cv_func_renameat=no ac_cv_func_linkat=no ac_cv_func_symlinkat=no ac_cv_func_readlinkat=no ac_cv_func_fchmodat=no ac_cv_func_dup3=no # lchmod/lchown are implemented, but fail with ENOTSUP. ac_cv_func_lchmod=no ac_cv_func_lchown=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 ac_cv_header_sys_ioctl_h=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 # alarm signal is not delivered, may need a callback into the event loop? ac_cv_func_alarm=no # To use dlopen, you need to use Emscripten's linking support, # see https://emscripten.org/docs/compiling/Dynamic-Linking.html ac_cv_func_dlopen=no