mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	 c933a6bb32
			
		
	
	
		c933a6bb32
		
			
		
	
	
	
	
		
			
			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>
		
			
				
	
	
		
			103 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			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
 |